概要
Mavenのliberty-maven-pluginを使うと、OpenLiberty(WebSphere Liberty)を使うWebアプリケーションの開発を効率化できます。
このプラグインでできること
- Libertyの導入を自動化できる。pom.xmlに導入したいサーバーの種類(OpenLiberty or WebSphere Liberty)、バージョンなどの情報を書いておけば良い
- LibertyをDev modeで起動することで、pom.xml含むソースコードやLiberty構成ファイル(server.xml)などをエディタで変更した結果をすぐにサーバーへ反映できる
- Eclipseを使わなくてよくVSCodeなどの好きなエディタを利用できる
利用方法
ファイルの準備
pom.xmlにプラグインを追加して、<runtimeArtifact>
にサーバーの種類(OpenLiberty or WebSphere Liberty)、バージョンを記載します。以下はOpenLibertyの例です。
<build>
<plugins>
<plugin>
<groupId>io.openliberty.tools</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>3.3.4</version>
<configuration>
<runtimeArtifact>
<groupId>io.openliberty</groupId>
<artifactId>openliberty-kernel</artifactId>
<version>21.0.0.3</version>
</runtimeArtifact>
</configuration>
</plugin>
</plugins>
</build>
WebSphere Liberty JavaEE8を利用したい場合はこうなります。
<build>
<plugins>
<plugin>
<groupId>io.openliberty.tools</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>3.3.4</version>
<configuration>
<runtimeArtifact>
<groupId>com.ibm.websphere.appserver.runtime</groupId>
<artifactId>wlp-javaee8</artifactId>
<version>21.0.0.3</version>
</runtimeArtifact>
</configuration>
</plugin>
</plugins>
</build>
server.xmlはMavenのプロジェクト構成の場合、src/main/liberty/config
に配置しておきます。特別な記載は必要ありません。以下の例では、<feature>
としてCDIとJAX-RSのフィーチャーを指定しています。
<server description="my server">
<featureManager>
<feature>cdi-2.0</feature>
<feature>jaxrs-2.1</feature>
</featureManager>
<httpEndpoint httpPort="9080" id="defaultHttpEndpoint" host="*"/>
</server>
サーバーの作成と起動
コマンドラインでmvn liberty:dev
というコマンドを実行すると、以下が一気に実行されます。
- アプリケーションのコンパイル
- サーバーの作成、不足したフィーチャーの導入
- Dev modeでLibertyの起動
mvn liberty:dev
利用上のポイント
- サーバーの標準出力(message.log)が
tail -f
で出力される状態になるので、アプリケーションログも標準出力に出力されるようにしておくと良いです。Ctrl+Cで終了できます - Javaソースコードだけでなくpom.xml、logback.xmlなどのリソース、テストコードがエディタで変更されていないか監視され、変更されたタイミングでコンパイル&サーバーへ反映されるので開発をサクサク進められます
-
mvn liberty:dev
で起動中のターミナルでエンターキーを入力するとテストコードを実行できます。単純な単体テストだけでなくLiberty上で稼働するアプリケーションを叩く結合テストを実行することもできます - サーバーは
target/liberty
配下のディレクトリに作成されるのでmvn clean
で再作成できます -
src/main/liberty/config
に配置下ファイルはtarget/liberty/wlp/usr/servers/defaultServer
へコピーされます。JDBCドライバーなどを置いておくとserver.xmlからは以下のような指定で参照できます。
<library id="db2Lib">
<fileset dir="${server.config.dir}" includes="db2jcc4.jar"/>
</library>
- VSCode拡張機能のOpen Liberty Toolsも提供されていますが私の環境では動きが変な時がありました
- Maven以外にGradle用のプラグインもあります