简体   繁体   English

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

[英]How to add new sourceset with gradle kotlin-dsl

I want to add a sourceset src/gen/java .我想添加一个源集src/gen/java With groovy this is rather easy and already described in https://discuss.gradle.org/t/how-to-use-gradle-with-generated-sources/9401/5使用 groovy 这相当容易,并且已经在https://discuss.gradle.org/t/how-to-use-gradle-with-generated-sources/9中描述

sourceSets {
   gen {
        java.srcDir "src/gen/java"
    }
}

But I stuck with the kotlin-dsl to add a new one.但我坚持使用 kotlin-dsl 添加一个新的。 All I've got is:我所拥有的是:

java {
    sourceSets {

    }
}

Can anyone help here to任何人都可以在这里帮助

The answer of @s1m0nw1 is correct to add a new sourceset. @ s1m0nw1的答案是正确的,以添加新的源集。 But to just add a new source-folder in an existing sourceset, this can be used: 但是只要在现有的源集中添加一个新的源文件夹,就可以使用:

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

You should try the following: 您应该尝试以下方法:

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

Hope it's what you need! 希望这就是您所需要的!

kotlin-dsl 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")
        }
    }

I wanted to add a source set with the name "test-integration" and the source directory src/test-integration/kotlin . 我想添加一个名称为“ test-integration”和源目录src/test-integration/kotlin的源src/test-integration/kotlin I was able to accomplish that by combining the two pre-existing answers: 通过结合两个先前存在的答案,我得以实现:

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

Worked for me on Gradle 4.10.2: 在Gradle 4.10.2上为我工作:

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

Worked for me on Gradle 4.10.2: 在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")
}

The codes above can also be used in subprojects block. 上面的代码也可以在subprojects块中使用。

This is what I had before:这是我之前的情况:

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

Above now translates to:以上现在翻译为:

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

As of Gradle 7.5:从 Gradle 7.5 开始:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM