4

複数のブランチのツリーをSVNでチェックアウトし、buildnumberプラグインを使用して、「javasvn」実装プロバイダーでSVNリビジョンを取得します。

特定のブランチを構築しようとすると、Mavenはその特定のブランチのリビジョンではなく、ツリーの最上位フォルダーのリビジョンを取得するようです。

例:
ルートリビジョン番号:100
ルート/ブランチ1リビジョン番号:99
ルート/ブランチ2リビジョン番号:97

私の場合、branch1をビルドするとき、ビルド番号には100ではなく99が必要です。

私はSVN1.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 に答える