以前の記事で、プロジェクトの成果物をアーカイブにまとめる方法を見ました。 同様の方法で、ソース・コードなどをアーカイブにまとめることも出来ます。
アーカイブの生成方法は「assembly 記述子」というファイルで指定し、事前に定義されている「assembly 記述子」には
- bin
- jar-with-dependencies
- src
- project
の4つがあるのでした。
アーカイブの作成方法
名前的には「src」を使用すれば、ソース・コードをまとめたアーカイブが作成できそうですが *1、 マルチ・プロジェクトの場合にも適用できるように「 project」を使用してアーカイブを作成しましょう。
アーカイブの作成手順は
- 最上位の POM ファイルに設定を追加する
- アーカイブを作成する
です。
最上位の POM ファイルを設定を追加する
フォルダ構造的に最上位の箇所にある POM ファイルに、以下の設定を追加します:
<?xml version="1.0"?> <project> <modelVersion>4.0.0</modelVersion> <groupId>org.sample</groupId> <artifactId>parent</artifactId> <packaging>pom</packaging> <version>1.0</version> <modules> <module>child1</module> <module>child2</module> </modules> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- 以下を追加 --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>project</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build> </project>
少々注意点を:
- <groupId>, <artifactId>, <version> 要素等は適宜読み替えて下さい。
- <packaging>, <modules> 要素はある場合も、ない場合もあります。
- ソース・コードはエンコーディングを指定しておいた方が無難です。 サブプロジェクトがある場合は、そちらも指定して下さい(親 POM ファイルで一括して定義すると楽かと)。
アーカイブを作成する
上記の POM ファイルの設定が出来たら、そのフォルダ上でコマンド・プロンプトから
mvn assembly:assembly
を実行して下さい。 結果として、「target」フォルダ下に
- parent-1.0-project.tar.gz
- parent-1.0-project.tar.bz2
- parent-1.0-project.zip
が作成されます("parent" は上記 POM ファイルの artifactId)。
アーカイブをどう使う?
上記の方法で作成されたアーカイブは、普通に展開(解凍)すれば元のプロジェクトが復元できます。 このアーカイブの使い道は以下のものが考えられます:
- プロジェクトのバックアップ
- (リモート・リポジトリとしてではなく)HP 上からダウンロードするという形式でプロジェクトを公開する
2番目の使い道に関して。 このプロジェクト(の成果物)を使用したい人が、HP からこのアーカイブを「ダウンロード & 解凍」して、プロジェクトのベース・フォルダ上で
mvn install
を実行すると、その PC のローカル・リポジトリ上にライブラリを配備することが出来ます。 これは、前回に見た『リモート・リポジトリに登録されていない Jar ファイルを使う』の別の方法となっています。
*1:シングル・プロジェクトの場合は実際出来るのですが。