当收到错误报告或不工作的消息时,我的首字母缩写问题之一始终是哪个版本?由于在测试的许多阶段都存在不同的内部版本,因​​此规划和部署这通常不是一个简单的问题。

以发布Java JAR(耳朵,jar,rar,war)文件为例,我希望能够查看/查看JAR,并切换到与所发布JAR相同的分支,版本或标记。

如何最好地调整ant构建过程,以使svn checkout中的版本信息保留在创建的构建中?

我在考虑以下方面:

  • 添加一个VERSION文件,但是具有什么内容?
  • 将信息存储在META-INF文件中,但是在什么属性下具有哪些内容?
  • 将源复制到结果归档文件
  • 在所有来源中添加了svn:properties,并在其中将关键字保留为
  • 的位置添加了关键字


    我最终使用了svnversion方法(可接受的anwser),因为它扫描整个子树,而不是svn信息,后者仅查看当前文件/目录。为此,我在ant文件中定义了SVN任务,以使其更具可移植性。
    <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask">
      <classpath>
        <pathelement location="${dir.lib}/ant/svnant.jar"/>
        <pathelement location="${dir.lib}/ant/svnClientAdapter.jar"/>
        <pathelement location="${dir.lib}/ant/svnkit.jar"/>
        <pathelement location="${dir.lib}/ant/svnjavahl.jar"/>
      </classpath>
    </taskdef>
    

    并非所有构建都会产生Web服务。由于在应用程序服务器中进行更新,因此部署之前的耳文件必须保持相同的名称。使文件可执行仍然是一种选择,但是在此之前,我只包括一个版本信息文件。
    <target name="version">
      <svn><wcVersion path="${dir.source}"/></svn>
      <echo file="${dir.build}/VERSION">${revision.range}</echo>
    </target>
    

    引用:
    svnrevision:http://svnbook.red-bean.com/en/1.1/re57.html
    svn信息http://svnbook.red-bean.com/en/1.1/re13.html
    subclipse svn任务:http://subclipse.tigris.org/svnant/svn.html
    svn客户端:http://svnkit.com/

    最佳答案

    在您的Ant脚本中使用svnversion命令获取修订号:

    <exec executable="svnversion" outputproperty="svnversion" failonerror="true">
      <env key="path" value="/usr/bin"/>
      <arg value="--no-newline" />
    </exec>
    

    然后在您的EAR中的某处使用$ {svnversion}属性。我们将其放在EAR文件名中,但是您也可以将其放在EAR中的自述文件或版本文件中,或者在EAR的META-INF/manifest.mf中指定版本:
    <!-- myapp-r1234.ear -->
    <property name="ear" value="myapp-r${svnrevision}.ear" />
    

    关于java - 如何最好地在EAR中存储Subversion版本信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/171828/

    10-14 15:44
    查看更多