相关疑难解决方法(0)

如何告诉Gradle使用特定的JDK版本?

我无法弄清楚这是否有效.

场景:

  • 我有一个用gradle构建的应用程序
  • 该应用程序使用JavaFX

我想要的是

  • 使用一个变量(每个开发人员机器定义)指向JDK的安装,JDK将用于构建整个应用程序/ tests/...

我想过拥有gradle.properties文件,定义变量.就像是

JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>
Run Code Online (Sandbox Code Playgroud)

我不想要的

  • 指向JAVA_HOME所需的JDK

我可以接受很多建议:

  • 定义系统环境变量的解决方案,我可以在build.gradle脚本中查看
  • gradle.properties中定义的变量
  • 仅为构建上下文重写JAVA_HOME变量(类似于use JAVA_HOME=<my special JDK path defined somewhere else defined>)
  • 我没有想到的其他事情

题:

  • 如何将变量(如何定义,作为gradle.properties系统环境变量中的变量,......)连接到构建过程?

我有多个JDK7可用,需要指向一个特殊版本(最低JDK_u版本).

任何答案都表示赞赏,我感谢每一个提示正确的方向.

java gradle build.gradle

242
推荐指数
14
解决办法
25万
查看次数

Gradle sourceCompatibility对子项目没有影响

我的机器上安装了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解压缩cdWEB-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 …

java compatibility bytecode gradle

56
推荐指数
2
解决办法
5万
查看次数

标签 统计

gradle ×2

java ×2

build.gradle ×1

bytecode ×1

compatibility ×1