web-dev-qa-db-ja.com

Mavenアーティファクトにタイムスタンプ情報を追加するにはどうすればよいですか?

Antの代わりにMaven2を使用するように大規模なビルドシステムをアップグレードしていますが、2つの関連する要件があります。

  1. タイムスタンプされたアーティファクトを生成する必要があるため、ビルドする代わりにpackageフェーズ(またはどこでも)の一部

    project-1.0-SNAPSHOT.jar
    

    私たちは構築する必要があります

    project-1.0-20090803125803.jar
    

    (どこ 20090803125803は、jarが作成されたときのYYYYMMDDHHMMSSタイムスタンプにすぎません)。

    唯一の実際の要件は、タイムスタンプが生成されたファイルのファイル名の一部であることです。

  2. 同じタイムスタンプを、生成されたjar内のversion.propertiesファイル内に含める必要があります。

この情報は、実行時に生成されるpom.propertiesに含まれます。例:mvn packageがコメントアウトされています:

#Generated by Maven
#Mon Aug 03 12:57:17 PDT 2009

どこから始めるかについてのアイデアは役に立ちます!ありがとう!

37
Ryan

この投稿(特に以下の部分)も、この問題に対して非常に有用で実用的です。

Mavenを使用したプロパティファイルでのバージョン番号とビルド時間のスタンプ

ポンポンはこのようになります

...
<properties>

        ....

        <!-- Timestamp of build  -->
        <timestamp>${maven.build.timestamp}</timestamp>
        <maven.build.timestamp.format>yyyy_MM_dd_HH_mm</maven.build.timestamp.format>

</properties>

...

<build>
        <finalName>${project.artifactId}-${project.version}-${timestamp}</finalName>

        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                ....
            </plugin>
        </plugins>
</build>
....

パッケージ名はMyProject-1.0. 0-2015_03_02_13_46.war

8
mcvkr

SNAPSHOTプロジェクトがデプロイされると、 deploy plugin でオーバーライドしない限り、デフォルトでタイムスタンプが使用されます。一意のタイムスタンプを取得していない場合は、おそらくMavenリポジトリの構成に依存しています。ただし、他の回答にあるように、リリースにはタイムスタンプまたはビルド番号プラグインを使用してください。

2
Rich Seller

より新しい答えが必要です:)これは現在ビルドされています: http://maven.Apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables

使用する ${maven.build.timestamp}

1
Jan