我正在尝试在我的项目清单中添加 SVN 修订号。为此,我使用了 Maven 内部版本号插件,并在我的 Super POM 中添加了以下几行:
<!-- Gets the SVN revision number -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<providerImplementations>
<svn>javasvn</svn>
</providerImplementations>
</configuration>
</plugin>
<!-- Add the SVN revision number in the manifest (works on Hudson only) -->
<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>
注意配置:
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
我是故意这样做的,因为如果我有本地修改,“doCheck”会阻止我编译(我想在提交工作之前编译和测试)。
“doUpdate”对我来说也是一个问题,因为我不一定想从存储库更新代码。与上述相同的原因,我想在提交之前进行本地测试(并可能解决冲突)。
我的问题是,在清单中,出现的是:
Implementation-Build: ${buildNumber}
因此该变量不会被解释。我错过了什么?
谢谢
编辑: 问题实际上出在 maven-bundle-plugin 上。我在我的项目中使用它来生成 OSGi 包。
因此,项目的 POM 打包如下:
<packaging>bundle</packaging>
代替:
<packaging>jar</packaging>
我猜这会与 Maven 生命周期相混淆。当我删除 maven-bundle-plugin 时,一切正常。但我无法删除它,因为我的应用程序是 OSGi 应用程序。