@@ -2,6 +2,7 @@ package dev.engine_room.gradle.transitive
22
33import dev.engine_room.gradle.jarset.JarTaskSet
44import org.gradle.api.Project
5+ import org.gradle.api.file.DuplicatesStrategy
56import org.gradle.api.tasks.SourceSet
67import org.gradle.api.tasks.SourceSetContainer
78import org.gradle.api.tasks.compile.JavaCompile
@@ -83,20 +84,17 @@ class TransitiveSourceSetConfigurator(private val parent: TransitiveSourceSetsEx
8384 }
8485
8586 fun bundleFrom (otherProject : Project , vararg names : String ) {
86- val otherSourceSets = otherProject.the<SourceSetContainer >()
87+ val otherSourceSets = names.map { otherProject.the<SourceSetContainer >().getByName(it) }.toTypedArray ()
8788
88- bundleFrom(* names.map { otherSourceSets.getByName(it) }.toTypedArray())
89- }
89+ from(* otherSourceSets)
9090
91- fun bundleFrom (vararg sourceSets : SourceSet ) {
92- from(* sourceSets)
9391 // The external sourceSets will be included in the jar by default since we bring it into the java compile task,
9492 // however we need to make sure that the javadoc and sources jars also include the external sourceSets
95- bundleJavadocAndSources(* sourceSets )
93+ bundleJavadocAndSources(otherProject, * otherSourceSets )
9694 }
9795
9896 fun bundleOutput (vararg sourceSets : SourceSet ) {
99- bundleJavadocAndSources(* sourceSets)
97+ bundleJavadocAndSources(parent.project, * sourceSets)
10098
10199 parent.project.tasks.apply {
102100 named<Jar >(sourceSet.jarTaskName).configure {
@@ -107,19 +105,26 @@ class TransitiveSourceSetConfigurator(private val parent: TransitiveSourceSetsEx
107105 }
108106 }
109107
110- private fun bundleJavadocAndSources (vararg sourceSets : SourceSet ) {
111- parent.project.tasks.apply {
112- named< Javadoc >(sourceSet.javadocTaskName).configure {
113- sourceSets.forEach { source(it.allJava) }
114-
115- JarTaskSet .excludeDuplicatePackageInfos( this )
108+ private fun bundleJavadocAndSources (project : Project , vararg sourceSets : SourceSet ) {
109+ parent.project.tasks.named< Javadoc >(sourceSet.javadocTaskName).configure {
110+ sourceSets.forEach { sourceSetToBundle ->
111+ source(
112+ project.tasks.named< JavaCompile >(sourceSetToBundle.compileJavaTaskName)
113+ .map { it.source.asFileTree } )
116114 }
117115
118- named< Jar >(sourceSet.sourcesJarTaskName).configure {
119- sourceSets.forEach { from(it.allJava) }
116+ JarTaskSet .excludeDuplicatePackageInfos( this )
117+ }
120118
121- JarTaskSet .excludeDuplicatePackageInfos(this )
119+ parent.project.tasks.named<Jar >(sourceSet.sourcesJarTaskName).configure {
120+ sourceSets.forEach { sourceSetToBundle ->
121+ from(project.tasks.named<ProcessResources >(sourceSetToBundle.processResourcesTaskName))
122+ from(
123+ project.tasks.named<JavaCompile >(sourceSetToBundle.compileJavaTaskName)
124+ .map { it.source.asFileTree })
122125 }
126+
127+ duplicatesStrategy = DuplicatesStrategy .EXCLUDE
123128 }
124129 }
125130
0 commit comments