【问题标题】:How to inject SVN revision number into JAR?如何将 SVN 修订号注入 JAR?
【发布时间】:2011-04-24 06:57:21
【问题描述】:

我希望我的 JAR/WAR 应用程序知道其源代码的 SVN 修订号是多少。我希望稍后在网页底部为网络最终用户呈现此修订号等。

是否有任何现有的 Maven 插件来自动化该过程?我认为插件必须从svn 收集信息并保存到某个文件,例如src/resources/revision.txt

【问题讨论】:

    标签: java svn maven-2 buildnumber-maven-plugin


    【解决方案1】:

    此页面提供了几乎相同问题的答案:

    Maven 食谱:How To Add SVN Revision To A JAR Manifest?

    在您的情况下,您需要为 resource filtering 使用 buildNumber 变量,而不是构建清单条目

    【讨论】:

    • 清单条目有什么问题?我假设它可以从 Java 访问。对吗?
    • @vincenzo 当然,昨天有一个类似问题的问题(你可以使用答案):stackoverflow.com/questions/3907737/…
    • @vincenzo 但使用 maven 过滤 jsp 或简单文本文件要容易得多
    • 注意:这个版本号将只是最顶层项目目录的版本。如果您在某个子目录中单独运行了“svn up”,则不会记录。如果您打开 true 选项,这不是问题。更安全的选择是列出所有子目录和文件的修订版,但我还没有遇到可以做到这一点的公开插件(我们有一个内部开发的插件,它还记录了 SVN URL,所以你知道哪个分支代码来自)。
    【解决方案2】:

    使用 Codehaus Mojo 项目中的 versions-maven-plugin buildnumber-maven-plugin。提供了很多选项来执行此操作。

    【讨论】:

    • 真的吗?我找不到任何东西。我们说的是 SVN 版本,而不是 POM 版本。
    • @Salandur 感谢您的更新,但这正是seanizer 上面解释的内容。
    • 这是真的,但是当我输入和编辑我的答案时,我没有看到他的答案:)
    • @Vincenzo:当两个人给出相同的答案时,它仍然可能是正确的(Salandur +1)
    【解决方案3】:

    你可以使用svn keyword substitution

    【讨论】:

    • 在这种情况下,我将选择这个特定文件的 SVN 版本,而不是整个代码库。
    • 关键字替换仅对更改的文件执行,即没有更改,没有新的修订号。必须从.svn 目录中读取当前项目的修订版本。 MediaWiki 有执行此操作的代码,但是它是用 PHP 编写的。
    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2010-09-05
    • 1970-01-01
    相关资源
    最近更新 更多