在webapp中获取当前的svn版本
在 java web 应用程序中显示/使用修订号的最佳方式是什么?
我们只使用 ant 来构建我们的 .war 存档,没有构建服务器之类的。 我希望有某种 if $ref 可以写入资源文件中,但这仅在提交相关文件时更新。 我在全球范围内都需要它。
你会推荐什么? 更新某些文件的提交后触发器? 自定义 Ant 脚本? 有没有一种更简单的方法来做到这一点? 或者最好有我自己的独立于 svn 的版本号。
编辑:很好的建议! 非常感谢您的回答!
what is the best way of displaying/using the revision number in a java webapp?
we just use ant to build our .war archive, no buildserver or such. i'd hope there was some kind if $ref that i could write in a resource file, but this is only updated when the file in question is committed. i need it globally.
what would you recommend? post-commit triggers that update certain files?
custom ant scripts? is there a more non-hacky way of doing this?
or it it better to have my own version number independent of svn.
edit: great suggestions! thanks a lot for the answers!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我们使用以下 ant 任务将 svn 版本包含在 jar 的属性中,以及正在使用的其他包的版本
,然后您可以像这样在 web 应用程序中访问它
We use the following ant task to include the svn version in a attribute in the jar, along with the version of other packages that are being used
And then you can access it in your webapp like this
如果您使用 ant,您可以定义此任务:
并在您想要的位置设置修订值。
If you are using ant you can define this task:
and you the revision value where you want.
有几个 Ant 任务可以为您执行此操作。
SvnAnt 任务< /a> 来自底格里斯河是最古老的。
文档位于此处 - 特别是查看
info< /code> 元素,它将 Subversion 存储库的修订号公开为 Ant 属性,称为
rev
。 您可以使用正常的 Ant 替换机制将此值写入资源文件。有人还在 Google 代码托管上提出了类似(更简单)的任务 - 从未使用过它虽然所以不能发表评论。
如果您的构建中已经有 Ant,那么这两种方式对我来说似乎都是最巧妙的方式。
There are a couple of Ant tasks that can do this for you.
SvnAnt task from tigris is the oldest.
Documentation is here - in particular take a look at the
info
element which exposes the Subversion repository's revision number as an Ant property which it callsrev
. You can write this value to your resouces file using the normal Ant substituion mechanisms.Someone has also put up a simillar (simpler) task on google code hosting - never used it though so can't comment.
Either of these seem like the neatest way to me if you already have Ant in your build.
请参阅此帖子。
该线程中我最喜欢的是将
$Id:$
转储到您需要修订 ID 的代码中。 当您进行导出时,SVN 将使用真实数据填充该数据。See this thread.
My favourite from that thread is just dumping
$Id:$
in your code where you want the revision ID. SVN will populate that with the real data when you do an export.如果您使用的是 Windows,您可以查看 tortoise 附带的 SubWCRev.exe。
它提供了当前存储库修订版,并将替换 $WCREV$ ,您可以将其作为上下文参数包含在 web.xml 中,然后从那里获取它。
If you are using windows you could look at SubWCRev.exe which comes with tortoise.
It gives the current repository revision and will replace $WCREV$ with said, you could include this in your web.xml as say a context param and then get it from there.
在打包 web 应用程序之前,运行 svn info 并将输出重定向到 WEB-INF/classes 中的某个文件。 当 web 应用程序启动时,解析此文件并将其存储在 servlet 上下文或其他类似位置。 在每一页的页脚中,显示此版本 - 如果您使用的是 Tiles 或 SiteMesh 等内容,则只需在一个文件中完成此更改。
Maven 用户可以尝试 maven-buildnumber 插件。
Before the webapp is packaged, run svn info and redirect the output to some file in WEB-INF/classes. When the webapp starts up, parse this file and have it stashed away in the servlet context or some similar place. In the footer of every page, display this version - if you are using something like Tiles or SiteMesh, this change needs to be done only in one file.
Maven users can try the maven-buildnumber plugin.