我不知道怎么把它修好。
场景:
我有一个用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版本)。
任何答案我都很感激,我很感激每一个指向正确方向的提示。
有一个非常简单的方法。您可以尝试以下解决方案。
sudo update-alternatives --config java
更新java版本后,检查Gradle当前JVM的版本,以确保应用了这个更改。
gradle -v
要了解更多细节,请查看您的gradlew文件(unix类操作系统)或gradlew.bat文件(windows操作系统),以了解Gradle如何配置JAVACMD变量。
例如
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
对于Windows,打开cmd并进入你的项目根目录,然后执行如下命令:
gradlew build -Dorg.gradle.java.home="jdk_path"
我的JDK位于这个路径:C:\Program Files\Java\ JDK -11.0.5。
因此,对于我的案例,它看起来如下所示:
gradlew build -Dorg.gradle.java。家= " C: \ Program Files \ Java \ jdk-11.0.5”
另外,如果你想指定一个特定的变量,你可以这样做:
gradlew assembleDebug -Dorg.gradle.java.home=“E:\AndroidStudio\jre”
这个命令将用Debug变体编译你的项目,并在2个文件夹中输出2个apks(Debug + release)。