我有2个需要的变量。首先是带有yyyy-MM-dd格式的DSTAMP,另一个是来自我的.build文件的buildNumber。 在这样一个简单的结构中:
<project .....>
<property ....>
<target ....>
<target .....>
</project>
我的问题是,如何将$ {build.number}和DSTAMP设置为属性?我试过这样做:
<project .....>
<tstamp>
<format property="DSTAMP" pattern="yyyy-MM-dd" />
</tstamp>
<buildnumber file=".build"/>
<property ....>
<target ....>
<target .....>
</project>
我想我可以在我的ant脚本中的任何地方用$ {build.number}和$ {DSTAMP}访问它,但它会说出意外的令牌。如何存储这些属性以便在任何地方访问它们?
Ant版本1.5.4。 它似乎在Ant 1.6+中接受它但我宁愿不为此改变我的库。
答案 0 :(得分:1)
好的,我使用了另一个解决方案,因为buildNumber任务的行为不像我想要的那样:
<project name="MyProject" default="all" basedir=".">
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
<tstamp>
<format property="DSTAMP" pattern="yyyy-MM-dd" />
<format property="TODAY" pattern="yyyy-MM-dd HH:MM:SS" />
</tstamp>
<property file=".build"/>
<property name="buildNum" value="${build.number}"/>
[... some tasks ...]
<target name="incrementVersion">
<echo>Building version ${build.number} success</echo>
<propertyfile file="./.build" comment="Build Number">
<entry key="build.number" type="int" operation="+" default="1000" pattern="0000"/>
</propertyfile>
</target>
<target name="all" depends="some,other,target,incrementVersion"/>
</project>
这样我100%肯定它只会在我的任务结束时增加,并且只有在成功时才会增加。这里只是一个小问题,你必须运行incrementVersion一次,这样才能初始化buildNumber参数。如果存在控制我可以做一些但由于我的文件永远不会被删除我不在乎。你必须使用Ant 1.6+和Ant Contrib。我使用Ant 1.8.2和Ant Contrib 1.0b3 谢谢大家。