用于项目语义版本控制的Maven插件

sulc1iza  于 2022-10-15  发布在  Maven
关注(0)|答案(4)|浏览(189)

我正在寻找一个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 Repo中,所以我被困住了。任何帮助都是最好的。

yftpprvb

yftpprvb1#

使用NexusArtifactory托管您自己的maven存储库非常容易。您也可以使用Artifactory cloud version(我与他们没有关联...)所以它可能会解决你的问题。顺便说一句--一个简单的服务器和apache一样可以做到这一点,但是需要更多的工作。
关于插件:如果您部署快照应用程序,则每个插件都会根据时间戳获得自己的版本。
对于发行版,另一种选择是运行svn info并将结果(或部分结果)放入生成的构件中。然后,代码就可以访问这些信息。

wgx48brx

wgx48brx2#

如果你改变了你的艺术品的版本,POM必须反映这个变化,否则它是不可复制的。
如果您在构建过程中更改了某些内容(如添加的版本等),则必须将其反映在pom文件中。否则,您不能以相同的结果重现生成过程。
您写的不是要更改POM文件,而是要维护一个单独的文件。所以问题是:为什么不使用POM文件本身,因为它就是为了这个目的而设计的。
此外,您在maven-Build元数据插件中提到的所有信息都可以通过使用现有的maven插件(如Build-helper-maven-plugin、Buildnumber-maven-plugin)来实现。
可以通过使用buildnumber-maven-plugin使用SCM信息,buildnumber-maven-plugin提供诸如SCM修订版号(SVN或GIT散列)之类的信息。
另一方面,如果您不喜欢手动更改您的POM文件,您可以使用versions-maven-pluginmaven-release-plugin,它们可以自动更改您的POM文件中的信息并自动处理所有这些事情。
要在您生产的构件中维护元数据,您可以配置所有插件(如ear、war、jar)等,大致如下所示,其中BuildNumber来自Buildnumber-maven-plugin:

<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,这会让你的工作变得更轻松。

km0tfn4u

km0tfn4u3#

我只想补充一点(尽管这个问题已经提出5年了,而且已经有了公认的答案),Buildmetadata Maven Plugin最初在Maven Repo上不存在,但现在(从2013年底开始)。想要试一试的人在以下地点找到了这件文物:
1.com.redhat.rcm.maven.plugin:buildmetadata-maven-plugin
1.de.smartics.maven.plugin:buildmetadata-maven-plugin
请注意,由于naming conventions,名称已从maven-BuildMETADATA-PLUGIN更改为BuildMETADATA-MAVEN-PLUGIN。
我是Smartics这个插件的原创作者之一。如果您想使用它,您可能会使用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
1.smartics/buildmetadata-maven-plugin

lsmd5eda

lsmd5eda4#

如前所述,您必须更改POM中的版本。要做到这一点,与发布插件相结合的一种方法是:

mvn \
  se.bjurr.gitchangelog:git-changelog-maven-plugin:VERSION_HERE:semantic-version \
  release:prepare release:perform

使用Git Changelog Maven Plugin

相关问题