diff --git a/src/main/kotlin/org/incendo/cloudbuildlogic/util/configurations.kt b/src/main/kotlin/org/incendo/cloudbuildlogic/util/configurations.kt index 6fcaaec..b07b9b1 100644 --- a/src/main/kotlin/org/incendo/cloudbuildlogic/util/configurations.kt +++ b/src/main/kotlin/org/incendo/cloudbuildlogic/util/configurations.kt @@ -2,16 +2,28 @@ package org.incendo.cloudbuildlogic.util import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.api.artifacts.dsl.DependencyHandler +import org.gradle.kotlin.dsl.project import org.incendo.cloudbuildlogic.coordinates import org.incendo.cloudbuildlogic.moduleComponentId +/** + * When [includeProjectDependencies] is false, project dependencies will be excluded, + * but their transitive dependencies will not be. + */ fun Configuration.extendsFromFlattened( other: NamedDomainObjectProvider, dependencyHandler: DependencyHandler, + includeProjectDependencies: Boolean = false, ) { defaultDependencies { for (artifact in other.get().incoming.artifacts.artifacts) { + if (includeProjectDependencies && artifact.id.componentIdentifier is ProjectComponentIdentifier) { + val projectId = artifact.id.componentIdentifier as ProjectComponentIdentifier + add(dependencyHandler.project(projectId.projectPath)) + continue + } val id = artifact.moduleComponentId() ?: continue add(dependencyHandler.create(coordinates(id))) }