Ant:当我调用使用它们的目标时,为什么我的CLI args不会持久化?

时间:2013-06-04 15:12:07

标签: ant

我的build.xml中有一个属性和目标:

<property name="somedir" value="path/to/dir/${prop}"/>
<echo message="${prop}"/>

<target name="foo">
  <echo message="Property:  ${somedir}"/>
</target>

在我运行build.xml的目录中:

ant -Dprop="someVal" foo

这得到了回应:

[echo] someVal
[echo] Property:  path/to/dir/

调用${prop}foo发生了什么?如何在调用foo时保持值持续存在?

提前致谢!

3 个答案:

答案 0 :(得分:0)

我无法重现您的问题。您使用的是什么版本的ANT?

的build.xml

<project name="demo" default="foo">
  <property name="somedir" value="path/to/dir/${prop}"/>
  <echo message="${prop}"/>
  <target name="foo">
    <echo message="Property:  ${somedir}"/>
  </target>
</project>

运行如下:

$ ant -Dprop=hello
Buildfile: /home/me/tmp/build.xml
     [echo] hello

foo:
     [echo] Property:  path/to/dir/hello

ANT版本:

$ ant -version
Apache Ant(TM) version 1.9.0 compiled on March 5 2013

答案 1 :(得分:0)

我正在使用Ant版本1.8.4

我将此作为build.xml

<project>
    <property name="somedir" value="path/to/dir/${prop}"/>
    <echo message="${prop}"/>

    <target name="foo">
        <echo message="Property:  ${somedir}"/>
    </target>
</project>

我明白了:

$ ant -Dprop=foo foo
Buildfile: /Users/david/build.xml
     [echo] foo

foo:
     [echo] Property:  path/to/dir/foo

BUILD SUCCESSFUL
Total time: 0 seconds

我必须将<project></project>放在build.xml中,否则就不会执行。

有什么我想念的吗?它似乎工作正常。

答案 2 :(得分:0)

我试图覆盖build.xml中不可变的预定义属性......这更像是我想要做的事情:

  <project>
    <property name="basedir" value="/usr/me/${prop}"/>
    <echo message="${basedir}"/>
  </project>

回声:

Buildfile: build.xml

     [echo] /usr/me

BUILD SUCCESSFUL
Total time: 0 seconds

<强>捂脸