Nov 30, 2009

[Maven] Maven2 で依存するライブラリも jar に格納する方法

通常 Java のアプリケーションは複数の jar で構成されることが多い。 log4j、Jakarta Commons、・・・といったライブラリを普通に使うと数十の jar になってしまうこともしばしば。 Java Web Start を使わずに、jar を Web サーバ上に設置してダウンロード→ダブルクリックで実行、としたい場合など複数の jar に分かれていると困ることもある。 Maven2 では maven-shade-plugin を利用することで依存するライブラリも含んだ jar を作成することができる。

Maven Shade Plugin
http://maven.apache.org/plugins/maven-shade-plugin/index.html

maven-shade-plugin の使い方

pom.xml に下記を追記する。 <finalName> には生成する jar のファイル名を、<mainClass> には実行可能なクラスを指定する。

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <finalName>myapp</finalName>
              <transformers>
                <transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>jp.in_vitro.myapp.Main</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

package goal を指定して Maven2 を起動すると、指定したファイル名で dependencies を全て含んだ jar が生成される。

$ mvn clean package

Posted in Maven | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |