Hi Jeff,
thank-you for your questions! Reply inlined.
On Wed, Oct 8, 2025 at 1:14 PM Jean-Frederic Mesnil <jmesnil(a)ibm.com> wrote:
Hi Jean-Francois,
There is a lot to unpack in this mail but I’ve a few questions below to
make sure I understand the problem and your solution.
On 8 Oct 2025, at 11:51, jdenise--- via wildfly-dev <
wildfly-dev(a)lists.jboss.org> wrote:
Inheritance makes parent criteria on which a child depend to be also
exposed by the child (as inherited but that is an implementation detail).
So, the criteria exposed by each feature-pack becomes, after inheritance:
* WildFly core feature-pack: deployment
* WildFly ee feature-pack: deployment, jakarta-ee, jakarta-ee10
* WildFly feature-pack: microprofile, microprofile-7.1, *deployment*,
* jakarta-ee*
^^ should also inherit (and expose) jakarta-ee10, right?
Actually not. WildFly FP doesn't depend on the jakarta-ee10 criteria (at
least in my example), it depends on the jakarta-ee criteria. A feature-pack
can choose what are the criteria it needs from its dependencies.
This would look like in the wildfly-feature-pack-build.xml (file to build
feature packs). The syntax of the allows family is
<family>+criterion[+criterion]:
<dependency group-id="org.wildfly"
artifact-id="wildfly-ee-galleon-pack"
*allowedFamily="wildfly+jakarta-ee+deployment"*>
Some other feature-packs that would be bound to EE 10 specific version
would choose to depend on jakarta-ee10 criteria.
* WildFly preview feature-pack: deployment, jakarta-ee,
jakarta-ee11,
microprofile, microprofile-7.1
Flexible dependency and provisioning
Now that we have our feature-pack exposing criteria, we can define
feature-packs that depend on the feature-packs of the WildFly family:
- The WildFly datasources feature-pack (that adds datasources and JDBC
drivers) requires `jakarta-ee` from the `wildfly` family.
- The WildFly cloud feature-pack (that configure a complete wildly for
the cloud) requires `jakarta-ee` and `microprofile` from the
`wildfly` family.
- The WildFly transformer feature-pack requires `deployment` from the
`wildfly` family.
With that in place, we can now mix the feature-packs. At provisioning time
resolution of family and criteria allows to identify the actual
dependencies in use and to bind to:
- (WildFly || WildFly EE || WildFly Preview) + WildFly datasources
feature-pack
- (WildFly || WildFly Preview) + WildFly cloud feature-pack
- (WildFly || WildFly EE || WildFly Core || WildFly Preview) + WildFly
transformer feature-pack
The notation is not clear. || actually means XOR as only one of the
elements can bring the criteria required by dependents feature packs. Is
that correct?
Yes correct, that is an XOR.
Advanced example with hypothetical support for Jakarta EE 11
For version X of WildFly, Jakarta EE 11 should become the default
implementation. A new feature-pack for Jakarta EE 10 could be defined
allowing to keep using WildFly with Jakarta EE 10 for some time. WildFly
Preview would start to support Jakarta EE 12 (I am not modifying the
microprofile version there although I suspect that it would change).
New criteria that appear (and none would been removed, but we can expect
some criteria to be removed for new WildFly releases):
- `jakarta-ee11`: A specific implementation of the Jakarta EE version
11
- `jakarta-ee12`: A specific implementation of the Jakarta EE version
12
The new set of feature-packs and mapping of criteria:
* WildFly core feature-pack: deployment
* WildFly ee feature-pack: deployment, jakarta-ee, *jakarta-ee11*
* *WildFly ee 10 feature-pack*: deployment, jakarta-ee, *jakarta-ee10*
* WildFly feature-pack: microprofile, microprofile-7.1
* WildFly preview feature-pack: deployment, jakarta-ee, *jakarta-ee12*,
microprofile, microprofile-7.1
We can see that both WildFly ee feature-pack and WildFly ee 10
feature-pack share the jakarta-ee criterion that is all that WildFly
needs. So, one of the two feature-packs can be provisioned with WildFly
feature-pack (same applies to other feature-packs).
Let’s say I’m using WildFly feature pack (with MicroProfile 7.1 & EE 10),
what can I provision when I want to stick with EE 10 when WildFly moves to
EE 11?
I will continue to depend on WildFly feature pack (for MP 7.1
capabilities) and will explicitly provision the new WildFly EE10 feature
pack.
Is that correct?
Yes that is correct in your provisioning.xml (or WIldFly Maven Plugin
configuration) you would have (image WF 39.0.0.Final):
<feature-pack
location="org.wildfly:wildfly-ee-10-feature-pack:39.0.0.Final"/>
<feature-pack location="org.wildfly:wildfly-galleon-pack:39.0.0.Final"/>
Cheers,
Jeff
--
Jeff Mesnil
Software Engineer
Red Hat JBoss EAP
http://jmesnil.net/
IBM
Unless otherwise stated above:
Compagnie IBM France
Siège Social : 17, avenue de l'Europe, 92275 Bois-Colombes Cedex
RCS Nanterre 552 118 465
Forme Sociale : S.A.S.
Capital Social : 664 614 175,50 €
SIRET : 552 118 465 03644 - Code NAF 6203Z