50

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

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

    project-1.0-SNAPSHOT.jar
    

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

    project-1.0-20090803125803.jar
    

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

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

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

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

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

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

4

6 に答える 6

60

Maven バージョン 2.1.0-M1 以降には、特殊変数が組み込まれていますmaven.build.timestamp

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

詳細については、Mavenのドキュメントを参照してください。


古いバージョンの Maven については、maven-timestamp-pluginまたはbuildnumber-maven-plugin を参照してください。

maven-timestamp-plugin を使用する場合、このようなものを使用して、結果のアーティファクト名を操作できます。

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

そして、buildnumber-maven-plugin のこの構成は、タイムスタンプ値を含む ${timestamp} プロパティを作成する必要があります。このプラグインでversion.propertiesファイルを直接作成する方法はないようです。

<configuration>
   <format>{0,date,yyyyMMddHHmmss}</format>
   <items>
      <item>timestamp</item>
   </items>

</configuration>

これらの 3 つ のサイトもチェックする価値があります。

于 2009-08-03T20:18:07.873 に答える
41

Maven> = 2.1.0-M1のバージョンを使用する場合は、${maven.build.timestamp}プロパティを使用できます。

詳細については、http: //maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variablesを参照してください。

于 2009-08-17T11:00:12.877 に答える
16

UTC ( を使用するときのデフォルト) 以外のタイムゾーンの時間が必要な場合は${maven.build.timestamp}build-helper-maven-plugin. ビルド ヘルパー Maven プラグインのゴールの使用方法については、簡単な例を参照してください。

とにかく、これはGMT-5でタイムスタンプを取得し、アーティファクトの最終的な名前に入れる方法です:

  <build>
      <plugins>
          <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>build-helper-maven-plugin</artifactId>
              <version>1.9.1</version>
              <executions>
                  <execution>
                      <id>timestamp-property</id>
                      <goals>
                          <goal>timestamp-property</goal>
                      </goals>
                      <configuration>
                          <name>current.time</name>
                          <pattern>yyyyMMdd-HHmmss</pattern>
                          <timeZone>GMT-5</timeZone>
                      </configuration>
                  </execution>
              </executions>
          </plugin>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <version>2.4</version>
              <configuration>
                  <finalName>${project.name}-${current.time}</finalName>
              </configuration>
          </plugin>
      </plugins>
  </build>
于 2014-11-06T14:29:41.997 に答える
2

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

于 2009-08-03T21:07:25.667 に答える
1

新しい回答が必要です:)それは現在組み込まれています:http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables

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

于 2016-07-01T06:39:22.090 に答える