前回、実行可能 Jar ファイルの作成の仕方を見ました。
しかしこれだけでは、作成された assembly の名前に必ず "-jar-with-dependencies.jar" という拡張子(?)が付いてしまって、チョット不格好な感じがします。 なので、今回は assembly の名前を変更する方法を模索してみましょう。
<finalName> を変更する (ゴールのパラメータを設定する)
まず、Assembly Plugin に定義されているゴール(assembly:assembly, assembly:attached)に指定できるパラメータを見てみると、 <finalName> というものがあったので、これを変更してみましょう。
具体的な変更の仕方は、<configuration> 要素下に要素名が "finalName" の要素を付け加えて、子テキストに使用したい名前を指定します:
<project> ... <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <finalName>s</finalName> <!-- finalName を指定 --> ... </configuration> </plugin> </plugins> </build> </project>
この設定で assembly を作成すると、
s-jar-with-dependencies.jar
という名前の Jar ファイルが作成されます。 うーむ。
assembly 記述子を作成する
<finalName> を変えるだけでは assembly の名前を変えることは出来ないようなので、assembly 記述子 (assembly descriptor) を新たに作成してみましょう。 手順は
- assembly 記述子を作成する
- POM ファイルで assembly 記述子を指定する
です。
まず assembly 記述子を作成します。 assembly の作成の仕方は jar-with-dependencies の場合と同じでよいので、jar-with-dependencies の assembly 記述子(Predefined Descriptor に載ってます)をそのまま使いましょう。 ただし、<id> の子テキストを assembly 拡張子(?)に使用したい文字列にします(ここでは "exe"):
<assembly> <id>exe</id> <!-- ここだけ変更 --> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <dependencySets> <dependencySet> <outputDirectory></outputDirectory> <outputFileNameMapping></outputFileNameMapping> <unpack>true</unpack> <scope>runtime</scope> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>target/classes</directory> <outputDirectory></outputDirectory> </fileSet> </fileSets> </assembly>
これを、例えば "exe.xml" というファイル名で作成し、Maven2 プロジェクト内の「src/assembly」フォルダ下に配置します。
次に、POM ファイルでこの assembly 記述子を指定します。
<project> ... <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <finalName>s</finalName> <descriptors> <descriptor>src/assembly/exe.xml</descriptor> <!-- assembly 記述子を指定 --> </descriptors> ... </configuration> </plugin> </plugins> </build> </project>
<descriptorRefs> 要素は削除して下さい*1。
これで設定が完了したので、assembly を作成してみましょう。 すると、
s-exe.jar
という Jar ファイルが作成されます。 パチパチ。
バージョンを付け加える (プロパティの使用)
成果物のバージョンは結構大事なので、Jar ファイル名にバージョンを付け加えてみましょう。
これには、POM ファイルの <finalName> の箇所を少しいじります。
<project> ... <version>1.0</version> ... <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <finalName>s-${version}</finalName> <!-- プロパティを使って指定 --> <descriptors> <descriptor>src/assembly/exe.xml</descriptor> </descriptors> ... </configuration> </plugin> </plugins> </build> </project>
assembly を作成してみると
s-1.0-exe.jar
という Jar ファイルが作成されます。 <finalName> 要素の子テキストに含まれている ${version} の部分は <project> 要素下の <version> 要素の子テキストで置き換えられます。 まぁ、こんな感じで。
Apache Maven 2.0入門 Java・オープンソース・ビルドツール
- 作者: 野瀬直樹,横田健彦
- 出版社/メーカー: 技術評論社
- 発売日: 2006/12/13
- メディア: 大型本
- 購入: 8人 クリック: 141回
- この商品を含むブログ (97件) を見る
*1:ちなみに、<descriptorRefs> 要素を残しておけばそれに対応した assembly が作成されます。