如何在gradle 2.1中将源集添加到Java项目?
我已经阅读了Java Plugin和SourceSetOutput以及其他一些SO主题的文档,我仍然在努力弄清楚它是如何工作的。
我创建了一个简单的构建脚本来测试我的理解。根据用户指南的第23.7.2节,例23.5,看来我可以通过这样做来创建一个sourceSet:
sourceSets {
generated
}
第23.4节。项目布局似乎暗示我需要做的就是因为我的源集遵循gradle约定。要包含在源集中的代码位于src/generated/java/packagename
中。并将自动添加到类路径中。基于我从使用生成的源集中定义的代码的代码获得的符号未找到的错误,我认为这是不正确的,还需要做其他事情。我需要做什么?
这是我的设置:
的build.gradle
apply plugin: 'java'
apply plugin: 'application'
mainClassName = "tester.Test"
sourceSets {
generated
}
文件结构
tester/
├── build
│ ├── classes
│ │ └── main
│ ├── dependency-cache
│ └── tmp
│ └── compileJava
├── build.gradle
└── src
├── generated
│ └── java
│ └── tester
│ └── Boom.java
└── main
└── java
└── tester
└── Test.java
Boom.java
package tester;
class Boom {
String sound;
public Boom (String s){
sound = s;
}
}
Test.java
package tester;
class Test {
public static void main(String[] args) {
Boom b = new Boom("KABOOM");
System.out.println("I've run");
System.out.println(b.sound);
}
}
答案 0 :(得分:1)
您需要通过以下方式修改build.gradle
:
sourceSets {
generated
main {
compileClasspath += generated.output // adds the sourceSet to the compileClassPath
runtimeClasspath += generated.output // adds the sourceSet to the runtimeClasspath
}
}
project.run.classpath += sourceSets.generated.output //add the sourceSet to project class path
请记住,添加新的源集与在类路径中编译源集不同。
源代码集下方的行是run
任务工作所必需的。