これは、なにをしたくて書いたもの?
Jakarta EE PlatformおよびProfileおよびMicroProfileで使うAPIのJARやBOMについて、少しまとめておきたいと思いまして。
ここでは、Jakarta Servletといった個々の仕様の話よりも、Web Profileといったある程度の仕様をひとまとめに扱うものを対象にします。
なので、Jakarta EE PlatformおよびProfileです。
バージョンに依存するものはJakarta EE 10とMicroProfile 6.1とします。
Jakarta EE PlatformおよびProfile
まずはJakarta EEから。
Jakarta EEのPlatformおよびProfileについては、Platform、Web Profile、Core Profileの3つがあります。
- Jakarta EE Platform | The Eclipse Foundation
- Jakarta EE Web Profile | The Eclipse Foundation
- Jakarta EE Core Profile | The Eclipse Foundation
Jakarta EE 10での各ページはこちら。
- Jakarta EE Platform 10 | The Eclipse Foundation
- Jakarta EE Web Profile 10 | The Eclipse Foundation
- Jakarta EE Core Profile 10 | The Eclipse Foundation
ページ内には、これらをひとまとめにしたJARへの参照が書かれています。
たとえば、Web Profileでいえば以下をdependencies
に追加することでWeb Profileで使えるAPI仕様をまとめて取り込めます。
<dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-web-api</artifactId> <version>10.0.0</version> <scope>provided</scope> </dependency>
ところでBOMに関する記述が見当たらないのですが、jakartaee-bomというものがあります。
https://search.maven.org/search?q=a:jakarta.jakartaee-bom
BOMなのでimport
して個々のAPI仕様をdependencies
に追加していくことになります。
<dependencyManagement> <dependencies> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-bom</artifactId> <version>10.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <scope>provided</scope> </dependency> </dependencies>
これらのAPIのJARやBOMは、以下のGitHubリポジトリーにあるようです。
GitHub - jakartaee/jakartaee-api: jakartaee-api
MicroProfile
続いて、MicroProfileです。
各バージョンのページはこちら。
MicroProfile 6.0以降は、Jakarta EE 10が必要です。
MicroProfileにもBOMがあるのですが、、こちらのGitHubリポジトリーにあるようです。
使い方はREADME.md
に書かれているのですが、2つの使い方があります。
ひとつは、BOMを単体でdependencies
に突っ込みます。scope
がprovided
になっているところがポイントです。
<dependencies> <dependency> <groupId>org.eclipse.microprofile</groupId> <artifactId>microprofile</artifactId> <version>6.1</version> <type>pom</type> <scope>provided</scope> </dependency> </dependencies>
これで指定したMicroProfileのバージョン(ここでは、6.1)に含まれるすべてのAPI仕様が依存関係に追加されます。
mvn dependency:tree
で見てみます。
$ mvn dependency:tree
こんな感じになりました。
[INFO] --- dependency:3.6.1:tree (default-cli) @ xxxxx --- [INFO] org.xxxxx:xxxxx:war:0.0.1-SNAPSHOT [INFO] \- org.eclipse.microprofile:microprofile:pom:6.1:provided [INFO] +- jakarta.platform:jakarta.jakartaee-core-api:jar:10.0.0:provided [INFO] | +- jakarta.ws.rs:jakarta.ws.rs-api:jar:3.1.0:provided [INFO] | +- jakarta.json:jakarta.json-api:jar:2.1.0:provided [INFO] | +- jakarta.json.bind:jakarta.json.bind-api:jar:3.0.0:provided [INFO] | +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:provided [INFO] | +- jakarta.interceptor:jakarta.interceptor-api:jar:2.1.0:provided [INFO] | +- jakarta.enterprise:jakarta.enterprise.cdi-api:jar:4.0.1:provided [INFO] | +- jakarta.inject:jakarta.inject-api:jar:2.0.1:provided [INFO] | \- jakarta.enterprise:jakarta.enterprise.lang-model:jar:4.0.1:provided [INFO] +- org.eclipse.microprofile.config:microprofile-config-api:jar:3.1:provided [INFO] +- org.eclipse.microprofile.fault-tolerance:microprofile-fault-tolerance-api:jar:4.0.2:provided [INFO] +- org.eclipse.microprofile.health:microprofile-health-api:jar:4.0.1:provided [INFO] +- org.eclipse.microprofile.metrics:microprofile-metrics-api:jar:5.1.0:provided [INFO] +- org.eclipse.microprofile.jwt:microprofile-jwt-auth-api:jar:2.1:provided [INFO] +- org.eclipse.microprofile.openapi:microprofile-openapi-api:jar:3.1.1:provided [INFO] \- org.eclipse.microprofile.rest.client:microprofile-rest-client-api:jar:3.0.1:provided
Jakarta EE Core Profileも含まれていますね。
もうひとつは、BOMとしてimport
としてMicroProfileの個々のAPI仕様をdependencies
に追加する使い方です。
<dependencyManagement> <dependencies> <dependency> <groupId>org.eclipse.microprofile</groupId> <artifactId>microprofile</artifactId> <version>6.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.eclipse.microprofile.config</groupId> <artifactId>microprofile-config-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.eclipse.microprofile.metrics</groupId> <artifactId>microprofile-metrics-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-core-api</artifactId> <scope>provided</scope> </dependency> </dependencies>
Jakarta EE Core Profileも含めることができます。
README.md
に書かれているように、Jakara EE Core Profileに含まれる個々のAPI仕様を指定することはできないようです。
<dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <scope>provided</scope> </dependency>
こういうのを入れると、「バージョンがわからない」と言われます。
おわりに
Jakarta EE PlatformおよびProfileとMicroProfileのJARとBOMについて、ちょっとまとめておきました。
BOMの存在をよく忘れるので、覚えておこうと思います…。