运行 来自 Ant 的带有自定义 JAVA_HOME 和 java.home 的 Ant 任务
Run Ant task from Ant with custom JAVA_HOME and java.home
上下文
我正在将依赖库的存储库中的 Java 版本从 8 升级到 17。我想用 Java 17 构建存储库,但是用 Java 8 构建库,因为它不能用 Java 8.
构建
环境
Docker 容器 Java 17,还有 Java 8.
问题
存储库通过 运行 ant 任务在该库中构建库
<ant dir="${lib-build-top}" target="all"/>
<ant dir="${lib-build-top}" target="buildjars"/>
在终端中可以使用
构建库
JAVA_HOME=path/to/jdk8 ant
所以我希望能够做类似
的事情
set JAVA_HOME and java.home from jdk17 to jdk8
<ant dir="${lib-build-top}" target="all"/>
<ant dir="${lib-build-top}" target="buildjars"/>
change JAVA_HOME and java.home back to jdk17
我该怎么做?
我认为唯一的方法是使用不同的 JAVA_HOME 环境变量创建一个新的 Ant 进程。在 the documentation of <exec>:
中甚至有一个 运行 Ant 这样的例子
<condition property="jdk8-home"
value="C:\Program Files\Java\jdk1.8.0_301">
<os family="windows"/>
</condition>
<property name="jdk8-home" location="/usr/lib/jvm/java-8-openjdk-amd64"/>
<property name="ant-executable" location="${ant.home}/bin/ant"/>
<exec osfamily="unix" executable="${ant-executable}">
<arg value="-buildfile"/>
<arg file="${ant.file}"/>
<arg value="all"/>
<env key="JAVA_HOME" file="${jdk8-home}"/>
</exec>
<exec osfamily="windows" executable="cmd">
<arg value="/c"/>
<arg file="${ant-executable}.bat"/>
<arg value="-buildfile"/>
<arg file="${ant.file}"/>
<arg value="all"/>
<env key="JAVA_HOME" file="${jdk8-home}"/>
</exec>
<exec osfamily="unix" executable="${ant-executable}">
<arg value="-buildfile"/>
<arg file="${ant.file}"/>
<arg value="buildjars"/>
<env key="JAVA_HOME" file="${jdk8-home}"/>
</exec>
<exec osfamily="windows" executable="cmd">
<arg value="/c"/>
<arg file="${ant-executable}.bat"/>
<arg value="-buildfile"/>
<arg file="${ant.file}"/>
<arg value="buildjars"/>
<env key="JAVA_HOME" file="${jdk8-home}"/>
</exec>
上下文
我正在将依赖库的存储库中的 Java 版本从 8 升级到 17。我想用 Java 17 构建存储库,但是用 Java 8 构建库,因为它不能用 Java 8.
构建环境
Docker 容器 Java 17,还有 Java 8.
问题
存储库通过 运行 ant 任务在该库中构建库
<ant dir="${lib-build-top}" target="all"/>
<ant dir="${lib-build-top}" target="buildjars"/>
在终端中可以使用
构建库JAVA_HOME=path/to/jdk8 ant
所以我希望能够做类似
的事情set JAVA_HOME and java.home from jdk17 to jdk8
<ant dir="${lib-build-top}" target="all"/>
<ant dir="${lib-build-top}" target="buildjars"/>
change JAVA_HOME and java.home back to jdk17
我该怎么做?
我认为唯一的方法是使用不同的 JAVA_HOME 环境变量创建一个新的 Ant 进程。在 the documentation of <exec>:
中甚至有一个 运行 Ant 这样的例子<condition property="jdk8-home"
value="C:\Program Files\Java\jdk1.8.0_301">
<os family="windows"/>
</condition>
<property name="jdk8-home" location="/usr/lib/jvm/java-8-openjdk-amd64"/>
<property name="ant-executable" location="${ant.home}/bin/ant"/>
<exec osfamily="unix" executable="${ant-executable}">
<arg value="-buildfile"/>
<arg file="${ant.file}"/>
<arg value="all"/>
<env key="JAVA_HOME" file="${jdk8-home}"/>
</exec>
<exec osfamily="windows" executable="cmd">
<arg value="/c"/>
<arg file="${ant-executable}.bat"/>
<arg value="-buildfile"/>
<arg file="${ant.file}"/>
<arg value="all"/>
<env key="JAVA_HOME" file="${jdk8-home}"/>
</exec>
<exec osfamily="unix" executable="${ant-executable}">
<arg value="-buildfile"/>
<arg file="${ant.file}"/>
<arg value="buildjars"/>
<env key="JAVA_HOME" file="${jdk8-home}"/>
</exec>
<exec osfamily="windows" executable="cmd">
<arg value="/c"/>
<arg file="${ant-executable}.bat"/>
<arg value="-buildfile"/>
<arg file="${ant.file}"/>
<arg value="buildjars"/>
<env key="JAVA_HOME" file="${jdk8-home}"/>
</exec>