【问题标题】:Run Ant task from Ant with custom JAVA_HOME and java.home使用自定义 JAVA_HOME 和 java.home 从 Ant 运行 Ant 任务
【发布时间】:2021-11-06 01:53:06
【问题描述】:

上下文

我正在将依赖于库的存储库中的 Java 版本从 8 升级到 17。我想用 Java 17 构建存储库,但是用 Java 8 构建库,因为它不能用 Java 8 构建。

环境

使用 Java 17 和 Java 8 的 Docker 容器。

问题

存储库通过在该库中运行 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 ant environment-variables java-home


    【解决方案1】:

    我认为唯一的方法是使用不同的 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>
    

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多