Feb 15, 2006

Maven2 で JAR の Manifest ファイルを設定する方法をメモ

Maven2 の JAR アーカイバ(maven-jar-plugin) における Manifest 関連の設定をメモ。

Manifest 関連の設定方法

JAR アーカイバの Manifest 関連の設定は pom.xml に記述する。

<model>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>jp.in_vitro.dummy.Main</mainClass>
              <packageName>jp.in_vitro.dummy</packageName>
              <addClasspath>true</addClasspath>
              <addExtensions>true</addExtensions>
              <classpathPrefix>lib</classpathPrefix>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
</model>

Manifest 関連の設定項目

設定項目 設定値 解説
addClasspath "true" / "false" "true" が指定された場合、pom.xml の dependencies に従い Class-Path が出力される。
addExtensions "true" / "false" "true" が指定された場合、pom.xml の dependencies に従い拡張情報(各 dependency の詳細情報)が出力される。
classpathPrefix 任意の文字列 addClasspath に "true" が設定された際、各 Classpath エントリに指定された文字列が接頭語として付加される。例えば classpathPrefix に "lib" を指定すると、Class-Path の各エレメントは "lib/commons-logging.jar" の様になる。
mainClass 任意のクラス名(FQCN) JAR のメインクラスを指定する。Manifest ファイルの Main-Class に出力される。
packageName 任意のパッケージ名 JAR のパッケージを指定する。Manifest ファイルの Package に出力される。

Manifest 関連設定の実体

pom.xml で指定した Manifest 関連の設定は maven-archiver (maven-archiver-2.0-beta-3.jar など) にある org.apache.maven.archiver.ManifestConfiguration というクラスが保持する。 ManifestConfiguration には以下のフィールドが用意されていて、ここに設定内容がインジェクションされる。

  private String mainClass;
  private String packageName;
  private String addClasspath;
  private String addExtensions;
  private String classpathPrefix;

TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/Maven/20060215_01.trackback
Post a comment

writeback message: Ready to post a comment.