【问题标题】:Use a different JAVA_HOME when running JUnit through Ant通过 Ant 运行 JUnit 时使用不同的 JAVA_HOME
【发布时间】:2018-02-12 17:59:22
【问题描述】:

目前,我正在从 Ant 运行 Junit。

我的环境变量 JAVA_HOME 设置为 /path-to-jdk6,但我希望 JUnit 测试使用 /path-to-jdk8 运行。

如何设置?

这是我的 Ant 目标:

<target name="junit" depends="compile">
  <junit printsummary="yes"
       haltonfailure="no">
    <classpath> <path refid="sample-classpath" /> </classpath>
    <formatter type="plain" usefile="false" />
    <batchtest todir="${junit.report.dir}">
      <fileset dir="${build.classes.dir}">
        <include name="**/*Test.class" />
      </fileset>
    </batchtest>
  </junit>
</target>

【问题讨论】:

  • 您是否有不关闭 target 标记 的原因? 目标>。您真的在问如何设置环境变量吗?在这种情况下,您使用的操作系统会很有用。
  • @JonGoodwin 格式问题。添加了关闭目标。我在这里使用linux。而蚂蚁版本是1.8.1

标签: junit ant junit4 java-home


【解决方案1】:

您可以将 JUnit 任务包装在单独的 Ant exec task 中,如下所示:

<macrodef name="exec-junit">
    <attribute name="antfile" default="${ant.file}" />
    <sequential>
        <exec executable="ant">
            <env key="JAVACMD" value="/path/to/jvm/1.8/bin/java" />
            <arg line='-f "@{antfile}"' />
            <arg line="junit" />
        </exec>
    </sequential>
</macrodef>

这使用了JAVACMD 环境变量...

JAVACMD - Java 可执行文件的完整路径。使用它来调用与 JAVA_HOME/bin/java(.exe) 不同的 JVM。

然后可以像这样调用上述目标:

<target name="test">
    <exec-junit/>
</target>

【讨论】:

  • 为什么没有javac提供的可执行标签?这使它变得更加复杂:(
猜你喜欢
  • 2011-07-17
  • 2014-08-03
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多