我有一个GWT项目,其源代码在SVN中管理,使用Maven打包,并通过Hudson管理其构建.我想在应用程序根HTML文件底部的注释中看到最新签入/构建的SVN修订版号.我不关心在开发过程中发生这种情况!
以下是我迄今为止用Google搜索的选项,但没有成功:
>在构建之后,我可以让Hudson写入构建/修订号
到其构建输出文件之一(即应用程序根HTML)
文件)?我见过没办法做到这一点.
>我可以让Maven将SVN修订版编号写入其中一个版本
输出文件(即应用程序根HTML文件)?我已经看到了方法
Maven将此文件写入JAR / WAR清单文件(然后可以
在Java代码中访问),但我不确定它是否适用于GWT
(我对GWT的内部结构并不是特别了解).
>我可以将SubVersion作为预提交挂钩,将版本号写入特定文件吗?我知道很容易将版本号写入您正在编辑的文件中,但不太确定要写入一个完全独立的文件(因此无论是否在该提交中更改,它都会在每次提交时更新).
有没有人有一个完整的,端到端的例子来说明如何使这些工作?我一直在寻找代码/配置的小片段,它们完成了工作的一部分,但并不是我正在寻找的任何东西.
谢谢!
解决方法:
通过组合Maven和Hudson,您可以实现您所需要的.在这个例子中,让我们假设您希望Web应用程序根目录下的文件version.txt包含修订版本.
version.txt:
${SVN_REVISION}
在你的项目的pom.xml中启用maven-war-plugin中的过滤:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<webResources>
<webResource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
<includes>
<include>version.txt</include>
</includes>
</webResource>
</webResources>
</configuration>
</plugin>
确保Hudson正在构建您的项目. Subversion checkout,它将为每个构建设置SVN_REVISION环境变量,Maven将填充它.