Ant:为什么当我调用使用它们的目标时,我的CLI参数没有持久化?



我有一个属性和目标在我的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/

调用foo时,${prop}发生了什么变化?当调用foo时,我如何使值持续存在?

提前感谢!

我无法重现您的问题。您使用的是哪个版本的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

我使用的是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中,否则它不会执行。

我错过了什么吗?

我试图覆盖一个预定义的属性,从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

facepalm指

相关内容

  • 没有找到相关文章

最新更新