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()