Bill Of Material Artifact
Since 5.194
Payara Platform consists of many artifacts and it depends on lots of APIs as well as their implementations. Having matching versions of these dependencies prevents many classloading issues. Payara’s Bill Of Material (BOM) artifact collects all of these versions for the following types of artifacts:
-
Payara Distribution artifacts
-
Payara Client libraries
-
Jakarta EE, Eclipse Microprofile and OSGi APIs
-
Arquillian Containers
-
Implementations and libraries shipped with the server (consult the list below)
Quick Start
To make use of the BOM, you need to list the artifact in dependencyManagement
section of your project in scope import
.
Some of the artifacts are Payara-specific patch versions which are available in our nexus repository payara-artifacts. You can find more information about the payara-artifacts
repository in this Knowledgebase article (only accessible for Enterprise Customers)
Add following snippet to your Maven project:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>fish.payara.api</groupId>
<artifactId>payara-bom</artifactId>
<version>5.33.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
The Payara BOM artifact for the Enterprise Edition can be found in the Payara Nexus Server. The steps required to access this server and add the Payara Nexus repository to your Maven build are described in this Knowledgebase article (only accessible for Enterprise Customers)
An example application utilizing the BOM can be seen in repository Payara Examples at path ecosystem/payara-bom/bom-import/.
Contents of the BOM
Payara Distribution
Distribution artifacts do not define scope and are therefore imported in scope compile
..
Artifact | Example usage | Note |
---|---|---|
Payara Server |
<dependency> <groupId>fish.payara.distributions</groupId> <artifactId>payara</artifactId> <type>zip</type> </dependency> |
Also available are |
Payara Micro |
<dependency> <groupId>fish.payara.extras</groupId> <artifactId>payara-micro</artifactId> </dependency> |
|
Payara Embedded |
<dependency> <groupId>fish.payara.extras</groupId> <artifactId>payara-embedded-all</artifactId> </dependency> |
Also available |
EJB HTTP Client |
<dependency> <groupId>fish.payara.extras</groupId> <artifactId>ejb-http-client</artifactId> </dependency> |
|
Appclient |
<dependency> <groupId>fish.payara.server.appclient</groupId> <artifactId>payara-client</artifactId> </dependency> |
|
Payara API |
<dependency> <groupId>fish.payara.api</groupId> <artifactId>payara-api</artifactId> </dependency> |
APIs
APIs are declared in scope provided, as they define classes present within the server runtime.
Artifact | Example usage | Note |
---|---|---|
Jakarta EE |
<dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> </dependency> |
Also available |
Eclipse Microprofile |
<dependency> <groupId>org.eclipse.microprofile</groupId> <artifactId>microprofile</artifactId> <type>pom</type> </dependency> |
Individual APIs are also declared. |
OSGi |
<dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.core</artifactId> </dependency> |
Also available are |
Test tooling
Arquillian is the recommended way for integration tests with the server.
Payara Platform provides multiple connectors fitting the deployment scenarios.
These artifacts are declared in scope test
.
Payara Server Enterprise also ships the H2 database, matching version is also declared, but in default scope.
Artifact | Example usage | Note |
---|---|---|
Arquillian container - Remote |
<dependency> <groupId>fish.payara.arquillian</groupId> <artifactId>arquillian-payara-server-remote</artifactId> </dependency> |
|
Arquillian container - Embedded |
<dependency> <groupId>fish.payara.arquillian</groupId> <artifactId>arquillian-payara-server-embedded</artifactId> </dependency> |
|
Arquillian container - Managed |
<dependency> <groupId>fish.payara.arquillian</groupId> <artifactId>arquillian-payara-server-managed</artifactId> </dependency> |
|
Arquillian container - Payara Micro |
<dependency> <groupId>fish.payara.arquillian</groupId> <artifactId>arquillian-payara-micro-managed</artifactId> </dependency> |
|
H2 Database |
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency> |
Libraries and API implementations
This is non-exhaustive list of dependencies. By default all are declared in default scope, but it is more correct to use them with scope provided
if they exist in directory glassfish/modules
.
Artifact | Example usage | Note |
---|---|---|
Jersey |
<dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.glassfish.jersey.inject</groupId> <artifactId>jersey-hk2</artifactId> <scope>test</scope> </dependency> |
Example - use JAXRS client in tests. All artifacts of Jersey BOM are imported. |
Hibernate Validator |
<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <scope>test</scope> </dependency> |
|
EclipseLink - JPA Metamodel generator |
<dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId> </dependency> |
Only dependency already scoped |
EclipseLink |
<dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa</artifactId> <scope>provided</scope> </dependency> |
|
Hazelcast |
<dependency> <groupId>com.hazelcast</groupId> <artifactId>hazelcast</artifactId> <scope>provided</scope> </dependency> |
Also available |
Jackson |
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jdk8</artifactId> </dependency> |
All artifacts of Jackson BOM are imported. |
Yasson |
<dependency> <groupId>org.eclipse</groupId> <artifactId>yasson</artifactId> <scope>test</scope> </dependency> |
|
Tyrus |
<dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-client</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-container-grizzly-client</artifactId> <scope>test</scope> </dependency> |