我在寻找一个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/
这个插件的主要要求是:
pom.xml
和运行Maven添加此插件)pom.xml
文件摆在首位应用)到目前为止,我只发现了maven-buildmetadata-pluging但不幸的是它不是在Maven的回购,所以我坚持。任何帮助将是巨大的。
如果你改变你的神器版本的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它使生活更轻松已经提到。
托管自己的Maven仓库是很容易的,无论是使用Nexus或Artifactory。您也可以使用Artifactory cloud version(我没有与他们关联......),所以它可能会解决你的问题。顺便说一句 - 与Apache一个简单的服务器的伎俩为好,但有更多的工作..,
关于插件:如果部署快照的应用则每个获取基于时间戳它自己的版本。
对于释放另一种选择是运行svn info
并把结果(或它的一部分)到所生成的伪影。所述信息然后可以由代码访问。
我只是想补充(虽然问题是5岁,已经有一个公认的答案),该Buildmetadata Maven Plugin不可用的Maven的回购在第一,但它现在是(自2013年底)。想谁的人给它一个尝试寻找神器在以下位置:
请注意,该名称已经从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上: