2011年10月31日月曜日

[Java][Maven] 今さらかもだけどMaven入門してみた(5) - パッケージング

今回は、次のような構成にしてみた。
-bin/
  -App.bat: 起動用のバッチファイル
-config/
  -各種設定ファイル
-lib/
  -作成したJar
  -依存しているJar
実際には大体こちらの通り。
http://d.hatena.ne.jp/cnaos/20100102/1262430319
Jarの作成にはmaven-jar-pluginを、bin, config, libの各ディレクトリの作成とリソースのコピー、batファイルの作成にcodehausのappassembler-maven-pluginを使った。
手順は次の通り。

  1. appassemblerなどのリファレンスを見ながら、pom.xmlを書く。
  2. Run As > Maven buildでビルドする(このとき、goalにはpackageを指定する)
  3. 成果物をみて、期待と違えば再度設定する
最終的にできたpom.xmlは以下の通り。
<build>
        <!-- src/main/configはデフォルトではリソースとして登録されていないので、手動で追加
            (src/main/resourcesはデフォルトで登録されている) -->
        <resources>
            <resource>
                <directory>${basedir}/src/main/config</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>jp.example.App</mainClass>
                            <packageName>jp.example</packageName>
                        </manifest>
                    </archive>
                    <!-- 設定ファイルをJarから除外 -->
                    <excludes>
                        <exclude>*.properties</exclude>
                        <exclude>*.xml</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.1.1</version>
                <configuration>
                    <programs>
                        <program>
                            <mainClass>jp.example.App</mainClass>
                            <name>App</name>
                        </program>
                    </programs>
                    <!-- repository作成 -->
                    <repositoryLayout>flat</repositoryLayout>
                    <repositoryName>lib</repositoryName>
                    <!-- 設定ファイル -->
                    <configurationDirectory>config</configurationDirectory>
                    <copyConfigurationDirectory>true</copyConfigurationDirectory>
                    <configurationDirectory>config</configurationDirectory>
                    <!-- コンソールを出すか -->
                    <showConsoleWindow>true</showConsoleWindow>
                </configuration>
                <!-- packageフェーズで実行されるようにする -->
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

0 件のコメント: