Pet*_*ahn 13 maven-2 maven-plugin buildnumber-maven-plugin
我正在尝试将svn.revision添加到项目版本作为内部版本号,但似乎无法这样做.我的jar有正确的名称durin打包,但它安装在我的本地存储库中,就好像$ {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>
Run Code Online (Sandbox Code Playgroud)
问题分为两部分:
您尝试buildNumber在解析之前设置版本,因此它始终是${buildNumber}解决的值而不是解析的值.
而不是试图动态地更改版本,你应该设置buildNumber成finalName在构建元素.这将在本地存储库中创建具有预期名称的工件.
安装插件将忽略finalName并将其部署为1.0.0-SNAPSHOT无论如何,我不知道如何解决这个问题.buildNumber如果您按如下方式配置插件,则会将其添加到Manifest中.
所以你的配置是这样的:
<version>1.0.0-${release.identifier}</version>
...
<build>
<finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
...
</build>
Run Code Online (Sandbox Code Playgroud)我会避免在SNAPSHOT项目中使用内部版本号.
Maven提供SNAPSHOT关键字来表示活动开发中的易变项目.因此,如果您引用具有SNAPSHOT依赖项版本的项目,Maven将自动检查更新并使您的依赖项保持同步.
如果您随后在该版本的末尾添加内部版本号,则必须手动更新依赖项,因此您将失去使用SNAPSHOT后缀的任何好处.
我个人避免在可能的情况下使用内部版本号.如果我必须更新项目,我只是碰撞版本号,或使用像beta-2或的后缀RC2.如果您需要跟踪修订版本SNAPSHOT,我建议将其添加到Manifest,以便您可以检查构建源自何处,但使用标准SNAPSHOT后缀允许Maven正常解析版本.下面的配置显示了如何将修订添加到Manifest.
就您的配置而言,假设您的SCM网址设置正确,我看起来没问题.如果您的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>
Run Code Online (Sandbox Code Playgroud)
在 之后添加buildnumber-maven-plugin:
<plugin>
<groupId>io.github.michaldo</groupId>
<artifactId>nashorn-maven-plugin</artifactId>
<version>0.0.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>eval</goal>
</goals>
<configuration>
<script>
$project.artifact.version = "${buildNumber}";
</script>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
并且buildNumber会通过打包和部署得到认可。
| 归档时间: |
|
| 查看次数: |
21108 次 |
| 最近记录: |