如何在Maven中获取特定分支的SVN构建数量

时间:2012-12-09 16:24:20

标签: java svn maven branch

我做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>

非常感谢任何想法。
感谢

2 个答案:

答案 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构建的特定模块上的存储库修订版。