我找到了这篇优秀的博客文章,解释了如何在SVN和Git中使用构建号插件的不同配置文件。由于我只使用Git,所以我将插件部分复制到了我的build标签中,而没有创建一个新的配置文件。
当我运行“mvn package”命令时,它告诉我:
[INFO] --- buildnumber-maven-plugin:1.0:create (default) @ sherd ---
[INFO] Storing buildNumber: 2011-08-04_21-48_stivlo at timestamp: 1312487296631
看起来不错,但我想知道,它存储在哪里?"git status"没有检测到任何新文件,似乎它也不在target/中(target/在我的.gitignore中)。
也许我需要更改配置以将构建号存储在文件中?如何使用构建号值?
感谢Michael-O的提示,我阅读了有关Maven入门指南中如何过滤资源文件的章节。我在src/main/resources/properties/application.properties中创建了一个文件application.properties,并填写了以下内容:
# application properties
application.name=${pom.name}
application.version=${pom.version}
application.build=${buildNumber}
我已经将以下XML片段添加到我的构建部分中:
<resources>
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
</resource>
</resources>
当我在命令行中调用"mvn package"时,该属性文件会保存在target/classes/properties/application.properties中,例如以下内容:
# application properties
application.name=Sherd Control Panel
application.version=1.0.1-SNAPSHOT
application.build=2011-08-05_05-55_stivlo
命令行上一切正常,但是m2eclipse出现构建错误:
05/08/11 6.05.03 CEST: Build errors for obliquid-cp;
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project
sherd: Cannot get the branch information from the scm repository :
Exception while executing SCM command.
由于某种原因,m2eclipse尝试连接到我的仓库,但无法连接,因为它是通过SSH和私钥访问的Git仓库。我想知道是否可以告诉m2eclipse不连接到Git。
经过更多挖掘,我发现了revisionOnScmFailure选项,将其设置为true,现在m2eclipse也能正常工作了。供参考,这是我使用的buildnumber maven插件的完整配置(位于pom.xml中的build/plugins部分)。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<revisionOnScmFailure>true</revisionOnScmFailure>
<format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
<items>
<item>timestamp</item>
<item>${user.name}</item>
</items>
</configuration>
</plugin>