sti*_*vlo 20 build maven-plugin maven buildnumber-maven-plugin
我有一个使用Spring Framework和Git的Java项目,我想显示一个内部版本号.我找到了Build Number Maven插件.使用Git,内部版本号是一个Git哈希.我不喜欢这个,我认为约会更有表现力.
我发现这篇优秀的博客文章解释了如何使用不同的SVN和Git配置文件编号插件.由于我只使用Git,而不是创建新的配置文件,我只是在我的构建标记中复制了插件部分.
当我运行"mvn package"时,它告诉我:
[INFO] --- buildnumber-maven-plugin:1.0:create (default) @ sherd ---
[INFO] Storing buildNumber: 2011-08-04_21-48_stivlo at timestamp: 1312487296631
Run Code Online (Sandbox Code Playgroud)
哪个看起来不错,但我想知道,它存放在哪里?"git status"没有检测到任何新文件,它似乎不在目标/中(目标/在我的.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}
Run Code Online (Sandbox Code Playgroud)
我在构建部分中添加了以下XML代码段:
<resources>
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
</resource>
</resources>
Run Code Online (Sandbox Code Playgroud)
现在,当我从命令行"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
Run Code Online (Sandbox Code Playgroud)
从命令行一切正常,但是,叹息,m2eclipse给出了Build错误:
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.
Run Code Online (Sandbox Code Playgroud)
由于某种原因,m2eclipse尝试连接到我的存储库,但它不能,因为它是一个使用SSH和私钥访问的Git存储库.我想知道我是否可以告诉m2eclipse不要连接到Git.
经过多次挖掘后,我找到了关于revisionOnScmFailure的选项,将其设置为true,现在m2eclipse也可以工作.作为参考,这里是我使用的buildnumber maven插件的完整配置(它位于build/plugins部分的pom.xml中).
<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>
Run Code Online (Sandbox Code Playgroud)
Tva*_*roh 10
你不应该设置revisionOnScmFailure选项true,它不期望一个布尔值.将它设置为SCM不可用时要使用的修订字符串,如同na或类似.对于您的情况并不重要,因为您覆盖了内部版本号格式,但它会更正确.
请参阅buildnumber-maven-plugin文档.
| 归档时间: |
|
| 查看次数: |
31903 次 |
| 最近记录: |