今回はMaven Jar Pluginを見てみます。
主に
JWS(Java Web Start)などで配布するjarファイルへの署名もこのプラグインで行うことができます。
主に
<packaging>jar</packaging>
の時のpackage
フェーズ担当です。JWS(Java Web Start)などで配布するjarファイルへの署名もこのプラグインで行うことができます。
Goals
Jarプラグインには4つのゴールがあります。jar:jar
メインのクラスファイル、リソースをjarにまとめます。jar:test-jar
テストのクラスファイル、リソースをjarにまとめます。jar:sign
jarファイルに署名します。jar:sign-verify
署名したjarファイルを検証します。
使い方
メインのクラスファイル、リソースをjarにまとめる
$ mvn jar:jar
<packaging>jar</packaging>
の場合package
フェーズに紐付けられているので、フェーズの指定をすれば実行できます。$ mvn package
テストのクラスファイル、リソースをjarにまとめる
$ mvn jar:test-jar
jarファイルに署名する
$ mvn jar:sign -Dkeystore=/path/to/your/keystore -Dstorepass=yourstorepassword -Dalias=youralias
引数である
keystore
、storepass
、alias
については、jarsigner - JAR 署名および検証ツールを参照してください。署名したjarファイルを検証する
$ mvn jar:sign-verify
設定
よく使う設定、便利な設定を紹介します。その他の設定については、jar:jar、jar:test-jar、jar:sign、jar:sign-verifyを参照してください。
includes / excludes
jar/test-jarファイルに含める/除外するファイルパターンを指定します。設定例
<project>
・・・・
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
・・・・
</build>
・・・・
</project>
archive/manifest/mainClass
実行可能jarファイルを作成する場合のmainクラスを指定します。設定例
<project>
・・・・
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>st.happy_camper.sample.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
・・・・
</build>
・・・・
</project>
<archive>
タグによる設定では、他にもManifestファイルの設定などができるようになっています。その他の設定についてはMaven Archiver、Guide to Working with Manifestsを参照してください。
package
フェーズに署名もする
署名つきのjarファイルを生成する場合、別途mvn
コマンドを実行しなくてもいいようにpackage
フェーズにjar:sign
ゴールを実行するようにします。設定例
<project>
・・・・
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>/path/to/your/keystore</keystore>
<alias>youralias</alias>
<storepass>yourstorepassword</storepass>
<verify>true</verify>
</configuration>
</plugin>
</plugins>
・・・・
</build>
・・・・
</project>
上記設定の
<goal>
にtest-jar
を加えれば、テストのjarファイルも同時に出力、などということもできます。