手册里写的:
即src/sourceSet/java
是“给定源集的 Java 源”的默认路径。
如何使用它?假设我希望创建源代码集 demo
。
我可以写吗
sourceSets {
demo {
java {
srcDir 'src/demo/java'
}
resources {
srcDir 'src/demo/resources'
}
}
}
我可以在没有显式路径的情况下以某种方式编写吗?
我可能不需要写任何东西,只需将文件放入 demo 子文件夹即可吗?
更新
我测试过
sourceSets {
demo {
java {
srcDir 'src/demo/java'
}
resources {
srcDir 'src/demo/resources'
}
}
}
和
sourceSets {
demo {
java
resources
}
}
和
sourceSets {
demo
}
在所有情况下,运行 gradle build
都不会编译源代码。
build.gradle
文件如下:
group 'net.inthemoon.tests'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
}
sourceSets {
demo {
java {
srcDir 'src/demo/java'
}
resources {
srcDir 'src/demo/resources'
}
}
}
最佳答案
Gradle 默认任务不会构建非默认源集,除非在主链中明确依赖它们。为了编译您的 demo
类,您必须按照 cricket_007 的回答调用 gradle demoClasses
- 或者更好的是,只需执行 gradle build demo
这也会将生成的类放入目标 jar 中。
你只需要这个:
sourceSets {
demo
}
...并且 build demo
任务确实会按预期创建任何缺失的目录,除非您有一些奇怪的有效权限方案。
现在我查看了您的 git 项目,您的演示源集似乎依赖于主要类。您需要明确此依赖项(即将它们添加到 demo
类路径)以避免编译错误:
sourceSets {
main
demo {
compileClasspath += main.output
runtimeClasspath += main.output
}
}
关于java - 如何定义自定义源集而不在 Gradle 中显式定义它的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36421798/