如何使用 gradle kotlin-dsl 添加新的源集

How to add new sourceset with gradle kotlin-dsl

我想添加源集src/gen/java。使用 groovy 这很容易,并且已在 https://discuss.gradle.org/t/how-to-use-gradle-with-generated-sources/9401/5

中进行了描述
sourceSets {
   gen {
        java.srcDir "src/gen/java"
    }
}

但我坚持使用 kotlin-dsl 来添加一个新的。我只有:

java {
    sourceSets {

    }
}

谁能帮忙

您应该尝试以下操作:

java.sourceSets.create("src/gen/java")

希望这是你需要的!

@s1m0nw1 的回答是正确的,添加了一个新的源集。 但是要在现有源集中添加一个新的源文件夹,可以使用:

java.sourceSets["main"].java {
    srcDir("src/gen/java")
}

我想添加名称为 "test-integration" 且源目录为 src/test-integration/kotlin 的源集。我能够通过结合两个预先存在的答案来实现这一点:

java.sourceSets.create("test-integration").java {
    srcDir("src/test-integration/kotlin")
}

为我工作 Gradle 4.10.2:

sourceSets.create("integrationTest") {
    java.srcDir("src/integrationTest/java")
    java.srcDir("build/generated/source/apt/integrationTest")
    resources.srcDir("src/integrationTest/resources")
}

为我工作 Gradle 4.10.2:

sourceSets.getByName("main") {
    java.srcDir("src/main/java")
    java.srcDir("src/main/kotlin")
}
sourceSets.getByName("test") {
    java.srcDir("src/test/java")
    java.srcDir("src/test/kotlin")
}

以上代码也可以在subprojects块中使用。

这是我之前的:

main.kotlin.srcDirs = main.java.srcDirs = ['src']
test.kotlin.srcDirs = test.java.srcDirs = ['test']
main.resources.srcDirs = ['resources']
test.resources.srcDirs = ['testresources']

以上内容现在翻译为:

sourceSets {
main {
    java {
        srcDirs("src")
    }
    resources {
        srcDirs("resources")
    }
}
test {
    java {
        srcDirs("test")
    }
    resources {
        srcDirs("testresources")
    }
}}

kotlin-dsl

sourceSets {
        this.getByName("androidTest"){
            //Adds the given source directory to this set.
            this.java.srcDir("src/mock/java")
        }
        this.getByName("test"){
            this.java.srcDir("src/mock/java")
        }
    }