gpt4 book ai didi

maven-2 - 我可以使用 buildnumber-maven-plugin 设置项目版本吗?

转载 作者:行者123 更新时间:2023-12-02 09:01:45 30 4
gpt4 key购买 nike

我正在尝试将 svn.revision 作为内部版本号添加到项目版本中,但似乎无法这样做。我的 jar 在打包期间具有正确的名称,但它安装在我的本地存储库中,就好像在设置版本时 ${buildNumber} 未定义。

我得到 foo-1.0.0-SNAPSHOT-${buildNumber} 而不是 foo-1.0.0-SNAPSHOT-304

知道我做错了什么或者对项目版本添加修订是一个坏主意吗?感谢您的帮助。

<project>
...
<version>1.0.0-${release.identifier}-${buildNumber}</version>
<properties>
<release.identifier>SNAPSHOT</release.identifier>
</properties>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<executions>
<execution>
<id>useLastCommittedRevision</id>
<goals>
<goal>create</goal>
</goals>
<configuration>
<useLastCommittedRevision>true</useLastCommittedRevision>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
...
</project>

最佳答案

问题有两个部分:

  1. 您尝试在解析之前将 buildNumber 设置到版本中,因此它始终是 ${buildNumber} 而不是解析后的值。

    您应该将 buildNumber 设置到构建中的 finalName 元素中,而不是尝试动态更改版本。这将在本地存储库中创建具有预期名称的工件。

  2. 安装插件将忽略 finalName 并将其部署为 1.0.0-SNAPSHOT 无论如何,我不知道有什么方法可以解决这个问题。如果您按如下方式配置插件,则 buildNumber 将添加到 list 中。

    所以你的配置会是这样的:

    <version>1.0.0-${release.identifier}</version>
    ...
    <build>
    <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
    ...
    </build>
<小时/>

我会避免在 SNAPSHOT 项目上使用内部版本号。

Maven 提供了 SNAPSHOT 关键字来表示活跃开发中的不稳定项目。因此,如果您引用具有 SNAPSHOT 依赖项版本的项目,Maven 将自动检查更新并保持您的依赖项同步。

如果您随后将内部版本号添加到该版本的末尾,则必须手动更新依赖项,因此您将失去使用 SNAPSHOT 后缀带来的任何好处。

无论如何,我个人都会尽可能避免使用内部版本号。如果我必须更新项目,我只需更改版本号,或使用 beta-2RC2 等后缀。如果您需要跟踪 SNAPSHOT 中的修订,我建议将其添加到 list 中,以便您可以检查构建的来源,但使用标准 SNAPSHOT 后缀让Maven正常解析版本。下面的配置显示了如何将修订添加到 list 中。

就您的配置而言,假设您的 SCM url 设置正确,我认为一切正常。如果您的 POM 中没有 SCM 配置,则可能是问题所在。

您可以使用 -X 运行并检查插件的任何输出,以表明它没有设置属性的原因吗?

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>0.9.4</version>
<executions>
<execution>
<id>useLastCommittedRevision</id>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.1</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Implementation-Build>${buildNumber}</Implementation-Build>
</manifestEntries>
</archive>
</configuration>
</plugin>

关于maven-2 - 我可以使用 buildnumber-maven-plugin 设置项目版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1230015/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com