kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

Maven2 配布パッケージの作成

Mavenで配布パッケージを作成する方法を勉強しましたのでメモします。

何も設定しなくても、次のコマンドによって、バイナリのjar形式配布ファイル(ARTIFACTID-VERSION.jar)ができあがりました。ARTIFACTIDとVERSIONは、各々pom.xmlのartifactIdとversionの値になりました。

mvn package

READMEなど、動作には直接関係しないファイルも追加したいと考えました。その場合、Assemblyプラグインを使うようですね。

まずは、Assemblyプラグインを使ってバイナリの配布ファイル(ARTIFACTID-VERSION-bin.tar.gz、ARTIFACTID-VERSION-bin.tar.bz2、ARTIFACTID-VERSION-bin.zip)を作成してみました。これだとファイル形式が変わっただけで、上記のjar形式配布ファイルと大差ないですね。

mvn assembly:assembly -DdescriptorId=bin

次に、配布ファイルに含めるものを明示的に指定してみます。pom.xmlファイルを編集し、追加のXMLファイルを1つ作成しました。

pom.xml

<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptor>src/assemble/bin.xml</descriptor>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

上記のdescriptorパラメータで指定したXMLファイルを作成します。includeパラメータに配布ファイルに含めたいファイルを記述しました。

<?xml version="1.0" encoding="UTF-8"?>

<assembly>
  <id>bin</id>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <includes>
        <include>target/ARTIFACTID-VERSION.jar</include>
        <include>Readme.txt</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>

以上を準備して、次のコマンドを実行すると、必要なファイルを自由に含めたzip形式配布ファイルができあがりました。

mvn assembly:assembly

なお、上記のようにAssembly用のXMLファイルを用意しなくても、README*、LICENSE*、などのファイルはデフォルト設定で配布ファイルに含められるようになっているようです。

また、Assemblyではデフォルトで用意されているdescriptorIdがいくつか(bin, jar-with-dependencies, srcなど)あります。そのどれをデフォルトとして使用するかは、次のように指定できます。

pom.xml

<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>bin</descriptorRef>
            <descriptorRef>jar-with-dependencies</descriptorRef>
            <descriptorRef>src</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>