【问题标题】:Ant build multiple jar with multiple manifest but single BuildNumberAnt用多个清单构建多个jar,但只有一个BuildNumber
【发布时间】:2023-04-11 08:55:01
【问题描述】:

我有 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+ 中接受它,但我宁愿不为此改变我的库。

【问题讨论】:

    标签: xml ant build-numbers


    【解决方案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 谢谢大家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      相关资源
      最近更新 更多