【问题标题】:Create file that keeps time and revision number of my project when I compile创建文件,在我编译时保留我的项目的时间和修订号
【发布时间】:2013-05-10 23:51:45
【问题描述】:

目前该文件仅保留最新版本。我想使用保存历史记录的不同文件。每次使用 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>

我想在保留旧版本数据的同时追加新版本。

【问题讨论】:

  • 听起来您正在寻找版本控制系统。如果不是,请进一步解释。
  • 问题是什么?
  • 当我构建我的项目时,build.xml 包含这个 基本上把我的构建版本扔到 jsp 文件中。每个新构建的问题都会覆盖整个文件,因此我无法保留构建版本的历史记录。我想在保留旧版本数据的同时追加新版本

标签: linux jsp svn ant build


【解决方案1】:

这只是使用BuildNumberPropertyFile 任务来创建构建版本号文件,然后读取文件以获取该数字,还创建构建的时间戳,然后将它们都附加到另一个文件。

Here is a basic idea of how to do it。从那开始,你应该能够写出类似这样的东西:

<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}&#13;&#10;" append="true" file="build.history" />
    </target>
</project>

这会创建两个文件:build.properties 包含您的内部版本号(始终是最后一个数字,因为它在每次构建时都会被覆盖)和 build.history 包含内部版本号列表和每个版本的时间戳。

编辑:基于 cmets,如果 version.sh 将修订和日期输出到 date_compile.jsp 并在每次构建时覆盖它 - 保留历史 - 你只需要加载 @987654330 @ 在您的构建中并将其内容附加到另一个文件中,如下所示:

<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}&lt;br&gt;&#13;&#10;" append="true" file="${src.web.dir}/compile_history.jsp" />
</target>

【讨论】:

  • 这真的很有帮助谢谢。但我很抱歉我不是很清楚,我需要创建一个包含内部版本号和修订的文件。在 version.sh 中它包括 #!/bin/bash # echo svn info|grep branch|awk -F\/ '{ print $NF }'"/"svnversion echo git branch | sed --quiet 's/* \(.*\)/\1/p'"/"git log --pretty=format:'%h/%cd' --date=short -n 1 所以我有点困惑,我需要更改那个文件还是构建.xml 谢谢
  • @Saad Yehia El Ashmawi:这取决于什么对您来说更容易。您可以更改文件以使其保留历史记录,或者您可以使用 &lt;loadfile property="revision" srcfile="youtRevision.file" /&gt; 之类的内容在 ANT 构建中加载文件,然后将其添加到 echo:&lt;echo message="Build ${build.number} on ${build.time} revision ${revision}&amp;#13;&amp;#10;" append="true" file="build.history" /&gt;
  • 谢谢,我会试试这个。但如果我想将历史记录保留在 version.sh 中,该怎么做?
  • 这就是我们现在保存修订和构建的方式 我正在尝试从 version.sh 或 date_compile.jsp 复制到另一个保存历史记录的文件谢谢
  • @Saad Yehia El Ashmawi:如果您有 date_compile.jsp 中的内容,您可以使用 &lt;loadfile&gt; 将其加载到您的构建中,然后使用 &lt;echo ... append="true"&gt; 将其写回另一个文件,正如我在我的评论。 The &lt;exec&gt; task itself has an append attribute 将允许直接保留历史记录。我对 Bash 不太熟悉,如果你想修改 version.sh 文件,那么你就靠自己了。
【解决方案2】:

不是 100% 确定您想要什么,但它看起来像是 &lt;tstamp/&gt;&lt;echo&gt;&lt;propertyfile/&gt; 的组合。

您可以使用&lt;propertyfile&gt; 指定存储内部版本号的属性文件,并对其进行编辑:

 <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}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多