Maven插件项目语义版本

问题描述 投票:4回答:3

我在寻找一个Maven插件,这将有助于我管理版本名称和被我们的CI环境中进行,每次构建的代码。东西就能前缀附加到主版本的代码,甚至更新(不改变pom.xml)。例如:

project version: 2.0.1
git/svn revision: 2342334

jar output: name-2.0.1-2342334.jar
maven repo: ../path/to/local/maven/repo/<package path>/2.0.1-2342334/

这个插件的主要要求是:

  • 必须在Maven仓库(这意味着不需要额外的设置,在我的pom.xml和运行Maven添加此插件)
  • 不能编辑POM,每一次它的应用
  • 一个配置文件,将是巨大的,所以我可以管理版本过程
  • 必须能够编辑输出文件元数据(这样的版本会,如果它是写在pom.xml文件摆在首位应用)

到目前为止,我只发现了maven-buildmetadata-pluging但不幸的是它不是在Maven的回购,所以我坚持。任何帮助将是巨大的。

java eclipse maven maven-plugin
3个回答
2
投票

如果你改变你的神器版本的POM具有以反映更改,否则将导致它不能重现。

如果您在构建过程中改变一些东西(如添加的版本,等等)它必须体现在POM文件。否则,你不能用相同的结果重现构建过程。

你写不改变POM文件,但保持一个单独的文件。所以,问题是:为什么不使用POM文件本身,因为它的预期正是为了这个目的。

此外,你在Maven的buildmetadata-插件提到的所有信息可以通过使用现有的Maven插件(如构建辅助性Maven的插件,buildnumber - Maven的插件)可以achived。

所述SCM信息可以通过使用提供了像SCM版本号(SVN或GIT散列)信息的buildnumber-maven-plugin使用。

一个在另一方面,如果你不喜欢改变你的POM文件手动您可以使用该versions-maven-plugin或自动可以改变的信息在你的POM文件,并自动处理所有这些事情的maven-release-plugin

要在产品构件保持的元数据可以配置所有插件(如耳朵,战争,罐)等或多或少喜欢这个地方的版本号是从buildnumber - Maven的插件来:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>${maven-jar-plugin.version}</version>
      <configuration>
        <archive>
          <addMavenDescriptor>true</addMavenDescriptor>
          <index>true</index>
          <manifest>
            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
          </manifest>
          <manifestEntries>
            <artifactId>${project.artifactId}</artifactId>
            <groupId>${project.groupId}</groupId>
            <version>${project.version}</version>
            <buildNumber>${buildNumber}</buildNumber>
          </manifestEntries>
        </archive>
      </configuration>
    </plugin>

当然,如果你真的很喜欢使用Maven,你应该使用一个存储库经理像Artifactory的或Nexus它使生活更轻松已经提到。


2
投票

托管自己的Maven仓库是很容易的,无论是使用NexusArtifactory。您也可以使用Artifactory cloud version(我没有与他们关联......),所以它可能会解决你的问题。顺便说一句 - 与Apache一个简单的服务器的伎俩为好,但有更多的工作..,

关于插件:如果部署快照的应用则每个获取基于时间戳它自己的版本。

对于释放另一种选择是运行svn info并把结果(或它的一部分)到所生成的伪影。所述信息然后可以由代码访问。


0
投票

我只是想补充(虽然问题是5岁,已经有一个公认的答案),该Buildmetadata Maven Plugin不可用的Maven的回购在第一,但它现在是(自2013年底)。想谁的人给它一个尝试寻找神器在以下位置:

  1. com.redhat.rcm.maven.plugin:buildmetadata-maven-plugin
  2. de.smartics.maven.plugin:buildmetadata-maven-plugin

请注意,该名称已经从Maven的buildmetadata-插件变为buildmetadata - Maven的插件由于naming conventions

我这个插件在智能身份证“原始”的作者之一。如果你想使用它,你可能想使用fork provided by Red Hat。据我所知,这两个版本的差异并不很大,他们have not been synced since there is just so much other stuff to do和插件似乎是功能稳定。 ;-)

两个版本的源代码也可以在GitHub上:

  1. release-engineering/buildmetadata-maven-plugin
  2. smartics/buildmetadata-maven-plugin
© www.soinside.com 2019 - 2024. All rights reserved.