Application Assembler Maven Pluginのご紹介。
Javaアプリケーションを作る際にめんどくさいのがクラスパスの設定云々。
その辺のめんどくさいあたりをザックリと作ってくれるのがこのプラグインです。
依存するライブラリを収集して、Javaアプリケーションを実行するためのbat/shスクリプトを生成します。
これがあるとバッチ処理などをするコマンドラインアプリを作るのもお気楽になります。
Javaアプリケーションを作る際にめんどくさいのがクラスパスの設定云々。
その辺のめんどくさいあたりをザックリと作ってくれるのがこのプラグインです。
依存するライブラリを収集して、Javaアプリケーションを実行するためのbat/shスクリプトを生成します。
これがあるとバッチ処理などをするコマンドラインアプリを作るのもお気楽になります。
Goals
appassemblerプラグインには3つのゴールがあります。- appassembler:assemble
設定したアプリケーション用のbat/shスクリプトを生成します。 - appassembler:create-repository
appassemblerレポジトリを構築します。 - appassembler:generate-daemons
JSW(Java Service Wrapper)ベースのデーモンを生成します。
使い方
基本設定
appassemblerを利用することを宣言します。また、bat/shスクリプトを生成するプログラムの、
mainClass
(mainクラス名)、name
(スクリプト名)を指定します。プログラムは複数指定することが出来ます。
以前に扱った奇妙な言語たちのための設定を例として取り上げます。
設定例
<project>
・・・・
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<programs>
<program>
<mainClass>st.happy_camper.esoteric.hq9plus.HQ9Plus</mainClass>
<name>hq9plus</name>
</program>
<program>
<mainClass>st.happy_camper.esoteric.brainfuck.Brainfuck</mainClass>
<name>brainfuck</name>
</program>
・・・・
</programs>
</configuration>
</plugin>
</plugins>
・・・・
</build>
・・・・
</project>
実行
依存ライブラリを収集し、bat/shスクリプトを生成
$ mvn package appassembler:assemble
デフォルトではtarget/appassembler/binにスクリプトを生成、target/appassembler/repo以下にMaven2階層形式で依存ファイル群を収集します。
また、
package
フェーズの実行はされないので、事前に実行しておく必要があります。下で紹介する
<executions>
の設定をしておけばpackage
フェーズでassemble
させることができるようになります。設定
よく使う設定、便利な設定を紹介します。その他の設定については、appassembler:assemble、appassembler:create-repository、appassembler:generate-daemonsを参照してください。
package
フェーズでassemble
appassembler:assemble
をいちいち指定するとめんどくさいので、package
フェーズで自動的にassemble
するようにします。設定例
<project>
・・・・
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>assemble</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
・・・・
</plugin>
</plugins>
・・・・
</build>
・・・・
</project>
依存ライブラリをlibディレクトリに出力
デフォルトではいかにもMaven2っぽいディレクトリ階層に依存ライブラリが出来てしまうので、一般的なlibディレクトリに出力できるようにします。設定例
<project>
・・・・
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<repositoryLayout>flat</repositoryLayout>
<repositoryName>lib</repositoryName>
・・・・
</configuration>
</plugin>
</plugins>
・・・・
</build>
・・・・
</project>
JVM引数
JVMのメモリ設定などをスクリプトに含めておくことができます。設定例
<project>
・・・・
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<extraJvmArguments>-server -Xmx512m</extraJvmArguments>
・・・・
</configuration>
</plugin>
</plugins>
・・・・
</build>
・・・・
</project>
含めておかなくても、実行時に指定することが出来ます。
$ JAVA_OPTS='-server -Xmx512m' bin/ws whitespace.wsc