2011-11-08 26 views
1

我有2個需要的變量。首先是使用yyyy-MM-dd格式的DSTAMP,另一個是我的.build文件中的buildNumber。 在一個簡單的結構是這樣的:Ant用多個清單構建多個jar但單個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> 

我想的話,我可以用$ {build.number}和$ {} DSTAMP訪問它在我的Ant腳本的任何地方,但它說,意外的標記。我怎樣才能存儲這些屬性在任何地方訪問它們?

Ant版本1.5.4。 它似乎接受它在Ant 1.6 +,但我寧願不改變我的庫只是爲了這個。

回答

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 感謝所有。

相關問題