我正在寻找一个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 Repo中,所以我被卡住了。任何帮助都会很棒。
答案 0 :(得分:2)
使用Nexus或Artifactory托管您自己的maven存储库非常简单。你也可以使用Artifactory cloud version(我不隶属于他们......),这样可以解决你的问题。顺便说一句 - 一个使用Apache的简单服务器也可以做到这一点,但需要做更多工作..,
关于插件:如果部署快照应用程序,则每个应用程序都会根据时间戳获取自己的版本。
对于版本,另一个选项是运行svn info
并将结果(或部分)放入生成的工件中。然后可以通过代码访问该信息。
答案 1 :(得分:2)
如果您更改工件的版本,则pom必须反映更改,否则会导致无法再现。
如果你在构建过程中改变某些东西(比如添加版本,无论如何),它必须反映在pom文件中。否则,您无法使用相同的结果重现构建过程。
您已写过不要更改pom文件,而是保留单独的文件。所以问题是:为什么不使用pom文件本身,因为它的目的正是为了那个目的。
此外,maven-buildmetadata-plugin提到的所有信息都可以通过使用现有的maven插件(如build-helper-maven-plugin,buildnumber-maven-plugin)来实现。
可以使用提供SCM修订号(SVN或GIT哈希)等信息的buildnumber-maven-plugin来使用SCM信息。
另一方面,如果您不想手动更改pom文件,可以使用versions-maven-plugin或maven-release-plugin自动更改pom文件中的信息并处理所有这些信息事情自动发生。
要在生产的工件中维护元数据,您可以配置所有插件(如ear,war,jar)等等或多或少像buildbumber来自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,这会让生活更轻松。
答案 2 :(得分:0)
我只想补充一下(尽管这个问题已有5年历史了,而且已经有了一个可以接受的答案)Buildmetadata Maven Plugin最初在Maven Repo上不可用,但是现在(自2013年底开始) 。想尝试一下的人可以在以下位置找到工件:
请注意,由于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上获得: