Добавление sourceDir в java sourceSet - PullRequest
0 голосов
/ 07 мая 2018

Согласно плагину Gradle Kotlin страница .

Исходники Kotlin могут быть смешаны с источниками Java в одной и той же папке или в разных папках. Соглашение по умолчанию использует разные папки. Соответствующее свойство sourceSets должно быть обновлено, если не используется соглашение по умолчанию.

Я хочу добавить несколько файлов Java в src / main / kotlin и сделать так, чтобы задача compileJava компилировала их. Я пытался придумать следующий блок, чтобы достичь его, но без игры в кости.

java {
    val kotlinSrcDir: File = File(projectDir, "src/main/kotlin")
    sourceSets["main"].java.srcDirs.add(kotlinSrcDir)
    val javasrcdirs: Set<File> = sourceSets["main"].java.srcDirs
    println(javasrcdirs)
}

Что дает?

1 Ответ

0 голосов
/ 29 мая 2018

TLDR

java {
    val kotlinSrcDir = "src/main/kotlin"
    val mainJavaSourceSet: SourceDirectorySet = sourceSets.getByName("main").java
    mainJavaSourceSet.srcDir(kotlinSrcDir)
    println(mainJavaSourceSet.srcDirs)
}

Подробности

Когда вы вызываете srcDirs в вашем build.gradle.kts, фактический вызванный метод равен SourceDirectorySet.getSrcDirs().Реализация этого метода в DefaultSourceDirectorySet.getSrcDirs() возвращает защитную копию коллекции, и поэтому ее изменение не имеет никакого эффекта.

Таким образом, фактически добавление нового исходного каталога в набориспользуйте srcDir(Object) или srcDirs(Object...).

...