1

我有 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} 访问它,但它说的是意外令牌。我如何存储这些属性以在任何地方访问它们?

蚂蚁版本 1.5.4。它似乎在 Ant 1.6+ 中接受它,但我宁愿不为此更改我的库。

4

1 回答 1

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 谢谢大家。

于 2011-11-17T08:46:20.080 回答