我想编译(使用不同的targetCompatibility和sourceCompatibility)并且jar我整个main / src / java文件夹的一小部分。
所以我有例如
main/src/java/com/interface/A.java
main/src/java/com/interface/B.java
main/src/java/com/logic/C.java
我想将A和B编译为jar“projectname_projectversion_interface.jar”并使用不同的编译器版本。
这可能吗?我怎样才能做到这一点?
由于
答案 0 :(得分:4)
我建议使用单独的源集:
apply plugin: "java"
sourceSets {
main {
java {
exclude "com/interface/A.java"
exclude "com/interface/B.java"
}
}
api {
java {
srcDir "src/main/java"
include "com/interface/A.java"
include "com/interface/B.java"
}
}
}
如果main
取决于api
,请添加以下内容:
sourceSets.main.compileClasspath += sourceSets.api.output
可以在编译任务级别调整源/目标兼容性:
compileApiJava {
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
要使用属于运行Gradle本身的JDK的编译器以外的编译器,您必须设置编译器可执行文件:
compileApiJava {
options.fork = true
options.forkOptions.executable = "/path/to/compiler/executable"
}
这可能会在一定程度上减慢构建速度。
有关更多API详细信息,请查看Gradle Build Language Reference。