From e1bd7d7b5ddb0d7e99c4446571c244eff4b63ea0 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Wed, 22 Mar 2023 22:54:49 +0100 Subject: [PATCH] Add methods to also embed sources and javadoc from embedded dependencies Introduced approach is not ideal as it introduces direct inter-project call breaking project isolation. But proper solution requires quite a lot of changes and should be done separately. ^KT-52811 In Progress --- buildSrc/src/main/kotlin/artifacts.kt | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/buildSrc/src/main/kotlin/artifacts.kt b/buildSrc/src/main/kotlin/artifacts.kt index 062e216d956..3329be75fa7 100644 --- a/buildSrc/src/main/kotlin/artifacts.kt +++ b/buildSrc/src/main/kotlin/artifacts.kt @@ -183,6 +183,26 @@ fun Project.sourcesJar(body: Jar.() -> Unit = {}): TaskProvider { return sourcesJar } +/** + * Also embeds into final '-sources.jar' file source files from embedded dependencies. + */ +fun Project.sourcesJarWithSourcesFromEmbedded( + vararg embeddedDepSourcesJarTasks: TaskProvider, + body: Jar.() -> Unit = {}, +): TaskProvider { + val sourcesJarTask = sourcesJar(body) + + sourcesJarTask.configure { + val archiveOperations = serviceOf() + embeddedDepSourcesJarTasks.forEach { embeddedSourceJarTask -> + dependsOn(embeddedSourceJarTask) + from(embeddedSourceJarTask.map { archiveOperations.zipTree(it.archiveFile) }) + } + } + + return sourcesJarTask +} + fun Jar.addEmbeddedSources() { project.configurations.findByName("embedded")?.let { embedded -> val allSources by lazy { @@ -222,6 +242,27 @@ fun Project.javadocJar(body: Jar.() -> Unit = {}): TaskProvider { return javadocTask } +/** + * Also embeds into final '-javadoc.jar' file javadoc files from embedded dependencies. + */ +fun Project.javadocJarWithJavadocFromEmbedded( + vararg embeddedDepJavadocJarTasks: TaskProvider, + body: Jar.() -> Unit = {}, +): TaskProvider { + val javadocJarTask = javadocJar(body) + + javadocJarTask.configure { + val archiveOperations = serviceOf() + embeddedDepJavadocJarTasks.forEach { embeddedJavadocJarTask -> + dependsOn(embeddedJavadocJarTask) + from(embeddedJavadocJarTask.map { archiveOperations.zipTree(it.archiveFile) }) + } + } + + return javadocJarTask +} + + fun Project.standardPublicJars() { runtimeJar() sourcesJar()