【发布时间】:2010-09-15 08:52:11
【问题描述】:
当收到错误报告或无法正常工作的消息时,我的首字母缩写之一始终是什么版本?由于不同的构建处于测试、规划和部署的多个阶段,这通常是一个重要的问题。
在发布 Java JAR(ear、jar、rar、war)文件的情况下,我希望能够查看/查看 JAR 并切换到作为发布源的相同分支、版本或标记罐子。
如何最好地调整 ant 构建过程,以便 svn checkout 中的版本信息保留在创建的构建中?
我的想法是:
- 添加 VERSION 文件,但内容是什么?
- 将信息存储在 META-INF 文件中,但在哪个属性下具有哪些内容?
- 将源复制到结果存档中
- 在所有源代码中添加了 svn:properties,并在编译器保留它们的地方添加了关键字
我最终使用了 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>
并非所有构建都会产生 Web 服务。部署前的ear文件必须保持相同的名称,因为在应用服务器中进行了更新。使文件可执行仍然是一种选择,但在那之前我只包含一个版本信息文件。
<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 info http://svnbook.red-bean.com/en/1.1/re13.html
subclipse svn 任务:http://subclipse.tigris.org/svnant/svn.html
svn客户端:http://svnkit.com/
【问题讨论】:
-
我 SvnTask 比在接受的答案中运行“svnversion”更便携?