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