Changes to configuration of Kotlin source set

* Include the Java source directory set as-is, without iterating over
its srcDirs
* Avoid Java sources duplication with newer Gradle versions.

Issue #KT-16764 Fixed
Issue #KT-17564 Fixed
This commit is contained in:
Sergey Igushkin
2017-09-15 16:47:44 +03:00
parent c5e5a43f68
commit 5ce514bd42
2 changed files with 81 additions and 5 deletions
@@ -29,6 +29,7 @@ import java.io.File
import java.util.zip.ZipFile
import kotlin.test.assertEquals
import kotlin.test.assertNotEquals
import kotlin.test.assertNotNull
import kotlin.test.assertTrue
class KotlinGradleIT: BaseGradleIT() {
@@ -659,4 +660,60 @@ class KotlinGradleIT: BaseGradleIT() {
}
}
}
}
@Test
fun testSrcDirTaskDependency() {
Project("simpleProject", "4.1").apply {
setupWorkingDir()
File(projectDir, "build.gradle").appendText("""${'\n'}
task generateSources {
outputs.dir('generated')
doLast {
def file = new File('generated/test/TestClass.java')
file.parentFile.mkdirs()
file.text = ""${'"'}
package test;
public class TestClass { }
""${'"'}
}
}
sourceSets.main.java.srcDir(tasks.generateSources)
""".trimIndent())
File(projectDir, "src/main/kotlin/helloWorld.kt").appendText("""${'\n'}
fun usageOfGeneratedSource() = test.TestClass()
""".trimIndent())
build("build") {
assertSuccessful()
}
}
}
@Test
fun testSourceJar() {
Project("simpleProject", "4.1").apply {
setupWorkingDir()
val additionalSrcDir = "src/additional/kotlin/"
File(projectDir, additionalSrcDir).mkdirs()
File(projectDir, "$additionalSrcDir/additionalSource.kt").writeText("fun hello() = 123")
File(projectDir, "build.gradle").appendText("""${'\n'}
task sourcesJar(type: Jar) {
from sourceSets.main.allSource
classifier 'source'
duplicatesStrategy = 'fail' // fail in case of Java source duplication, see KT-17564
}
sourceSets.main.kotlin.srcDir('$additionalSrcDir') // test that additional srcDir is included
""".trimIndent())
build("sourcesJar") {
assertSuccessful()
val sourcesJar = ZipFile(File(projectDir, "build/libs/simpleProject-source.jar"))
assertNotNull(sourcesJar.getEntry("additionalSource.kt"))
}
}
}
}