我正在寻找一个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中,所以我被困住了。任何帮助都是最好的。
4条答案
按热度按时间yftpprvb1#
使用Nexus或Artifactory托管您自己的maven存储库非常容易。您也可以使用Artifactory cloud version(我与他们没有关联...)所以它可能会解决你的问题。顺便说一句--一个简单的服务器和apache一样可以做到这一点,但是需要更多的工作。
关于插件:如果您部署快照应用程序,则每个插件都会根据时间戳获得自己的版本。
对于发行版,另一种选择是运行
svn info
并将结果(或部分结果)放入生成的构件中。然后,代码就可以访问这些信息。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-plugin或maven-release-plugin,它们可以自动更改您的POM文件中的信息并自动处理所有这些事情。
要在您生产的构件中维护元数据,您可以配置所有插件(如ear、war、jar)等,大致如下所示,其中BuildNumber来自Buildnumber-maven-plugin:
当然,如果你真的喜欢使用Maven,你应该使用前面提到的仓库管理器,比如ArtiFactory或Nexus,这会让你的工作变得更轻松。
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
lsmd5eda4#
如前所述,您必须更改POM中的版本。要做到这一点,与发布插件相结合的一种方法是:
使用Git Changelog Maven Plugin