What's?
Open Libertyを使う時にはMavenプラグイン(もしくはGradleプラグイン)を利用します。
これらを使うとOpen Libertyを含めてパッケージングや実行を行うのですが、この時にどういったランタイム(バージョン)が使われるのか気になったので調べてみました。
今回はMavenプラグインを対象にします。
Liberty Maven Plugin
Open Libertyのドキュメント内で、Liberty Maven Pluginに関する記載はこちらにあります。
Develop with Liberty Tools / Minimum requirements
Open Liberty Maven Pluginではなく、Liberty Maven Pluginです。
こちらのGitHubリポジトリがリンク先として紹介されています。
ざっくりとした使い方は、こちらのガイドを参照するとよいでしょう。
Libery Maven Plugin自体のドキュメントとしては、こちらにあるMarkdownファイルを見ていくことになります。
それで、今回のお題である「Open LibertyのMavenプラグインを使った時にどういったOpen Libertyのランタイムが使われるのか?」という点ですが、共通パラメータのページに記載があります。
runtimeArtifact
がこれに該当し、使用するLibertyのMavenアーティファクトを指定します。
デフォルトはio.openliberty:openliberty-kernel
の最新版が選択されるようです。
Liberty installation configuration / Calculating the runtime artifact
ソースコードではこのあたりですね。
では選択できるLibertyのMavenアーティファクトは?というと、こちらに一覧があります。
グループIDがio.openliberty
であればOpen Liberty、com.ibm.websphere.appserver.runtime
であればWebSphere Libertyのようです。
カーネル、ランタイム、Java EE 8、Jakarta EE 9、Web ProfileやMicroProfileといった各種プロファイル向けのアーティファクトが、Open LibertyおよびWebSphere Libertyごとに並んでいます。
どのランタイムを選ぶかですが、目的に応じたプロファイルのものを選べばいいのかなと迷ったりしそうではあります。
とはいえ、server.xml
のfeatureManager
とfeature
で使用するフィーチャーを指定してもいいと思うので、その場合はカーネルを選べばいいような気はしますね。
runtimeArtifact
の具体的な指定方法はこちらに例が書かれています。
Liberty installation configuration / Using a Maven artifact
以下に一例を。
...
<build>
...
<plugins>
...
<plugin>
<groupId>io.openliberty.tools</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>3.10.3</version>
<configuration>
<runtimeArtifact>
<groupId>io.openliberty</groupId>
<artifactId>openliberty-kernel</artifactId>
<version>24.0.0.7</version>
<type>zip</type>
</runtimeArtifact>
</configuration>
</plugin>
...
</plugins>
...
</build>
...
また、今回のテーマでは蛇足ではありますが、インストール済みのLibertyを指定して構築することもできます。
Liberty installation configuration / Using an existing installation
実行するタイミングでランタイムのバージョンが変わるのも困ると思いますので、明示的に指定するのがよいのかなと思います。