我不知道怎么把它修好。

场景:

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

我想要什么

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

我想过要有gradle。属性文件,定义变量。类似的

JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>

我不想要什么

将JAVA_HOME指向所需的JDK

我可以接受很多建议:

一个解决方案,它定义了一个系统环境变量,我可以在我的构建中检查。gradle脚本 在gradle.properties中定义的变量 仅为构建上下文重写JAVA_HOME变量(例如使用JAVA_HOME=<我在其他地方定义的特殊JDK路径定义>) 还有一件我没有想到的事

问题:

如何连接一个变量(如何定义,作为变量在gradle。属性,系统环境变量,…)到构建过程?

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

任何答案我都很感激,我很感激每一个指向正确方向的提示。


当前回答

如果你正在使用linux和gradle包装,你可以使用以下解决方案。

添加路径到本地。属性文件:

javaHome=<path to JDK>

添加到你的gradlew脚本文件:

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $DIR/local.properties 2>/dev/null

if ! [ -z "$javaHome" ]
then
  JAVA_HOME=$javaHome
fi

在这个解决方案中,每个开发人员都可以设置自己的JDK路径。文件的地方。属性不应该包含在版本控制系统中。

其他回答

所以,我使用IntelliJ为我的Android项目,以下解决了IDE中的问题:

就因为这能帮别人省下我浪费的几个小时… IntelliJ ->首选项->构建,执行,部署->构建工具-> Maven -> Gradle

并将Gradle JVM设置为1.8 确保你也安装了JDK 8…

注意:项目从命令行编译得很好

如果你只是想设置它一次来运行一个特定的命令:

JAVA_HOME=/usr/lib/jvm/java-11-oracle/ gw build

如果你使用的是Kotlin DSL,那么在build.gradle.kts中添加:

tasks.withType<JavaCompile> {
    options.isFork = true
    options.forkOptions.javaHome = File("C:\\bin\\jdk-13.0.1\\")
}

当然,我假设你有Windows操作系统,javac编译器在路径C:\bin\jdk-13.0.1\bin\javac。对于Linux操作系统,情况类似。

对于windows运行gradle任务,jdk 11的路径参数在引号中

gradlew clean build -Dorg.gradle.java.home="c:/Program Files/Java/jdk-11"

两种方式

在它。org.gradle.java.home=/path_to_jdk_directory

or:

在你的房子里,gradle compileJava.options.fork = true 编译java .options. forkoptions .executable = '/path_to_javac'