当收到错误报告或不工作的消息时,我的首字母缩写问题之一始终是哪个版本?由于在测试的许多阶段都存在不同的内部版本,因此规划和部署这通常不是一个简单的问题。
以发布Java JAR(耳朵,jar,rar,war)文件为例,我希望能够查看/查看JAR,并切换到与所发布JAR相同的分支,版本或标记。
如何最好地调整ant构建过程,以使svn checkout中的版本信息保留在创建的构建中?
我在考虑以下方面:
我最终使用了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/