如何使用 gradle kotlin-dsl 添加新的源集
Posted
技术标签:
【中文标题】如何使用 gradle kotlin-dsl 添加新的源集【英文标题】:How to add new sourceset with gradle kotlin-dsl 【发布时间】:2018-03-07 06:51:15 【问题描述】:我想添加一个源集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
谁能帮忙
【问题讨论】:
【参考方案1】:@s1m0nw1 的答案是正确的添加一个新的源集。 但是要在现有源集中添加一个新的源文件夹,可以使用:
java.sourceSets["main"].java
srcDir("src/gen/java")
【讨论】:
这对我也有用。你是怎么找到这个答案的?它记录在哪里? 在@s1m0nw1 的回答之后玩耍 eclipse kotlin 编辑器和插件不完整,有问题。它们不提供代码完成提示。我已经停止使用 eclipse,现在改用 IntelliJ Idea,它确实让我看到了 Gradle-Kotlin-DSL 实现 API 的内部结构,因此我可以发现可供我使用的 API 调用。缺乏适当的文档一直令人沮丧,但现在希望有了 IntelliJ 的代码完成提示;这不会是一个很大的限制。 我在我的 kotlin 项目中使用子模块作为 kotlin 库。离开第一部分java
为我工作。即sourceSets["main"].java srcDir("src/main/kotlin")
【参考方案2】:
您应该尝试以下方法:
java.sourceSets.create("src/gen/java")
希望这是你需要的!
【讨论】:
谢谢。似乎不起作用。它似乎是有效的,但未编译源。 嗯,在解决了我的问题之后,我不需要新的源集(添加新源集的答案是正确的),但是要有一个新的源文件夹在现有的main
源集内
在 Gradle 6 上,不能再使用这个了,java.sourceSets 不再存在【参考方案3】:
在 Gradle 4.10.2 上为我工作:
sourceSets.create("integrationTest")
java.srcDir("src/integrationTest/java")
java.srcDir("build/generated/source/apt/integrationTest")
resources.srcDir("src/integrationTest/resources")
【讨论】:
您知道为什么我在拨打create("libs")
时收到错误The SourceSet 'libs' is not recognized by the android Gradle Plugin.
吗?【参考方案4】:
在 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
块中。
【讨论】:
【参考方案5】:我想添加一个名为“test-integration”的源集和源目录src/test-integration/kotlin
。我能够通过结合两个预先存在的答案来实现这一点:
java.sourceSets.create("test-integration").java
srcDir("src/test-integration/kotlin")
【讨论】:
【参考方案6】:这是我之前的:
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")
【讨论】:
以上是关于如何使用 gradle kotlin-dsl 添加新的源集的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 kotlinscript DSL (build.gradle.kts) 通过 url 添加 maven 存储库
如何使用 Gradle 将 jar 文件添加到 libgdx 项目