在JavaJAR清单中嵌入SVN版本号的最佳实践?

在JavaJAR清单中嵌入SVN版本号的最佳实践?,svn,jar,manifest,manifest.mf,Svn,Jar,Manifest,Manifest.mf,我看到了这样的问题,但是对于清单中使用的实际字段、版本和存储库URL(即,显示它在主干上而不是分支上),是否有任何标准(事实上或其他标准)?我见过使用的实现版本,有或没有前导的“r”(用于修订),我见过实现构建:也使用过 edit我删除了maven标记,它本不应该出现在那里。我的问题是关于jar内容,而不是工具本身 不幸的是,jar清单本身没有任何版本编号标准 但是,实际上,有另一种自动更新版本号的标准方法。您可以使用,以便在每次提交后获取文件中的当前修订号。版本替换有$Revision$属性,

我看到了这样的问题,但是对于清单中使用的实际字段、版本和存储库URL(即,显示它在主干上而不是分支上),是否有任何标准(事实上或其他标准)?我见过使用的实现版本,有或没有前导的“r”(用于修订),我见过实现构建:也使用过


edit我删除了maven标记,它本不应该出现在那里。我的问题是关于jar内容,而不是工具本身

不幸的是,jar清单本身没有任何版本编号标准

但是,实际上,有另一种自动更新版本号的标准方法。您可以使用,以便在每次提交后获取文件中的当前修订号。版本替换有
$Revision$
属性,存储库URL替换有
$HeadURL$
属性。您只需将以下字符串放入文件并将此文件置于版本控制下:

$Revision$ $HeadURL$
如果您使用maven动态创建清单,我建议将以下内容放入
version.properties
文件:

revision=$Revision$
repourl=$HeadURL$
然后将语句包含到
pom.xml
中(maven应该启用属性插件):


没有我所知道的标准。每一个公司/开发人员似乎都有一个关于如何管理修订号的意见,不要介意如何记录和描述修订:-如果您想以编程方式阅读修订号,您可能需要考虑使用除(或至少是除此之外)的清单以外的文件。从JVM内部读取MANIFEST.MF实际上是一件非常痛苦的事情,如果类加载器层次结构发生变化,那么从一个环境到另一个环境可能会不一致。现在我只需要开始做这个m'self。谢谢,一个更正是在propset中应该是“Revision\HeadURL”而不是“Id”。但是,$Revision只包括version.properties的版本(请参阅:“where's globalrev”),但是,$HeadURL$不会经常更改(除非您svn切换子目录)。因此,我应该考虑使用头URL,而不是完全忽略关键字。谢谢
<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-1</version>
    <executions>
      <execution>
        <phase>initialize</phase>
        <goals>
          <goal>read-project-properties</goal>
        </goals>
        <configuration>
          <files>
            <file>version.properties</file>
          </files>
        </configuration>
      </execution>
    </executions>
  </plugin>
<manifest>
  <attribute name="Revision" value="${revision}" />
  <attribute name="Repository URL" value="${repourl}" />
</manifest>
svn propset svn:keywords Revision version.properties
svn propset svn:keywords HeadURL version.properties