我做SVN检查多个分支的树,我使用buildnumber插件通过“javasvn”实现提供程序获取SVN修订版。
当我尝试构建一个特定的分支时,似乎Maven检索到树的顶级文件夹的修订版,而不是该特定分支的修订版。
例如:
根修订号:100
root / branch1修订号:99
root / branch2修订号:97
在我的情况下,当构建branch1时,我需要99来构建数字,而不是100。
我使用SVN 1.7。
以下是我配置插件的方法:
<build>
<finalName>${project.artifactId}-${project.version}-SVN${buildNumber}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<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>
非常感谢任何想法。
感谢
答案 0 :(得分:3)
以下是我们在项目中的表现:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<!-- http://stackoverflow.com/questions/3532135/using-maven-to-output-the-version-number-to-a-text-file -->
<!-- Safety -->
<mkdir dir="${project.build.directory}"/>
<exec executable="svn" output="${basedir}/src/main/filters/svn.properties" dir="..">
<arg value="info"/>
</exec>
<replace file="${basedir}/src/main/filters/svn.properties" token="Last Changed Rev"
value="Last.Changed.Rev"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
在src/main/filters/svn.properties
中输出一行Last.Changed.Rev: 22479
。我们将Last Changed Rev
重命名为Last.Changed.Rev
,因此它是一个有效的变量名称。然后,您可以将其用作其他文件中的过滤器。您可能不需要它作为过滤器,但也许这个例子将帮助您满足您的需求。
答案 1 :(得分:2)
尝试使用默认设置为false的 useLastCommittedRevision 配置。这应该抓取最后提交的修订版而不是pom构建的特定模块上的存储库修订版。