Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 蚂蚁属性覆盖_Java_Ant_Jenkins - Fatal编程技术网

Java 蚂蚁属性覆盖

Java 蚂蚁属性覆盖,java,ant,jenkins,Java,Ant,Jenkins,我有一个问题,我有一个build.properties,其中我有一个属性test=true; 并且只有在测试为true时才应该调用ant目标。我希望将该值作为默认值。是否有可能以某种方式更改Jenkins中的值?我试图设置test=false,但似乎没有效果。一些建议?在这个场景中,您必须像下面一样修改Ant脚本,然后它将按照您的预期工作。 如果没有,请尝试类似的逻辑为ant设置默认值和动态值。然后,如果您从Jenkins传递值,则该值为-Dtest=true,否则默认情况下,它会将该值赋给fa

我有一个问题,我有一个build.properties,其中我有一个属性test=true;
并且只有在测试为true时才应该调用ant目标。我希望将该值作为默认值。是否有可能以某种方式更改Jenkins中的值?我试图设置test=false,但似乎没有效果。一些建议?

在这个场景中,您必须像下面一样修改Ant脚本,然后它将按照您的预期工作。 如果没有,请尝试类似的逻辑为ant设置默认值和动态值。然后,如果您从Jenkins传递值,则该值为-Dtest=true,否则默认情况下,它会将该值赋给false

<condition property="test" value="${test}" else="false">
    <isset property="${test}" />
</condition>

仅在特定条件下执行Ant目标

在Ant构建脚本中,您需要一个仅在满足特定条件时执行的目标。使用
标记的
if=“property”
属性很容易,但是检查属性是否已设置,而不是其值。您已经将属性设置为默认值
test=true
。因此,对于您的情况,可以使用稍微不同的方法


此脚本检查
${test}
的值,如果该值与文本
“true”
匹配,则将
${test.execute}
的值设置为
${test}
。如果不是(即除“true”之外的任何内容),则属性
${test.execute}
保持未设置

最后,仅当设置了属性
${test.execute}
时,才会执行目标
runtest

注意:这仅在该属性保持未设置状态时有效。即使在构建文件或属性中包含
,也会破坏这一点

通过Jenkins将变量传递给Ant:

  • 选择调用Ant构建步骤
  • 单击高级…
  • 目标下输入常用目标(或默认为空)
  • 生成文件下,指定生成文件(或将
    $WORKSPACE
    根目录中的默认
    Build.xml
    保留为空)
  • 在属性下,以
    param=value
    的格式输入参数。这与在命令行上使用
    -Dparam=value
    相同。请注意,在Jenkins中指定此字段中的属性时,您不需要使用
    -D
  • 因此,输入
    test=false
使用Ant 1.9.2及以上版本(它应该可以使用Ant 1.9.1,但我有问题),您现在可以在大多数任务中使用该参数:

<project default="test" xmlns:if="ant:if"> <!-- Note xmlns in the entity "project" -->
    <property name="run.this" value="true"/>
    <target name="test">
        <echo if:true="${run.this}">Run test target</echo>
    </target>
</project>
如果我跑步:

$ ant
Buildfile: /Users/david/build.xml

test:
      [echo] Run test target

BUILD SUCCESSFUL
Total time: 0 seconds
ant -Drun.this=false  # Sets property run.this to "false"
test:

BUILD SUCCESSFUL
Total time: 0 seconds

请注意,
if:true=“${run.this}
run时阻止echo执行。this
为false。

您是否尝试过将
test=true
放在“invoke Ant”的属性部分“在你的詹金斯工作中建立步骤?在那里设置的属性与通过命令行传递给Ant的属性一样,因此应该覆盖构建脚本或属性文件中设置的任何内容。非常感谢,它几乎成功了。很遗憾,我不能选择两个正确的答案!但是它帮助了很多。不知怎的,它失败了。奇怪的是,这是一个从我的xml复制的n-paste,有效,并且没有语法错误。哦,好吧,很高兴你让它无论如何都能工作。