4

我做 SVN 检查多个分支的树,并使用 buildnumber 插件通过“javasvn”实现提供程序获取 SVN 修订版。

当我尝试构建特定分支时,Maven 似乎检索树的顶级文件夹的修订版,而不是该特定分支的修订版。

例如:
根修订号:100
根/分支1 修订号:99
根/分支2 修订号:97

就我而言,在构建分支 1 时,我需要 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>

非常感谢任何想法。
谢谢

4

2 回答 2

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所以它是一个有效的变量名。然后,您可以将其用作其他文件中的过滤器。您可能不需要它作为过滤器,但也许这个示例会帮助您满足您的需求。

于 2012-12-19T21:36:38.300 回答
2

尝试使用默认设置为 false的useLastCommittedRevision配置。这应该获取最后提交的修订,而不是 pom 构建所在的特定模块上的存储库修订。

于 2015-08-07T18:37:32.820 回答