在webapp中获取当前的svn修订版

And*_*son 9 java svn revision web-applications

在java webapp中显示/使用修订号的最佳方法是什么?

我们只使用ant来构建我们的.war存档,没有构建服务器等.我希望有一些如果$ ref我可以在资源文件中写入,但只有在提交相关文件时才会更新.我需要全球.

你会推荐什么?更新某些文件的提交后触发器?自定义ant脚本?有没有更黑的方式这样做?或者最好让我自己的版本号独立于svn.

编辑:很棒的建议!非常感谢你的答案!

Kei*_*thB 6

我们使用以下ant任务将svn版本包含在jar中的属性中,以及正在使用的其他包的版本

<target name="package" depends="compile" description="Package up the project as a jar">
<!-- Create the subversion version string -->
<exec executable="svnversion" failifexecutionfails="no" outputproperty="version">
  <arg value="."/> 
  <arg value="-n"/>
</exec>
<!-- Create the time stamp -->
<tstamp>
  <format property="timeAndDate" pattern="HH:mm d-MMMM-yyyy"/>
</tstamp>

<jar destfile="simfraserv.jar">
  <manifest>
    <attribute name="Built-By"                value="${user.name} on ${time.date}" />
    <attribute name="Implementation-Version"  value="${svn.version}" />
    <attribute name="Implementation-Java"     value="${java.vendor} ${java.version}" />
    <attribute name="Implementation-Build-OS" value="${os.name} ${os.arch} ${os.version}" />
    <attribute name="JVM-Version"             value="${common.sourcelevel}+" />        
  </manifest>
  <fileset dir="bin">
    <include name="**/*.class"/>
  </fileset>
  <fileset dir="src">
    <include name="**"/>
  </fileset>
</jar>
</target>
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的webapp中访问它

String version = this.getClass().getPackage().getImplementationVersion();
Run Code Online (Sandbox Code Playgroud)


ser*_*g10 3

有几个 Ant 任务可以为您完成此任务。

tigris 的SvnAnt 任务是最古老的。

文档位于此处- 特别是查看info将 Subversion 存储库的修订号公开为其调用的 Ant 属性的元素rev。您可以使用正常的 Ant 替换机制将此值写入资源文件。

有人还在谷歌代码托管上提出了类似(更简单)的任务- 但从未使用过它,所以无法发表评论。

如果您的构建中已经有 Ant,那么这两种方式对我来说似乎都是最巧妙的方式。