目前文件只保留最新版本。我想用另一个文件保存历史。每次使用ANT时,我希望它在该文件上附加时间和修订号。在主屏幕上,我将只显示到该文件的链接。
现在是这样写的:
<target name="compile-java" depends="prepare,compile">
<exec dir="${project.dir}" executable="tools/version.sh" output="${src.web.dir}/date_compile.jsp">
<arg line="" />
</exec>
<propertyfile file="${src.web.dir}/date_compile.jsp">
</propertyfile>
</target>
我想添加新的修订,同时保持旧的修订数据。
这只是一个使用BuildNumber或PropertyFile任务来创建构建版本号文件的问题,然后读取文件以获得该数字,还创建构建的时间戳,然后将它们都附加到另一个文件。
这是如何做的一个基本的想法。从这个开始,你应该能够写这样的东西:
<project default="increment">
<target name="increment">
<tstamp>
<format property="build.time" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
<propertyfile file="build.properties">
<entry key="build.number" type="int" operation="+" default="0" />
</propertyfile>
<property file="build.properties" />
<echo message="Build ${build.number} on ${build.time} " append="true" file="build.history" />
</target>
</project>
这将创建两个文件:build.properties
包含构建号(总是最后一个数字,因为它在每个构建上都被覆盖),build.history
包含构建号列表和每个构建的时间戳。
EDIT:根据注释,如果version.sh
输出date_compile.jsp
的修订和日期,并在每次构建时覆盖它,然后-保持历史记录-您只需要在构建中加载date_compile.jsp
并将其内容附加到另一个文件,像这样:
<target name="compile-java" depends="prepare,compile">
<exec dir="${project.dir}" executable="tools/version.sh" output="${src.web.dir}/date_compile.jsp">
<arg line="" />
</exec>
<loadfile property="revision" srcfile="${src.web.dir}/date_compile.jsp" />
<echo message="${revision}<br> " append="true" file="${src.web.dir}/compile_history.jsp" />
</target>
不是100%确定你想要什么,但它看起来像<tstamp/>
, <echo>
和<propertyfile/>
的组合。
您可以使用<propertyfile>
指定存储构建号的属性文件,并用于编辑它:
<propertyfile file="${build.prop.file}">
<entry key="build.number"
value="1"
default="0"
operation="+"/>
</propertyfile>
现在,您可以在构建中包含该属性文件:
<property file="${build.prop.file}"/>
这将设置${build.number}
。
接下来,你将得到日期和时间:
<tstamp>
<format property="build.time.stamp"
pattern="yyyy-mmm-dd.hh:mm:ss-zzzzz"/>
</tstamp>
现在,您将把它附加到日志文件
<echo append="true" file="${build.log}"
message="Building build # ${build.number} on ${build.time.stamp}"/>