Question about multi-project releases and group-IDs
The Eclipse Dataspaceconnector project is currently undergoing a rebranding process, in the course of which we will also adapt the groupId
for all our projects.
While discussing the technical ramifications of that in a technical working group we came across some questions, and I wonder whether you could help out in resolving them.
As you may know we have our "core" project, plus a few dependent projects ("components") that depend on the "core" project via maven/gradle dependencies. For publishing to Nexus (snapshots + staging for release) we use the Gradle Nexus Plugin.
The only thing that is pretty much set in stone is that we want all our various components/projects to have the same version number to avoid headaches with transitive dependencies and maintaining compatibility matrices. We would prefer having a separate build (=Jenkins Job) for every project, if possible.
According to a question I raised in the Nexus Plugin repo, it sounds like that is not really possible, because opening and closing the staging repo needs to be done in the same gradle invocation, or at least in the same Jenkins runner, in subsequent shell commands. Furthermore, my suspicion is that one cannot "add" artifacts to an already published version, is that correct?
Which would mean the following sequence is not possible:
- job 1: builds
core:0.0.1
, publishes it to maven central - job 2: builds
projectA:0.0.1
(which depends oncore:0.0.1
) and publishes it to maven central - job 3: builds
projectB:0.0.1
(which depends oncore:0.0.1
andprojectA:0.0.1
), and publishes it to maven central
Question 1: is the above statement correct?
If so, we were discussing whether having sub-groups could be a solution. Essentially what we would try to do then is create a sub-group-id per project, for example:
org.eclipse.edc.connector
org.eclipse.edc.projectA
org.eclipse.edc.projectB
- etc.
and we would have one Jenkins build/publish job per sub-group.
Question 2 then is, whether EF supports subgroups at all, and whether we can publish different projects with separate subgroups to MavenCentral? And on a general note I wanted to ask if you had any information about how other multi-repo projects approach this situation? What would you recommend as being the best approach here?
Happy to answer any questions you may have.
Thanks a ton in advance!