Build: Use sources from kotlin mpp source set in sourcesJar helper

This commit is contained in:
Vyacheslav Gerasimov
2020-06-18 19:11:49 +03:00
parent 77a8cf4e66
commit 63b7350046
2 changed files with 10 additions and 5 deletions
+1
View File
@@ -96,6 +96,7 @@ repositories {
dependencies { dependencies {
implementation(kotlin("stdlib", embeddedKotlinVersion)) implementation(kotlin("stdlib", embeddedKotlinVersion))
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${project.bootstrapKotlinVersion}")
implementation("org.jetbrains.kotlin:kotlin-build-gradle-plugin:0.0.17") implementation("org.jetbrains.kotlin:kotlin-build-gradle-plugin:0.0.17")
implementation("com.gradle.publish:plugin-publish-plugin:0.11.0") implementation("com.gradle.publish:plugin-publish-plugin:0.11.0")
+9 -5
View File
@@ -27,6 +27,7 @@ import org.gradle.api.tasks.javadoc.Javadoc
import org.gradle.jvm.tasks.Jar import org.gradle.jvm.tasks.Jar
import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.artifacts.dsl.DependencyHandler
import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.*
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer
import plugins.KotlinBuildPublishingPlugin import plugins.KotlinBuildPublishingPlugin
@@ -129,10 +130,16 @@ fun Project.sourcesJar(body: Jar.() -> Unit = {}): TaskProvider<Jar> {
} }
val sourcesJar = getOrCreateTask<Jar>("sourcesJar") { val sourcesJar = getOrCreateTask<Jar>("sourcesJar") {
fun Project.mainJavaPluginSourceSet() = findJavaPluginConvention()?.sourceSets?.findByName("main")
fun Project.mainKotlinSourceSet() =
(extensions.findByName("kotlin") as? KotlinSourceSetContainer)?.sourceSets?.findByName("main")
fun Project.sources() = mainJavaPluginSourceSet()?.allSource ?: mainKotlinSourceSet()?.kotlin
duplicatesStrategy = DuplicatesStrategy.EXCLUDE duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveClassifier.set("sources") archiveClassifier.set("sources")
from(project.mainSourceSet.allSource) from(project.sources())
project.configurations.findByName("embedded")?.let { embedded -> project.configurations.findByName("embedded")?.let { embedded ->
from(provider { from(provider {
@@ -141,10 +148,7 @@ fun Project.sourcesJar(body: Jar.() -> Unit = {}): TaskProvider<Jar> {
.map { it.id.componentIdentifier } .map { it.id.componentIdentifier }
.filterIsInstance<ProjectComponentIdentifier>() .filterIsInstance<ProjectComponentIdentifier>()
.mapNotNull { .mapNotNull {
project(it.projectPath) project(it.projectPath).sources()
.findJavaPluginConvention()
?.mainSourceSet
?.allSource
} }
}) })
} }