我的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
时保持值持续存在?
提前致谢!
答案 0 :(得分:0)
我无法重现您的问题。您使用的是什么版本的ANT?
<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
<强>捂脸强>