它是用手册写的:
即,这src/sourceSet/java是"给定源集的Java源代码"的默认路径.
如何利用这个?假设我想创建源集demo.
我能写吗?
sourceSets {
demo {
java {
srcDir 'src/demo/java'
}
resources {
srcDir 'src/demo/resources'
}
}
}
Run Code Online (Sandbox Code Playgroud)
没有明确的路径,我能以某种方式写作吗
可能我不需要写任何东西,只是将文件放入demo子文件夹?
UPDATE
我测试过了
sourceSets {
demo {
java {
srcDir 'src/demo/java'
}
resources {
srcDir 'src/demo/resources'
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
sourceSets {
demo {
java
resources
}
}
Run Code Online (Sandbox Code Playgroud)
和
sourceSets {
demo
}
Run Code Online (Sandbox Code Playgroud)
在所有情况下运行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'
}
}
}
Run Code Online (Sandbox Code Playgroud)
Gradle 默认任务不会构建非默认源集,除非在主链中对它们有显式依赖。为了编译您的demo类,您必须gradle demoClasses按照 cricket_007 的答案进行调用 - 或者更好的是,只需gradle build demo这样做也会将生成的类放入目标 jar 中。
你所需要的就是这个:
sourceSets {
demo
}
Run Code Online (Sandbox Code Playgroud)
...并且该build demo任务确实会按预期创建任何丢失的目录,除非您有一些有效的奇怪的权限方案。
现在我查看了您的 git 项目,看来您的演示源集取决于主要类。您需要明确此依赖关系(即将它们添加到demo类路径中)以避免编译错误:
sourceSets {
main
demo {
compileClasspath += main.output
runtimeClasspath += main.output
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2564 次 |
| 最近记录: |