Normally it makes sense that the group/artifact coordinates are stable across versions, but since EE9 is under a new package, I was looking into incorporating a more dynamic mapping of legacy EE8 components into the EE9 API usage. To this point we have done this via build time transformations, but I was looking at a more dynamic mapping. With the approach I was looking at, I needed both the EE8/EE9 aps available to the container.
This does not work however under either maven or gradle as they only load a single version of a dependency, so even though:
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-api</artifactId>
<version>2.0.2</version>
</dependency>
this could pull in non-conflicting apis under different packages, the build system won't do it.
So, the question is, would it be better to have a new groupId prefix or something to differentiate these APIs?