Maven でアプリケーション実行用バッチファイルを作る

appassembler-maven-plugin

Maven で各環境に応じたアプリケーション実行用のバッチファイルを作成するにはMojo project にて提供されている appassembler-maven-plugin を利用します。
http://mojo.codehaus.org/appassembler/

単純な例

プロジェクト作成。

> mvn archetype:create -DgroupId=etc9.app -DartifactId=app


app/pom.xml を以下のように編集します。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <version>1.1</version>
        <configuration>
          <programs>
            <program>
              <mainClass>etc9.app.App</mainClass>
              <name>app</name>
            </program>
          </programs>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>


実行してみます。

> mvn package appassembler:assemble


target 内の構成はこんな感じになります。デフォルトでWindows用のbatとshが作成されます。

app
└─target
    ├─appassembler
    │  ├─bin
    │  │├─app
    │  │└─app.bat
    │  └─repo
    │      └─etc9
    │          └─app
    │              └─app
    │                  └─1.0-SNAPSHOT
                            └─app-1.0-SNAPSHOT.jar


作成されたバッチファイルを実行できます。

> target/appassembler/bin/app.bat
Hello World!

設定を少し変更

  • mvn package で実行されるようにする
  • JVMの拡張引数を設定する
  • jarをlibフォルダに作成する

の変更をしてみます。

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <version>1.1</version>

        <!-- packageスコープで実行されるようにする -->
        <executions>
          <execution>
            <goals>
              <goal>assemble</goal>
            </goals>
            <phase>package</phase>
          </execution>
        </executions>

        <configuration>
          <!-- JVM 引数を指定(EXTRA_JVM_ARGUMENTS) -->
          <extraJvmArguments>-Xms512m</extraJvmArguments>

          <!-- jarをlibディレクトリに出力 -->
          <repositoryLayout>flat</repositoryLayout>
          <repositoryName>lib</repositoryName>

          <programs>
            <program>
              <mainClass>etc9.app.App</mainClass>
              <name>app</name>
            </program>
          </programs>
        </configuration>
      </plugin>
    </plugins>
  </build>


同様に実行できます。

> mvn package
> target/appassembler/bin/app.bat
Hello World!


作成されるディレクトリ構成は以下のようになります。

app
└─target
    ├─appassembler
    │  ├─bin
    │  │├─app
    │  │└─app.bat
    │  └─lib
            └─app-1.0-SNAPSHOT.jar