LoginSignup
2
2

More than 5 years have passed since last update.

GlassFish/Payara Embeddedとwarとdomainと起動スクリプトをまとめてパッケージングし配布用zipを作る

Posted at

目的

前回の投稿で、GlassFish/Payara Embeddedとwarのパッケージング方法を検証した。今回は、さらにGlassFish/Payaraのdomainも含めてパッケージングし、配布用zipにするところまでを行う。
GlassFish/Payara Embeddedは、デフォルトではdomainをその都度テンポラリに生成し、使い捨てるようになっている。domainの設定を全てCommandRunnerを使ったコードに落とし込み、起動のたびに一から設定し直すことも可能だが、面倒だ。また、そもそもログインモジュールやJDBCドライバの追加は不可能である。
GlassFish/Payara Embeddedはdomainのディレクトリを指定して起動することができる。この機能を使えば、予め設定済みのdomainを用いることができる。ディレクトリの位置だけコード内で指定しておき、後からその位置にdomainを配置することも可能だが、ビルドのさいに自動的にdomainを含めるようにできたほうが便利だ。
さらに、domainや起動スクリプトや依存しているjar等をまとめてzipにパッケージングし、ビルドするだけで即配布可能な状態にする。

なお、今回の内容をまとめたサンプルプロジェクトをGitHubで公開している。

方法

前回の投稿と同じプロジェクト構成を用いる。

payara-embedded-sample
├── payara-emmbeded-sample-app
└── payara-emmbeded-sample-main

domainと起動スクリプトを構成する

Application Assembler Maven Pluginを使う。

このプラグインの主な目的は、依存ライブラリのリポジトリ化と、それら依存ライブラリのclasspathを設定した起動スクリプトを生成することである。classpath起動スクリプトにはそれに付随して、その他のファイル等をバンドルする機能もある。
まず、payara-emmbeded-sample-mainモジュールにdomainのディレクトリを追加し、以下のような構成にする。

payara-embedded-sample-main
└── src
        └── main
                ├── config
                │      └── domain
                └── java

次にpom.xmlに以下を加える。

pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...
    <build>
        ...
        <plugins>
            ...
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.10</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <configurationDirectory>config</configurationDirectory>
                    <copyConfigurationDirectory>true</copyConfigurationDirectory>
                    <programs>
                        <program>
                            <mainClass>jp.mshackers.payara.embedded.sample.PayaraEmbedded</mainClass>
                            <id>embedded</id>
                        </program>
                    </programs>
                </configuration>
            </plugin>
            ...
        </plugins>
        ...
    </build>
    ...
</project>

これだけで、packageを走らせたときにconfigディレクトリのコピーと起動スクリプトの生成を行ってくれる。

zipにパッケージングする

Assembly Pluginを使うだけなので、特に目新しいところはない。前項に加え、payara-embedded-sample-mainモジュールを以下のように構成する。

payara-embedded-sample-main
└── src
        └── main
                ├── assembly
                │      └── bin.xml
                ├── config
                └── java

bin.xmlにはAssembly Pluginの設定を書く。これはdescriptorと呼ばれる。今回は、特定のディレクトリをzipにパッケージングするだけなので、非常に単純。

bin.xml
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>bin</id>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/appassembler</directory>
        </fileSet>
    </fileSets>
</assembly>

次に、pom.xmlにAssembly Pluginの設定を書く。これも単純で、上記のdescriptorを設定するだけ。

pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...
    <build>
        ...
        <plugins>
            ...
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/bin.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
        ...
    </build>
    ...
</project>

実行環境

$ date
2015年 10月 4日 日曜日 20時55分48秒 JST
$ mvn --version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T20:57:37+09:00)
Maven home: /usr/local/Cellar/maven/3.3.3/libexec
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.5", arch: "x86_64", family: "mac"
$ java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.10.5
BuildVersion:   14F27

関連する記事

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2