Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
PAYARA-3924: Payara BOM #4320
This is a feature.
Bill of material module lists all the APIs, third-party libraries and Arquillian containers fit for particular release. The goal is to enable downstream users (and e. g. our test projects) to always have proper dependencies for microprofile APIs, third-party libraries like Jackson and Jersey and up-to-date container implementations driven by single input - the version of target Payara server.
General structure is following:
An artifact is put in BOM when:
A BOM is to be used:
Scopes are defined as
The POM file is flattened to contain all relevant information from parent poms and be standalone -- check version in
[x] Clean build with empty repository
Test suites executed
Zulu JDK 1.8_222 on Windows 10 with Maven 3.6.2 and constantly cleaned
[ ] T. B. D.
Before moving the parent relationships had to be cleared. API modules now depend on aggregator as parent. Aggregator contains all the version properties shared by BOM and any downstream modules.
Add explicit jakarta dependency to openprofile, so that javax.interceptor package is always reachable
Flatten plugin removes parent, and merges all parent properties into this POM. Moved default configuration to root pom, as well as patched externals repo. Payara version is interpolated and also distributed as fixed string. Removed developers from api module, as top level ones should be used.
Aggregate APIs are marked as provided to prevent their deployment in user app. Individual APIs are left for user to handle on his/hers own. Also removed duplicate dependency declaration for jakarta.el
I'll build up examples inhttps://github.com/payara/payara-examples, already the first steps look promising:
With minimal pom like:
We can already see the the value:
Note, that the versions of imported microprofile API do not match those of microprofile 3.0, but those of Payara Server (rest-client 1.3.4, jwt-auth 1.1.payara-p1.
Adding arquillian container we see jersey version is overriden to match server (Hooray!):