Ren*_*ene 8 java svn ant release
当收到错误报告或it-doesnt-work消息时,我的姓名首字母问题始终是什么版本?由于不同的构建处于测试的许多阶段,因此规划和部署这通常是一个非常重要的问题.
我是发布Java JAR(ear,jar,rar,war)文件的情况,我希望能够查看/在JAR中切换到作为已发布JAR源的同一分支,版本或标记.
如何最好地调整ant构建过程,以便svn checkout中的版本信息保留在创建的构建中?
我在思考:
我最终使用svnversion方法(接受的anwser),因为它扫描整个子树而不是svn info,它只是查看当前文件/目录.为此,我在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>
Run Code Online (Sandbox Code Playgroud)
并非所有构建都会产生Web服务.由于应用程序服务器中的更新,部署之前的ear文件必须保持相同的名称.使文件可执行仍然是一个选项,但在那之前我只包括一个版本信息文件.
<target name="version">
<svn><wcVersion path="${dir.source}"/></svn>
<echo file="${dir.build}/VERSION">${revision.range}</echo>
</target>
Run Code Online (Sandbox Code Playgroud)
参考:
svnrevision:http://svnbook.red-bean.com/en/1.1/re57.html
svn info http://svnbook.red-bean.com/en/1.1/re13.html subclipse
svn task: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>
Run Code Online (Sandbox Code Playgroud)
然后在EAR中的某处使用$ {svnversion}属性.我们将它放在EAR文件名中,但您也可以将其放在EAR内的自述文件或版本文件中,或者在EAR的META-INF/manifest.mf中指定版本:
<!-- myapp-r1234.ear -->
<property name="ear" value="myapp-r${svnrevision}.ear" />
Run Code Online (Sandbox Code Playgroud)