This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to branch deploy
in repository https://gitbox.apache.org/repos/asf/maven-studies.git
The following commit(s) were added to refs/heads/deploy by this push:
new 5fdda7978 add nxrm3 option
5fdda7978 is described below
commit 5fdda7978811d322877d5e9f5b7a89388af106e1
Author: Hervé Boutemy <[email protected]>
AuthorDate: Sun Oct 5 10:40:54 2025 +0200
add nxrm3 option
---
1.7_DISCOVERY-nxrm3-staging.md | 266 +++++++++++++++++++++++++++++++++++++++++
README.md | 4 +-
pom.xml | 49 ++++++++
3 files changed, 317 insertions(+), 2 deletions(-)
diff --git a/1.7_DISCOVERY-nxrm3-staging.md b/1.7_DISCOVERY-nxrm3-staging.md
new file mode 100644
index 000000000..e6bc92568
--- /dev/null
+++ b/1.7_DISCOVERY-nxrm3-staging.md
@@ -0,0 +1,266 @@
+# deploy with Sonatype nxrm3 Maven plugin
+
+TBD: as of October 2025, this is a WIP for ASF's [Apache Trusted
Release](https://github.com/apache/tooling-trusted-release) staging process
during vote,
+using replacement [Nexus Repository 3
platform](https://repository.apache.org:4443/) and associated [nxrm3 Maven
plugin](https://central.sonatype.com/artifact/org.sonatype.plugins/nxrm3-maven-plugin)
+
+https://help.sonatype.com/en/nexus-repository-maven-plugin.html
+
+ mvn clean deploy -Pasf-nxrm3
+
+with `rao3` server id defined in `~/.m2/settings.xml` for putting credentials,
same as `apache.releases.https`from [existing setup for releases
staging](https://infra.apache.org/publishing-maven-artifacts.html).
+
+Running with this plugin completely removes the `maven-deploy-plugin` from the
build execution (as if it was not inherited from parent POM...), replacing with
`central-publishing:publish`.
+
+<details><summary>mvn clean deploy -Pasf-nxrm3</summary>
+
+```
+$ mvn clean deploy -Pasf-nxrm3
+[INFO] Scanning for projects...
+[INFO] Njord 0.8.2 session created
+[INFO] ------------------------------------------------------------------------
+[INFO] Reactor Build Order:
+[INFO]
+[INFO] deploy study root [pom]
+[INFO] sub projects [pom]
+[INFO] logging [jar]
+[INFO] core project classes [jar]
+[INFO] enterprise java beans [ejb]
+[INFO] servlet [war]
+[INFO] ear assembly [ear]
+[INFO]
+[INFO] ------------------< org.apache.maven.studies:deploy >-------------------
+[INFO] Building deploy study root 1.0 [1/7]
+[INFO] from pom.xml
+[INFO] --------------------------------[ pom ]---------------------------------
+[INFO]
+[INFO] --- clean:3.5.0:clean (default-clean) @ deploy ---
+[INFO] Deleting /home/herve/dev/maven/sources/studies/deploy/target
+[INFO]
+[INFO] --- install:3.1.4:install (default-install) @ deploy ---
+[INFO] Installing /home/herve/dev/maven/sources/studies/deploy/pom.xml to
/home/herve/.m2/repository/org/apache/maven/studies/deploy/1.0/deploy-1.0.pom
+[INFO]
+[INFO] --- nxrm3:1.0.12:deploy (default-deploy) @ deploy ---
+[INFO] Pom project to deploy, deploying with attached artifacts.
+[INFO] No tag was provided; using generated tag 'deploy-1.0-1759652819873'
+[INFO] Creating tag deploy-1.0-1759652819873 as it does not already exist
+[INFO] Saving staging information to
/home/herve/dev/maven/sources/studies/deploy/target/nexus-staging/staging/staging.properties
+[INFO] Deploying to repository 'maven-staging' with tag
'deploy-1.0-1759652819873'
+[INFO]
+[INFO] -----------------< org.apache.maven.studies:projects >------------------
+[INFO] Building sub projects 1.0 [2/7]
+[INFO] from projects/pom.xml
+[INFO] --------------------------------[ pom ]---------------------------------
+[INFO]
+[INFO] --- clean:3.5.0:clean (default-clean) @ projects ---
+[INFO]
+[INFO] --- install:3.1.4:install (default-install) @ projects ---
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/pom.xml to
/home/herve/.m2/repository/org/apache/maven/studies/projects/1.0/projects-1.0.pom
+[INFO]
+[INFO] --- nxrm3:1.0.12:deploy (default-deploy) @ projects ---
+[INFO] Pom project to deploy, deploying with attached artifacts.
+[INFO] Tag deploy-1.0-1759652819873 already exists, skipping creation
+[INFO] Saving staging information to
/home/herve/dev/maven/sources/studies/deploy/target/nexus-staging/staging/staging.properties
+[INFO] Deploying to repository 'maven-staging' with tag
'deploy-1.0-1759652819873'
+[INFO]
+[INFO] ------------------< org.apache.maven.studies:logging >------------------
+[INFO] Building logging 1.0 [3/7]
+[INFO] from projects/logging/pom.xml
+[INFO] --------------------------------[ jar ]---------------------------------
+[INFO]
+[INFO] --- clean:3.5.0:clean (default-clean) @ logging ---
+[INFO] Deleting
/home/herve/dev/maven/sources/studies/deploy/projects/logging/target
+[INFO]
+[INFO] --- resources:3.3.1:resources (default-resources) @ logging ---
+[INFO] skip non existing resourceDirectory
/home/herve/dev/maven/sources/studies/deploy/projects/logging/src/main/resources
+[INFO]
+[INFO] --- compiler:3.14.0:compile (default-compile) @ logging ---
+[INFO] No sources to compile
+[INFO]
+[INFO] --- resources:3.3.1:testResources (default-testResources) @ logging ---
+[INFO] skip non existing resourceDirectory
/home/herve/dev/maven/sources/studies/deploy/projects/logging/src/test/resources
+[INFO]
+[INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ logging ---
+[INFO] No sources to compile
+[INFO]
+[INFO] --- surefire:3.5.3:test (default-test) @ logging ---
+[INFO] No tests to run.
+[INFO]
+[INFO] --- jar:3.4.2:jar (default-jar) @ logging ---
+[WARNING] JAR will be empty - no content was marked for inclusion!
+[INFO] Building jar:
/home/herve/dev/maven/sources/studies/deploy/projects/logging/target/logging-1.0.jar
+[INFO]
+[INFO] --- install:3.1.4:install (default-install) @ logging ---
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/logging/pom.xml to
/home/herve/.m2/repository/org/apache/maven/studies/logging/1.0/logging-1.0.pom
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/logging/target/logging-1.0.jar
to
/home/herve/.m2/repository/org/apache/maven/studies/logging/1.0/logging-1.0.jar
+[INFO]
+[INFO] --- nxrm3:1.0.12:deploy (default-deploy) @ logging ---
+[INFO] Tag deploy-1.0-1759652819873 already exists, skipping creation
+[INFO] Saving staging information to
/home/herve/dev/maven/sources/studies/deploy/target/nexus-staging/staging/staging.properties
+[INFO] Deploying to repository 'maven-staging' with tag
'deploy-1.0-1759652819873'
+[INFO]
+[INFO] --------------< org.apache.maven.studies:primary-source >---------------
+[INFO] Building core project classes 1.0 [4/7]
+[INFO] from projects/primary-source/pom.xml
+[INFO] --------------------------------[ jar ]---------------------------------
+[INFO]
+[INFO] --- clean:3.5.0:clean (default-clean) @ primary-source ---
+[INFO] Deleting
/home/herve/dev/maven/sources/studies/deploy/projects/primary-source/target
+[INFO]
+[INFO] --- resources:3.3.1:resources (default-resources) @ primary-source ---
+[INFO] skip non existing resourceDirectory
/home/herve/dev/maven/sources/studies/deploy/projects/primary-source/src/main/resources
+[INFO]
+[INFO] --- compiler:3.14.0:compile (default-compile) @ primary-source ---
+[INFO] No sources to compile
+[INFO]
+[INFO] --- resources:3.3.1:testResources (default-testResources) @
primary-source ---
+[INFO] skip non existing resourceDirectory
/home/herve/dev/maven/sources/studies/deploy/projects/primary-source/src/test/resources
+[INFO]
+[INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ primary-source
---
+[INFO] No sources to compile
+[INFO]
+[INFO] --- surefire:3.5.3:test (default-test) @ primary-source ---
+[INFO] No tests to run.
+[INFO]
+[INFO] --- jar:3.4.2:jar (default-jar) @ primary-source ---
+[WARNING] JAR will be empty - no content was marked for inclusion!
+[INFO] Building jar:
/home/herve/dev/maven/sources/studies/deploy/projects/primary-source/target/primary-source-1.0.jar
+[INFO]
+[INFO] --- install:3.1.4:install (default-install) @ primary-source ---
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/primary-source/pom.xml to
/home/herve/.m2/repository/org/apache/maven/studies/primary-source/1.0/primary-source-1.0.pom
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/primary-source/target/primary-source-1.0.jar
to
/home/herve/.m2/repository/org/apache/maven/studies/primary-source/1.0/primary-source-1.0.jar
+[INFO]
+[INFO] --- nxrm3:1.0.12:deploy (default-deploy) @ primary-source ---
+[INFO] Tag deploy-1.0-1759652819873 already exists, skipping creation
+[INFO] Saving staging information to
/home/herve/dev/maven/sources/studies/deploy/target/nexus-staging/staging/staging.properties
+[INFO] Deploying to repository 'maven-staging' with tag
'deploy-1.0-1759652819873'
+[INFO]
+[INFO] -------------------< org.apache.maven.studies:ejbs >--------------------
+[INFO] Building enterprise java beans 1.0 [5/7]
+[INFO] from projects/ejbs/pom.xml
+[INFO] --------------------------------[ ejb ]---------------------------------
+[INFO]
+[INFO] --- clean:3.5.0:clean (default-clean) @ ejbs ---
+[INFO] Deleting
/home/herve/dev/maven/sources/studies/deploy/projects/ejbs/target
+[INFO]
+[INFO] --- resources:3.3.1:resources (default-resources) @ ejbs ---
+[INFO] Copying 1 resource from src/main/resources to target/classes
+[INFO]
+[INFO] --- compiler:3.14.0:compile (default-compile) @ ejbs ---
+[INFO] No sources to compile
+[INFO]
+[INFO] --- resources:3.3.1:testResources (default-testResources) @ ejbs ---
+[INFO] skip non existing resourceDirectory
/home/herve/dev/maven/sources/studies/deploy/projects/ejbs/src/test/resources
+[INFO]
+[INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ ejbs ---
+[INFO] No sources to compile
+[INFO]
+[INFO] --- surefire:3.5.3:test (default-test) @ ejbs ---
+[INFO] No tests to run.
+[INFO]
+[INFO] --- ejb:3.2.1:ejb (default-ejb) @ ejbs ---
+[INFO] Building EJB ejbs-1.0 with EJB version 3.1
+[INFO] Building jar:
/home/herve/dev/maven/sources/studies/deploy/projects/ejbs/target/ejbs-1.0.jar
+[INFO]
+[INFO] --- install:3.1.4:install (default-install) @ ejbs ---
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/ejbs/pom.xml to
/home/herve/.m2/repository/org/apache/maven/studies/ejbs/1.0/ejbs-1.0.pom
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/ejbs/target/ejbs-1.0.jar
to /home/herve/.m2/repository/org/apache/maven/studies/ejbs/1.0/ejbs-1.0.jar
+[INFO]
+[INFO] --- nxrm3:1.0.12:deploy (default-deploy) @ ejbs ---
+[INFO] Tag deploy-1.0-1759652819873 already exists, skipping creation
+[INFO] Saving staging information to
/home/herve/dev/maven/sources/studies/deploy/target/nexus-staging/staging/staging.properties
+[INFO] Deploying to repository 'maven-staging' with tag
'deploy-1.0-1759652819873'
+[INFO]
+[INFO] ------------------< org.apache.maven.studies:servlet >------------------
+[INFO] Building servlet 1.0 [6/7]
+[INFO] from projects/servlet/pom.xml
+[INFO] --------------------------------[ war ]---------------------------------
+[INFO]
+[INFO] --- clean:3.5.0:clean (default-clean) @ servlet ---
+[INFO] Deleting
/home/herve/dev/maven/sources/studies/deploy/projects/servlet/target
+[INFO]
+[INFO] --- resources:3.3.1:resources (default-resources) @ servlet ---
+[INFO] skip non existing resourceDirectory
/home/herve/dev/maven/sources/studies/deploy/projects/servlet/src/main/resources
+[INFO]
+[INFO] --- compiler:3.14.0:compile (default-compile) @ servlet ---
+[INFO] No sources to compile
+[INFO]
+[INFO] --- resources:3.3.1:testResources (default-testResources) @ servlet ---
+[INFO] skip non existing resourceDirectory
/home/herve/dev/maven/sources/studies/deploy/projects/servlet/src/test/resources
+[INFO]
+[INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ servlet ---
+[INFO] No sources to compile
+[INFO]
+[INFO] --- surefire:3.5.3:test (default-test) @ servlet ---
+[INFO] No tests to run.
+[INFO]
+[INFO] --- war:3.4.0:war (default-war) @ servlet ---
+[INFO] Packaging webapp
+[INFO] Assembling webapp [servlet] in
[/home/herve/dev/maven/sources/studies/deploy/projects/servlet/target/servlet-1.0]
+[INFO] Processing war project
+[INFO] Copying webapp resources
[/home/herve/dev/maven/sources/studies/deploy/projects/servlet/src/main/webapp]
+[INFO] Building war:
/home/herve/dev/maven/sources/studies/deploy/projects/servlet/target/servlet-1.0.war
+[INFO]
+[INFO] --- install:3.1.4:install (default-install) @ servlet ---
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/servlet/pom.xml to
/home/herve/.m2/repository/org/apache/maven/studies/servlet/1.0/servlet-1.0.pom
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/servlet/target/servlet-1.0.war
to
/home/herve/.m2/repository/org/apache/maven/studies/servlet/1.0/servlet-1.0.war
+[INFO]
+[INFO] --- nxrm3:1.0.12:deploy (default-deploy) @ servlet ---
+[INFO] Tag deploy-1.0-1759652819873 already exists, skipping creation
+[INFO] Saving staging information to
/home/herve/dev/maven/sources/studies/deploy/target/nexus-staging/staging/staging.properties
+[INFO] Deploying to repository 'maven-staging' with tag
'deploy-1.0-1759652819873'
+[INFO]
+[INFO] --------------------< org.apache.maven.studies:ear >--------------------
+[INFO] Building ear assembly 1.0 [7/7]
+[INFO] from projects/ear/pom.xml
+[INFO] --------------------------------[ ear ]---------------------------------
+[INFO]
+[INFO] --- clean:3.5.0:clean (default-clean) @ ear ---
+[INFO] Deleting
/home/herve/dev/maven/sources/studies/deploy/projects/ear/target
+[INFO]
+[INFO] --- ear:3.4.0:generate-application-xml
(default-generate-application-xml) @ ear ---
+[INFO] Generating application.xml
+[INFO]
+[INFO] --- resources:3.3.1:resources (default-resources) @ ear ---
+[INFO] skip non existing resourceDirectory
/home/herve/dev/maven/sources/studies/deploy/projects/ear/src/main/resources
+[INFO]
+[INFO] --- ear:3.4.0:ear (default-ear) @ ear ---
+[INFO] Copying artifact [ejb:org.apache.maven.studies:ejbs:1.0] to
[org.apache.maven.studies-ejbs-1.0.jar]
+[INFO] Copying artifact [war:org.apache.maven.studies:servlet:1.0] to
[org.apache.maven.studies-servlet-1.0.war]
+[INFO] Copying artifact [jar:org.apache.maven.studies:primary-source:1.0] to
[org.apache.maven.studies-primary-source-1.0.jar]
+[INFO] Copying artifact [jar:org.apache.maven.studies:logging:1.0] to
[org.apache.maven.studies-logging-1.0.jar]
+[INFO] Building ear:
/home/herve/dev/maven/sources/studies/deploy/projects/ear/target/ear-1.0.ear
+[INFO]
+[INFO] --- install:3.1.4:install (default-install) @ ear ---
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/ear/pom.xml to
/home/herve/.m2/repository/org/apache/maven/studies/ear/1.0/ear-1.0.pom
+[INFO] Installing
/home/herve/dev/maven/sources/studies/deploy/projects/ear/target/ear-1.0.ear to
/home/herve/.m2/repository/org/apache/maven/studies/ear/1.0/ear-1.0.ear
+[INFO]
+[INFO] --- nxrm3:1.0.12:deploy (default-deploy) @ ear ---
+[INFO] Tag deploy-1.0-1759652819873 already exists, skipping creation
+[INFO] Saving staging information to
/home/herve/dev/maven/sources/studies/deploy/target/nexus-staging/staging/staging.properties
+[INFO] Deploying to repository 'maven-staging' with tag
'deploy-1.0-1759652819873'
+[INFO] ------------------------------------------------------------------------
+[INFO] Reactor Summary for deploy study root 1.0:
+[INFO]
+[INFO] deploy study root .................................. SUCCESS [ 0.664 s]
+[INFO] sub projects ....................................... SUCCESS [ 0.263 s]
+[INFO] logging ............................................ SUCCESS [ 0.520 s]
+[INFO] core project classes ............................... SUCCESS [ 0.296 s]
+[INFO] enterprise java beans .............................. SUCCESS [ 0.378 s]
+[INFO] servlet ............................................ SUCCESS [ 0.374 s]
+[INFO] ear assembly ....................................... SUCCESS [ 0.413 s]
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESS
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 3.301 s
+[INFO] Finished at: 2025-10-05T10:27:02+02:00
+[INFO] ------------------------------------------------------------------------
+[INFO] Njord session closed
+```
+</details>
+
+\
+Notice:
+- plugin has a publicly visible Git repository:
https://github.com/sonatype/nxrm3-maven-plugin
+- ignores `distributionManagement`
+- requires Java 17
+- requires configuration in pom.xml to diable `maven-deploy-plugin`
diff --git a/README.md b/README.md
index 23ee6b1f3..49d600c93 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ This study starts with a [base base project](1_DISCOVERY.md)
for the problem spa
4. [use of Sonatype Central Publishing Maven
Plugin](1.4_DISCOVERY-central-publishing.md)
5. [use of njord Maven Resolver extension](1.5_DISCOVERY-njord.md)
6. [use of JReleaser](1.6_DISCOVERY-jreleaser.md)
-
+7. [use of NXRM3](1.7_DISCOVERY-nxrm3-staging.md)
This will be followed by an evaluation based on differences:
- use of classical `pom.xml` configuration of publication target for SNASPHOT
and release: `<project><distributionManagement><release><id>/<url>`,
@@ -34,7 +34,7 @@ Pro: Easy to configure.
Drawbacks:
- no configuration in `pom.xml` `distributionManagement`
-
[plugin](https://central.sonatype.com/artifact/org.sonatype.central/central-publishing-maven-plugin)
has OSS license and code visible in `-source.jar` but not in Git, and the
governance and roadmap of is not open,
-- plugin deletes `maven-deploy-plugin` at runtime, which confuses plugins like
`maven-artifact-plugin`, `cyclonedx-maven-plugin` or `spdx-maven-plugin` which
detect skipped modules for deployment
+- plugin deletes `maven-deploy-plugin` at runtime, which confuses plugins like
`maven-artifact-plugin`, `cyclonedx-maven-plugin` or `spdx-maven-plugin` that
detect skipped modules for deployment
- does not work for Maven 4 (runtime deletion of a plugin binding will
probably be a blocker)
## Option 3: njord
diff --git a/pom.xml b/pom.xml
index 8713141ec..1c174705d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -115,6 +115,55 @@
</pluginManagement>
</build>
</profile>
+
+ <profile>
+ <id>asf-nxrm3</id>
+ <!--distributionManagement>
+ <repository>
+ <id>rao3</id>
+ <name>NXRM Releases</name>
+
<url>https://repository.apache.org:4443/repository/maven-staging/</url>
+ </repository>
+ <snapshotRepository>
+ <id>rao3</id>
+ <name>NXRM Snapshots</name>
+
<url>https://repository.apache.org:4443/repository/maven-snapshots/</url>
+ </snapshotRepository>
+ </distributionManagement-->
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.sonatype.plugins</groupId>
+ <artifactId>nxrm3-maven-plugin</artifactId>
+ <version>1.0.12</version>
+ <extensions>true</extensions>
+ <configuration>
+ <nexusUrl>https://repository.apache.org:4443/</nexusUrl>
+ <serverId>rao3</serverId>
+ <repository>maven-staging</repository>
+ </configuration>
+ <executions>
+ <execution>
+ <id>default-deploy</id>
+ <phase>deploy</phase>
+ <goals>
+ <goal>deploy</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-deploy</id>
+ <phase>deploy-skip</phase><!-- disable standard
maven-deploy-plugin deploy -->
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
<dependencyManagement>