diff --git a/buildSrc/src/main/kotlin/io/tnboot/gradle/build/PublishPlugin.kt b/buildSrc/src/main/kotlin/io/tnboot/gradle/build/PublishPlugin.kt index 02a4a60..fbc585c 100644 --- a/buildSrc/src/main/kotlin/io/tnboot/gradle/build/PublishPlugin.kt +++ b/buildSrc/src/main/kotlin/io/tnboot/gradle/build/PublishPlugin.kt @@ -20,7 +20,9 @@ class PublishPlugin : Plugin { } } - open class Extension { + open class Extension( + private val project: Project, + ) { var enabled = true var evenWithChildren = false @@ -37,13 +39,15 @@ class PublishPlugin : Plugin { fun configure(block: MavenPublication.() -> Unit) { configurations.add(block) } + + val isPublished get() = enabled && (evenWithChildren || project.childProjects.isEmpty()) } override fun apply(target: Project) { - target.extensions.add(Extension::class.java, "publish", Extension()) + target.extensions.add(Extension::class.java, "publish", Extension(target)) target.afterEvaluate { target.extensions.getByType(Extension::class.java).let { extension -> - if (!extension.enabled || (target.childProjects.isNotEmpty() && !extension.evenWithChildren)) return@afterEvaluate + if (!extension.isPublished) return@afterEvaluate log.debug("Enabling Maven Publications for project {}", target.name) target.mavenPublish { extension.configurations.forEach { diff --git a/buildSrc/src/main/kotlin/io/tnboot/gradle/build/mavenPublish.kt b/buildSrc/src/main/kotlin/io/tnboot/gradle/build/PublishUtil.kt similarity index 81% rename from buildSrc/src/main/kotlin/io/tnboot/gradle/build/mavenPublish.kt rename to buildSrc/src/main/kotlin/io/tnboot/gradle/build/PublishUtil.kt index 2110d71..0b93e6a 100644 --- a/buildSrc/src/main/kotlin/io/tnboot/gradle/build/mavenPublish.kt +++ b/buildSrc/src/main/kotlin/io/tnboot/gradle/build/PublishUtil.kt @@ -32,3 +32,10 @@ fun Project.mavenPublish(block: MavenPublication.() -> Unit) { } } } + +val Project.publishedProjects get() = rootProject.allprojects.filter { + it != project && it.plugins.hasPlugin(PublishPlugin::class.java) && + it.extensions.getByType(PublishPlugin.Extension::class.java).isPublished +} + +val Project.notation get() = "$group:$name:$version" diff --git a/telenor-boot-dependencies/build.gradle.kts b/telenor-boot-dependencies/build.gradle.kts index 00e12aa..9b0639d 100644 --- a/telenor-boot-dependencies/build.gradle.kts +++ b/telenor-boot-dependencies/build.gradle.kts @@ -1,5 +1,7 @@ import io.tnboot.gradle.build.DependencyGroups import io.tnboot.gradle.build.mavenPublish +import io.tnboot.gradle.build.notation +import io.tnboot.gradle.build.publishedProjects plugins { `java-platform` @@ -15,6 +17,7 @@ val bom = DependencyGroups( dependencies { constraints { bom.dependencies.forEach { add("api", it) } + publishedProjects.forEach { add("api", it.notation) } } }