2016-06-21 12 views
3

質問:バージョン番号を含むようにファイルのスナップショットバージョンの名前を変更するにはどうすればよいですか?バージョン番号を含む最新のスナップショットバージョンの名前を変更する方法

私は<version>LATEST</version>を使用して最新バージョンをダウンロードしますが、<destFileName>でどうすれば使用できますか?

${project.dependencies[0].version}私にはバージョンLATESTが与えられます。

<artifactItem> 
    <groupId>my.group</groupId> 
    <artifactId>my.artifact</artifactId> 
    <version>LATEST</version> 
    <type>exe</type> 
    <overWrite>true</overWrite 
    <outputDirectory>target/downloads</outputDirectory> 
    <destFileName>${project.dependencies[0].version}_My_File_Name.exe</destFileName> 
</artifactItem> 

私はスナップショットバージョンを使用していますが、バージョン番号のみを含むようにファイル名を変更したいとします。 (そうでない場合、ファイル名はMy_File_Name-version-20160630.212007-10です)。

+0

ありがとうございます。私はスナップショットバージョンを使用しており、バージョン番号だけを含むようにファイル名を変更したい。 (そうでなければ、ファイル名はMy_File_Name-version-20160630.212007-10です) – lili

答えて

4

あなたはmaven-dependency-pluginの構成でtrueuseBaseVersionを設定する必要があります。

<configuration> 
    <artifactItems> 
     <artifactItem> 
      <groupId>my.group</groupId> 
      <artifactId>my.artifact</artifactId> 
      <version>LATEST</version> 
      <type>exe</type> 
      <overWrite>true</overWrite> 
      <outputDirectory>target/downloads</outputDirectory> 
     </artifactItem> 
    </artifactItems> 
    <useBaseVersion>true</useBaseVersion> 
</configuration> 

このパラメータは、プラグインのバージョン2.7で導入されました。例として、アーチファクトorg.springframework.batch:spring-batch-admin-managerを用い


A bit of explanation、。依存関係の中で"LATEST"をバージョンとして使用している場合、Mavenは設定されたリモートリポジトリからファイルmaven-metadata.xmlをフェッチします。このファイルには、依存関係のgroupId:artifactId用にデプロイされているすべてのバージョンの情報が含まれています。

これは、とりわけ

<?xml version="1.0" encoding="UTF-8"?> 
<metadata modelVersion="1.1.0"> 
    <groupId>org.springframework.batch</groupId> 
    <artifactId>spring-batch-admin-manager</artifactId> 
    <versioning> 
    <latest>1.3.2.BUILD-SNAPSHOT</latest> <!-- This is the LATEST to use! --> 
    <release></release> 
    <versions> 
     <version>1.3.1.BUILD-SNAPSHOT</version> 
     <version>1.3.2.BUILD-SNAPSHOT</version> 
    </versions> 
    <lastUpdated>20150122163642</lastUpdated> 
    </versioning> 
</metadata> 

このようなファイルの例を示し、それは<latest>要素内の最新バージョンが何であるかを宣言します。この場合、最新バージョンは1.3.2.BUILD-SNAPSHOTになります。

しかし、これはSNAPSHOTバージョンです。つまり、同じ1.3.2.BUILD-SNAPSHOTの複数のスナップショットバージョンが実際に存在する可能性があります。それらは、Maven 3 by adding a timestampでファイル名の最後に区別されます。したがって、異なるタイムスタンプを持つ複数の1.3.2-SNAPSHOTを持つことができます。

今のMavenは1.3.2.BUILD-SNAPSHOTは、それがある、1.3.2.BUILD-SNAPSHOTに特異的であることを別のmaven-metadata.xmlを探し、考慮すべきものであることを知っている:

<?xml version="1.0" encoding="UTF-8"?> 
<metadata modelVersion="1.1.0"> 
    <groupId>org.springframework.batch</groupId> 
    <artifactId>spring-batch-admin-manager</artifactId> 
    <version>1.3.2.BUILD-SNAPSHOT</version> 
    <versioning> 
    <snapshot> 
     <timestamp>20150115.230511</timestamp> <!-- This is the timestamp to use! --> 
     <buildNumber>1</buildNumber> 
    </snapshot> 
    <lastUpdated>20150122163642</lastUpdated> 
    <snapshotVersions> 
     <snapshotVersion> 
     <extension>jar</extension> 
     <value>1.3.2.BUILD-20150115.230511-1</value> 
     <updated>20150115230511</updated> 
     </snapshotVersion> 
     <!-- omitted for brevity --> 
    </versioning> 
</metadata> 

このファイルには、特に展開のスナップショットのバージョンの最新のタイムスタンプを宣言<timestamp>要素内にあります。 Mavenはタイムスタンプ付きのアーティファクトを使用してダウンロードします。

だから最終的に:

  • 基本バージョンは1.3.2.BUILD-SNAPSHOT、アーチファクトのスナップショット・バージョンに対応する - この例では。
  • この例では、バージョンは最新のスナップショットのタイムスタンプ付きバージョン1.3.2.BUILD-20150115.230511-1に対応します。

このように、useBaseVersionは、タイムスタンプのないファイルを出力することを許可します。スナップショット版の代わりにリリース版を扱う場合、どちらも同じになります。

+0

私はこのような回答に対して2回以上投票することができれば幸いです! –

+0

ありがとう@ A_Di-Matteo :)!詳細な回答ありがとう! – Tunaki

+0

私はantrunを使って "My_File_Name-version-snapshot.exe"のファイル名を "version-My_File_Name.exe"に持っていく必要があると思いますか? – lili

関連する問題