gpt4 book ai didi

java - 如何为 ant junit 命令提供条件 jvmarg?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:01 25 4
gpt4 key购买 nike

我们的商店在 Java 6、7 和 8 上设置了多个构建和测试环境(Jenkins、Ant 1.9.6)。仅在 Java 7 上,为了让我们的测试成功运行,我们需要添加 JVM 参数-XX:-UseSplitVerifier.

我不能在 junit 中使用 condition,所以我在 init 任务中设置了一个 boolean 属性:

<condition property="usesplitverifier">
<equals arg1="${ant.java.version}" arg2="1.7" />
</condition>

在我的 test 任务中,仅当该属性为 true 时,我才需要将 jvmarg 添加到 junit:

<echo message="usesplitverifier: ${usesplitverifier}" />

<junit printsummary="yes" haltonfailure="no" fork="yes" forkmode="once" tempdir="${build.dir}">
<jvmarg if="usesplitverifier" value="-XX:-UseSplitVerifier" />
...
</junit>

输出是:

        [echo] usesplitverifier: true

BUILD FAILED
C:\workspace\util\build.xml:141: jvmarg doesn't support the "if" attribute

我试图避免添加 ant-contrib到我们的构建/测试环境。另外,我想避免向构建脚本添加更多目标(我试图简化构建过程)。是否有其他方法可能适用于此?

最佳答案

在写这个问题的时候,我发现the solutionanother question由于过于模糊而被关闭。我决定发布此问题以提供特定用例。

if/unless namespaces可以在任何 Ant 命令中使用。在我的例子中,我需要将 if 命名空间添加到项目中:

<project name="my-project" xmlns:if="ant:if" ...>

然后将条件放在jvmarg上,如下所示:

<junit printsummary="yes" haltonfailure="no" fork="yes" forkmode="once" tempdir="${build.dir}">
<jvmarg if:set="usesplitverifier" value="-XX:-UseSplitVerifier" />
...
</junit>

if:set 在这种情况下起作用的原因是如果 ${ant.java.version} 不是 1.7,属性仍未设置。

注意事项(在我的情况下可以接受):

  • if/unless 命名空间仅在 Ant 1.9.1 之后可用。
  • 在 Ant 1.6 之前,${ant.java.version} 返回编译 Ant 时使用的 JVM 版本。

关于java - 如何为 ant junit 命令提供条件 jvmarg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35393545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com