9

maven-buildnumber-plugin 1.0ベータ4を使用している<format>間、構成内でタグを使用しない限り、svnリビジョンを取得できるようです。使用<format>して<item>buildnumber</item>タグを付けると、自動インクリメント番号が表示されますが、svnリビジョンに対応しなくなったため、元に戻す方法がわかりません。内でsvnリビジョン番号を使用する方法はあり<format>ますか?ドキュメントはあまり明確ではありません。

4

4 に答える 4

10

buildnumber-maven-pluginはかなり風変わりで、おそらくそれがまだベータ版である理由です。この形式は、Javaメッセージ形式を適用するアイテム専用であり、ほとんどの場合、タイムスタンプとリテラル文字列でのみ役立ちます。タイムスタンプが必要ない場合は、Subversionリビジョン番号を取得するときにformatオプションを使用しないでください。この形式を使用すると、指定したように、SCMバージョン番号ではなく常に1ずつ増加するビルド番号が提供されます。

タイムスタンプが必要な場合、またはビルド番号プラグインとSubversionリビジョンから派生した他のアイテムがある場合は、それぞれを個別に実行します。プラグインの2つの別々の実行を使用して、Subverisonリビジョン番号とビルドタイムスタンプを取得する方法の例を次に示します。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.0-beta-4</version>
    <executions>
        <execution>
            <id>generate-buildnumber</id>
                <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
            <configuration>
                <useLastCommittedRevision>true</useLastCommittedRevision>
                <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
            </configuration>
        </execution>
        <execution>
            <id>generate-timestamp</id>
            <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
            <configuration>
                <format>{0,date,yyyy-MM-dd HH:mm:ss}</format>
                <items>
                    <item>timestamp</item>
                </items>
                <buildNumberPropertyName>buildDateTime</buildNumberPropertyName>
            </configuration>
        </execution>
    </executions>
</plugin>

これを機能させるための鍵は、buildNumberPropertyName要素を使用することです。Javaメッセージ形式の有用性の詳細については、プラグインの使用法ページを確認してください。

于 2010-12-01T23:11:32.020 に答える
3

見た目では違います。フォーマット構成を使用する場合は、デフォルト項目の1つを使用する必要があります。

ここから:

java.text.MessageFormatで指定されたメッセージを指定します。これにより、「アイテム」構成が読み取られます

そしてここから:

java.text.MessageFormatで指定されているように、フォーマットメッセージに対応する項目を指定します。特別なアイテム値は「timestamp」と「buildNumber/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 " );
    }

と:

else
{
    // Check if the plugin has already run.
    revision = project.getProperties().getProperty(
        this.buildNumberPropertyName );
    if ( this.getRevisionOnlyOnce && revision != null)
    {
        getLog().debug( "Revision available from previous execution" );
        return;
    }

それの音によって、あなたは新しい機能を求めています(ちなみに悪い考えではありません)。ここにそのまま提出します。

于 2010-12-01T02:05:50.453 に答える
3

私は同じ問題に遭遇し、しばらくの間、@Jean-RémyRevyによって提案された解決策が機能すると思いましたが、何らかの理由で機能しませんでした。

buildnumber-maven-plugin-1.2で、scmVersionと呼ばれる特別なプロパティのサポートが追加されたことがわかりました。現在のところ、プラグインのWebサイトではGAであると示唆されていますが、v1.2はMavenリポジトリで使用できません。したがって、ソース(http://svn.codehaus.org/mojo/tags/buildnumber-maven-plugin-1.2/)をチェックアウトしてビルドする必要があります($ mvn install)。これにより、プラグインもローカルリポジトリにインストールされます。

この後、これを実行します。

<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>
于 2012-10-14T23:03:50.067 に答える
2

それがプラグイン開発者によって行われたのには説得力のある理由があります。プロジェクトのビルドタイムスタンプを取得するための推奨される方法は次のとおりです。

<project>
  <properties>
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
    <buildDateTime>${maven.build.timestamp}</buildDateTime>    
  </properties>
</project>

したがって、必要なのは、ドキュメントに従ってbuildnumber-maven-pluginを1回呼び出すだけで非常にうまく実行できるリビジョン番号を取得することだけです。

PS(提供されたように)2回ではなく1回実行すると、プラグインが呼び出されるたびに1秒近く節約できます;)

于 2011-11-24T15:27:30.190 に答える