Java maven buildnumber插件svn修订版仅在不使用格式时可用
在使用maven buildnumber插件1.0 beta 4时,我似乎可以获得svn版本,除非在配置中使用Java maven buildnumber插件svn修订版仅在不使用格式时可用,java,maven-2,build-automation,buildnumber-maven-plugin,Java,Maven 2,Build Automation,Buildnumber Maven Plugin,在使用maven buildnumber插件1.0 beta 4时,我似乎可以获得svn版本,除非在配置中使用标记。一旦我使用和buildnumber标记,我会得到一个自动递增的数字,但它不再对应于svn修订版,我不知道如何取回它。是否有办法在中使用svn修订号?文档不是很清楚。从外观上看,不是。如果使用格式配置,则必须使用其中一个默认项 发件人: 指定由指定的消息 java.text.MessageFormat这会触发 要读取的“项目”配置 然后从: 指定相应的项目 格式消息,由指定 java
标记。一旦我使用
和buildnumber
标记,我会得到一个自动递增的数字,但它不再对应于svn修订版,我不知道如何取回它。是否有办法在
中使用svn修订号?文档不是很清楚。从外观上看,不是。如果使用格式配置,则必须使用其中一个默认项
发件人:
指定由指定的消息
java.text.MessageFormat这会触发
要读取的“项目”配置
然后从:
指定相应的项目
格式消息,由指定
java.text.MessageFormat。特别项目
值为“时间戳”和
“建筑编号/d*”
另外,如果您查看mojo的代码,有几件事情支持这一点:
if ( format != null )
{
if ( items == null )
{
throw new MojoExecutionException(
" if you set a format, you must provide at least one item, "
+ "please check documentation " );
}
以及:
听上去你是在要求一个新功能(顺便说一句,这个主意不错)。我会这样提交。buildnumber maven插件非常古怪,这可能就是它仍然是测试版的原因。该格式仅适用于您希望应用Java消息格式的项目,在大多数情况下,它仅适用于时间戳和文本字符串。如果您不需要时间戳,那么在获取Subversion版本号时不要使用format选项。如果您使用该格式,那么正如您所指出的,它将为您提供一个始终递增1的内部版本号,而不是SCM版本号 如果您确实需要时间戳或从buildnumber插件以及Subversion版本派生出其他项,请将每个项作为单独的执行来执行。下面是一个示例,说明如何使用插件的两次单独执行来获取Subversion修订号和构建时间戳:
org.codehaus.mojo
更多关于Java消息格式有用性的信息,请参见第页。插件开发人员之所以这么做,有一个令人信服的原因。获取项目构建时间戳的推荐方法如下:
<project>
<properties>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
<buildDateTime>${maven.build.timestamp}</buildDateTime>
</properties>
</project>
yyyy MM dd HH:MM:ss
${maven.build.timestamp}
因此,您所需要的只是获得一个修订号,根据其文档,只需调用buildnumber maven插件就可以很好地完成
另外,每次调用插件时,由两次执行改为一次执行(如提供的)可节省近1秒的时间;) 我确实遇到了同样的问题,有那么一会儿我认为@Jean-Rémy Revy建议的解决方案是可行的……但出于某种原因,它没有奏效
事实证明,在buildnumber-maven-plugin-1.2中,他们添加了对一个名为scmVersion的特殊属性的支持。到目前为止,maven存储库中还没有v1.2版本,尽管插件的网站表明它是GA版本。因此,您需要检查源代码(http://svn.codehaus.org/mojo/tags/buildnumber-maven-plugin-1.2/ )并构建它($mvn安装)。这也将在您的本地存储库中安装插件
在此之后,只需执行以下操作:
org.codehaus.mojo
buildnumber maven插件
1.2
验证
创造
{0,日期,yyyy-MM-dd HH:MM:ss}.{1}
时间戳
SCM版本
您是否在pom中设置了开发人员scm?@Steven我认为buildnumber插件没有使用该功能。上次我使用它时(大约一年前),它刚刚启动了一个svn提交
过程,所以文件系统中的svn信息就是使用的。但是,是的,有一个SCM集合,它可以工作,除非我指定了格式和项。我不清楚,因为他吃了我的xml。修正了。谢谢你深入研究,我希望有人会告诉我我做错了什么。有时当我问一个问题时:“不,你不能那样做”是不够的:)它似乎不支持scmBranch
作为一个特殊项目。聪明。我可以看到它也被用来获取scmBranch
。
<project>
<properties>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
<buildDateTime>${maven.build.timestamp}</buildDateTime>
</properties>
</project>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<format>{0,date,yyyy-MM-dd HH:mm:ss}.{1}</format>
<items>
<item>timestamp</item>
<item>scmVersion</item>
</items>
</configuration>
</plugin>