我无法弄清楚这是否有效.
场景:
我想要的是
我想过拥有gradle.properties文件,定义变量.就像是
JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>
Run Code Online (Sandbox Code Playgroud)
我不想要的
JAVA_HOME所需的JDK我可以接受很多建议:
use JAVA_HOME=<my special JDK path defined somewhere else defined>)题:
gradle.properties系统环境变量中的变量,......)连接到构建过程?我有多个JDK7可用,需要指向一个特殊版本(最低JDK_u版本).
任何答案都表示赞赏,我感谢每一个提示正确的方向.
我的机器上安装了Java 6和7.Gradle使用1.7(使用检查gradle -v).但我需要编译我的代码以与Java 1.6兼容.据我所知文档,我可以使用该sourceCompatibility属性(并间接targetCompatibility默认为 sourceCompatibility).
所以我将以下行添加到我的构建文件中(在根级别,而不是在任何闭包中):
sourceCompatibility = 1.6
Run Code Online (Sandbox Code Playgroud)
(可以肯定的是,我也在targetCompatibility = 1.6一些试验中添加了,但这不应该有所作为)
要检查结果是否与1.6实际兼容,我将生成的jar解压缩cd到WEB-INF/classes文件夹中,并javap -verbose在.class我遇到的第一个文件中使用.但无论我是设置目标兼容性还是我使用1.5而不是1.6或者我是否将其指定为string('1.6'),每次javap的结果是
minor version: 0
major version: 51
Run Code Online (Sandbox Code Playgroud)
Afaik这意味着它是Java 1.7字节码,这是错误的.
有什么想法sourceCompatibility- 设置不起作用?或者javap不是检查兼容性的正确方法?
更新: 是的,这实际上是一个多项目构建,但我只检查了一个子项目的构建结果.在这个子项目的构建文件中,我做了上述更改,以确保它们实际应用.另外,我在根项目的构建文件中添加了以下内容(如@Vidya所提议的那样):
allprojects {
sourceCompatibility = 1.6
targetCompatibility = 1.6
}
Run Code Online (Sandbox Code Playgroud)
但这也没有帮助.
更新2: 我在相关的build.gradle文件中使用此代码片段检查了sourceCompatibility的设置:
compileJava.doFirst {
println "source compatibility " + sourceCompatibility
}
Run Code Online (Sandbox Code Playgroud)
它显示我的sourceCompatibility设置为1.7,虽然我试图将其设置为1.6.当我提取最简单的子项目并自行构建时,sourceCompatibility设置正确,Java Byte代码与1.6兼容.但是,即使这个子项目在多项目构建中使用时也使用了错误的sourceCompatibility.
BTW:我在一些子项目使用的插件是:java,war,jetty,gwt …