basic test: deploy to local directory target/deploy

Instead of classical deployment to an HTTP(S) server (PUT), or scp or any other file-oriented server, we can easily test maven-deploy-plugin:deploy to deploy to a local directory using altDeploymentRepository parameter with a file: target url (instead of updating pom.xml's project.distributionManagement.repository.idand url):

mvn clean deploy -DaltDeploymentRepository=local::file:target/deploy
$ mvn clean deploy -DaltDeploymentRepository=local::file:target/deploy
[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] --- deploy:3.1.4:deploy (default-deploy) @ deploy ---
[INFO] Using alternate deployment repository local::file:target/deploy
Uploading to local: file:target/deploy/org/apache/maven/studies/deploy/1.0/deploy-1.0.pom
Uploaded to local: file:target/deploy/org/apache/maven/studies/deploy/1.0/deploy-1.0.pom (6.3 kB at 1.3 MB/s)
Downloading from local: file:target/deploy/org/apache/maven/studies/deploy/maven-metadata.xml
Uploading to local: file:target/deploy/org/apache/maven/studies/deploy/maven-metadata.xml
Uploaded to local: file:target/deploy/org/apache/maven/studies/deploy/maven-metadata.xml (306 B at 306 kB/s)
[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] Deleting /home/herve/dev/maven/sources/studies/deploy/projects/target
[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] --- deploy:3.1.4:deploy (default-deploy) @ projects ---
[INFO] Using alternate deployment repository local::file:target/deploy
Uploading to local: file:target/deploy/org/apache/maven/studies/projects/1.0/projects-1.0.pom
Uploaded to local: file:target/deploy/org/apache/maven/studies/projects/1.0/projects-1.0.pom (696 B at 696 kB/s)
Downloading from local: file:target/deploy/org/apache/maven/studies/projects/maven-metadata.xml
Uploading to local: file:target/deploy/org/apache/maven/studies/projects/maven-metadata.xml
Uploaded to local: file:target/deploy/org/apache/maven/studies/projects/maven-metadata.xml (308 B)
[INFO] 
...
[INFO] --- deploy:3.1.4:deploy (default-deploy) @ ear ---
[INFO] Using alternate deployment repository local::file:target/deploy
Uploading to local: file:target/deploy/org/apache/maven/studies/ear/1.0/ear-1.0.pom
Uploaded to local: file:target/deploy/org/apache/maven/studies/ear/1.0/ear-1.0.pom (1.4 kB)
Uploading to local: file:target/deploy/org/apache/maven/studies/ear/1.0/ear-1.0.ear
Uploaded to local: file:target/deploy/org/apache/maven/studies/ear/1.0/ear-1.0.ear (6.1 kB at 6.1 MB/s)
Downloading from local: file:target/deploy/org/apache/maven/studies/ear/maven-metadata.xml
Uploading to local: file:target/deploy/org/apache/maven/studies/ear/maven-metadata.xml
Uploaded to local: file:target/deploy/org/apache/maven/studies/ear/maven-metadata.xml (303 B)
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for deploy study root 1.0:
[INFO] 
[INFO] deploy study root .................................. SUCCESS [  0.119 s]
[INFO] sub projects ....................................... SUCCESS [  0.006 s]
[INFO] logging ............................................ SUCCESS [  0.317 s]
[INFO] core project classes ............................... SUCCESS [  0.018 s]
[INFO] enterprise java beans .............................. SUCCESS [  0.176 s]
[INFO] servlet ............................................ SUCCESS [  0.172 s]
[INFO] ear assembly ....................................... SUCCESS [  0.155 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.160 s
[INFO] Finished at: 2025-07-19T11:29:00+02:00
[INFO] ------------------------------------------------------------------------
[INFO] Njord session closed


resulting files and directory tree is available in target/deploy, showing 57 (=3*19) individual files (= 7 .pom+maven-metadata.xml = one per goupId/artifactId/version, 5 .jar/.ear/.war => 19 files, each with 2 fingerprints .md5/.sha1):

tree target/deploy
$ tree target/deploy
target/deploy
└── org
    └── apache
        └── maven
            └── studies
                ├── deploy
                │   ├── 1.0
                │   │   ├── deploy-1.0.pom
                │   │   ├── deploy-1.0.pom.md5
                │   │   └── deploy-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── ear
                │   ├── 1.0
                │   │   ├── ear-1.0.ear
                │   │   ├── ear-1.0.ear.md5
                │   │   ├── ear-1.0.ear.sha1
                │   │   ├── ear-1.0.pom
                │   │   ├── ear-1.0.pom.md5
                │   │   └── ear-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── ejbs
                │   ├── 1.0
                │   │   ├── ejbs-1.0.jar
                │   │   ├── ejbs-1.0.jar.md5
                │   │   ├── ejbs-1.0.jar.sha1
                │   │   ├── ejbs-1.0.pom
                │   │   ├── ejbs-1.0.pom.md5
                │   │   └── ejbs-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── logging
                │   ├── 1.0
                │   │   ├── logging-1.0.jar
                │   │   ├── logging-1.0.jar.md5
                │   │   ├── logging-1.0.jar.sha1
                │   │   ├── logging-1.0.pom
                │   │   ├── logging-1.0.pom.md5
                │   │   └── logging-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── primary-source
                │   ├── 1.0
                │   │   ├── primary-source-1.0.jar
                │   │   ├── primary-source-1.0.jar.md5
                │   │   ├── primary-source-1.0.jar.sha1
                │   │   ├── primary-source-1.0.pom
                │   │   ├── primary-source-1.0.pom.md5
                │   │   └── primary-source-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── projects
                │   ├── 1.0
                │   │   ├── projects-1.0.pom
                │   │   ├── projects-1.0.pom.md5
                │   │   └── projects-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                └── servlet
                    ├── 1.0
                    │   ├── servlet-1.0.pom
                    │   ├── servlet-1.0.pom.md5
                    │   ├── servlet-1.0.pom.sha1
                    │   ├── servlet-1.0.war
                    │   ├── servlet-1.0.war.md5
                    │   └── servlet-1.0.war.sha1
                    ├── maven-metadata.xml
                    ├── maven-metadata.xml.md5
                    └── maven-metadata.xml.sha1

19 directories, 57 files


Intentionally, we did not add sources, GPG signature nor javadoc, but a central-prerequisites profile is provided to add them to the structure.

mvn clean deploy -DaltDeploymentRepository=local::file:target/deploy -Pcentral-prerequisites

that will add maven-source-plugin, maven-javadoc-plugin and maven-gpg-plugin:

...
[INFO] ------------------< org.apache.maven.studies:servlet >------------------
[INFO] Building servlet 1.0                                               [6/7]
[INFO]   from projects/servlet/pom.xml
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- buildplan:2.2.2:list (default-cli) @ servlet ---
[INFO] Build Plan for servlet: 
-------------------------------------------------------------------------------------------------
PHASE                  | PLUGIN                 | VERSION | GOAL          | EXECUTION ID         
-------------------------------------------------------------------------------------------------
process-resources      | maven-resources-plugin | 3.3.1   | resources     | default-resources    
compile                | maven-compiler-plugin  | 3.14.0  | compile       | default-compile      
process-test-resources | maven-resources-plugin | 3.3.1   | testResources | default-testResources
test-compile           | maven-compiler-plugin  | 3.14.0  | testCompile   | default-testCompile  
test                   | maven-surefire-plugin  | 3.5.3   | test          | default-test         
package                | maven-war-plugin       | 3.4.0   | war           | default-war          
package                | maven-source-plugin    | 3.3.1   | jar-no-fork   | attach-sources       
package                | maven-javadoc-plugin   | 3.11.2  | jar           | attach-javadocs      
verify                 | maven-gpg-plugin       | 3.2.8   | sign          | sign-artifacts       
install                | maven-install-plugin   | 3.1.4   | install       | default-install      
deploy                 | maven-deploy-plugin    | 3.1.4   | deploy        | default-deploy       
...


After execution with central-prerequisites profile, each artifact file has an additional .asc PGP detached signature (notice: not maven-metadata.xml), and some packagings provide -sources.jar and -javadoc.jar, which gives us now 73 files (= 3 * 7 for metadata + 4 * 13):

$ tree target/deploy
target/deploy
└── org
    └── apache
        └── maven
            └── studies
                ├── deploy
                │   ├── 1.0
                │   │   ├── deploy-1.0.pom
                │   │   ├── deploy-1.0.pom.asc
                │   │   ├── deploy-1.0.pom.md5
                │   │   └── deploy-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── ear
                │   ├── 1.0
                │   │   ├── ear-1.0.ear
                │   │   ├── ear-1.0.ear.asc
                │   │   ├── ear-1.0.ear.md5
                │   │   ├── ear-1.0.ear.sha1
                │   │   ├── ear-1.0.pom
                │   │   ├── ear-1.0.pom.asc
                │   │   ├── ear-1.0.pom.md5
                │   │   └── ear-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── ejbs
                │   ├── 1.0
                │   │   ├── ejbs-1.0.jar
                │   │   ├── ejbs-1.0.jar.asc
                │   │   ├── ejbs-1.0.jar.md5
                │   │   ├── ejbs-1.0.jar.sha1
                │   │   ├── ejbs-1.0.pom
                │   │   ├── ejbs-1.0.pom.asc
                │   │   ├── ejbs-1.0.pom.md5
                │   │   ├── ejbs-1.0.pom.sha1
                │   │   ├── ejbs-1.0-sources.jar
                │   │   ├── ejbs-1.0-sources.jar.asc
                │   │   ├── ejbs-1.0-sources.jar.md5
                │   │   └── ejbs-1.0-sources.jar.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── logging
                │   ├── 1.0
                │   │   ├── logging-1.0.jar
                │   │   ├── logging-1.0.jar.asc
                │   │   ├── logging-1.0.jar.md5
                │   │   ├── logging-1.0.jar.sha1
                │   │   ├── logging-1.0.pom
                │   │   ├── logging-1.0.pom.asc
                │   │   ├── logging-1.0.pom.md5
                │   │   └── logging-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── primary-source
                │   ├── 1.0
                │   │   ├── primary-source-1.0.jar
                │   │   ├── primary-source-1.0.jar.asc
                │   │   ├── primary-source-1.0.jar.md5
                │   │   ├── primary-source-1.0.jar.sha1
                │   │   ├── primary-source-1.0.pom
                │   │   ├── primary-source-1.0.pom.asc
                │   │   ├── primary-source-1.0.pom.md5
                │   │   └── primary-source-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── projects
                │   ├── 1.0
                │   │   ├── projects-1.0.pom
                │   │   ├── projects-1.0.pom.asc
                │   │   ├── projects-1.0.pom.md5
                │   │   └── projects-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                └── servlet
                    ├── 1.0
                    │   ├── servlet-1.0.pom
                    │   ├── servlet-1.0.pom.asc
                    │   ├── servlet-1.0.pom.md5
                    │   ├── servlet-1.0.pom.sha1
                    │   ├── servlet-1.0.war
                    │   ├── servlet-1.0.war.asc
                    │   ├── servlet-1.0.war.md5
                    │   └── servlet-1.0.war.sha1
                    ├── maven-metadata.xml
                    ├── maven-metadata.xml.md5
                    └── maven-metadata.xml.sha1

19 directories, 73 files


When run with Maven 4, the output in addition contains build POMs = *-build.pom, which brings us to 101 files:

$ tree target/deploy
target/deploy
└── org
    └── apache
        └── maven
            └── studies
                ├── deploy
                │   ├── 1.0
                │   │   ├── deploy-1.0-build.pom
                │   │   ├── deploy-1.0-build.pom.asc
                │   │   ├── deploy-1.0-build.pom.md5
                │   │   ├── deploy-1.0-build.pom.sha1
                │   │   ├── deploy-1.0.pom
                │   │   ├── deploy-1.0.pom.asc
                │   │   ├── deploy-1.0.pom.md5
                │   │   └── deploy-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── ear
                │   ├── 1.0
                │   │   ├── ear-1.0-build.pom
                │   │   ├── ear-1.0-build.pom.asc
                │   │   ├── ear-1.0-build.pom.md5
                │   │   ├── ear-1.0-build.pom.sha1
                │   │   ├── ear-1.0.ear
                │   │   ├── ear-1.0.ear.asc
                │   │   ├── ear-1.0.ear.md5
                │   │   ├── ear-1.0.ear.sha1
                │   │   ├── ear-1.0.pom
                │   │   ├── ear-1.0.pom.asc
                │   │   ├── ear-1.0.pom.md5
                │   │   └── ear-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── ejbs
                │   ├── 1.0
                │   │   ├── ejbs-1.0-build.pom
                │   │   ├── ejbs-1.0-build.pom.asc
                │   │   ├── ejbs-1.0-build.pom.md5
                │   │   ├── ejbs-1.0-build.pom.sha1
                │   │   ├── ejbs-1.0.jar
                │   │   ├── ejbs-1.0.jar.asc
                │   │   ├── ejbs-1.0.jar.md5
                │   │   ├── ejbs-1.0.jar.sha1
                │   │   ├── ejbs-1.0.pom
                │   │   ├── ejbs-1.0.pom.asc
                │   │   ├── ejbs-1.0.pom.md5
                │   │   ├── ejbs-1.0.pom.sha1
                │   │   ├── ejbs-1.0-sources.jar
                │   │   ├── ejbs-1.0-sources.jar.asc
                │   │   ├── ejbs-1.0-sources.jar.md5
                │   │   └── ejbs-1.0-sources.jar.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── logging
                │   ├── 1.0
                │   │   ├── logging-1.0-build.pom
                │   │   ├── logging-1.0-build.pom.asc
                │   │   ├── logging-1.0-build.pom.md5
                │   │   ├── logging-1.0-build.pom.sha1
                │   │   ├── logging-1.0.jar
                │   │   ├── logging-1.0.jar.asc
                │   │   ├── logging-1.0.jar.md5
                │   │   ├── logging-1.0.jar.sha1
                │   │   ├── logging-1.0.pom
                │   │   ├── logging-1.0.pom.asc
                │   │   ├── logging-1.0.pom.md5
                │   │   └── logging-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── primary-source
                │   ├── 1.0
                │   │   ├── primary-source-1.0-build.pom
                │   │   ├── primary-source-1.0-build.pom.asc
                │   │   ├── primary-source-1.0-build.pom.md5
                │   │   ├── primary-source-1.0-build.pom.sha1
                │   │   ├── primary-source-1.0.jar
                │   │   ├── primary-source-1.0.jar.asc
                │   │   ├── primary-source-1.0.jar.md5
                │   │   ├── primary-source-1.0.jar.sha1
                │   │   ├── primary-source-1.0.pom
                │   │   ├── primary-source-1.0.pom.asc
                │   │   ├── primary-source-1.0.pom.md5
                │   │   └── primary-source-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                ├── projects
                │   ├── 1.0
                │   │   ├── projects-1.0-build.pom
                │   │   ├── projects-1.0-build.pom.asc
                │   │   ├── projects-1.0-build.pom.md5
                │   │   ├── projects-1.0-build.pom.sha1
                │   │   ├── projects-1.0.pom
                │   │   ├── projects-1.0.pom.asc
                │   │   ├── projects-1.0.pom.md5
                │   │   └── projects-1.0.pom.sha1
                │   ├── maven-metadata.xml
                │   ├── maven-metadata.xml.md5
                │   └── maven-metadata.xml.sha1
                └── servlet
                    ├── 1.0
                    │   ├── servlet-1.0-build.pom
                    │   ├── servlet-1.0-build.pom.asc
                    │   ├── servlet-1.0-build.pom.md5
                    │   ├── servlet-1.0-build.pom.sha1
                    │   ├── servlet-1.0.pom
                    │   ├── servlet-1.0.pom.asc
                    │   ├── servlet-1.0.pom.md5
                    │   ├── servlet-1.0.pom.sha1
                    │   ├── servlet-1.0.war
                    │   ├── servlet-1.0.war.asc
                    │   ├── servlet-1.0.war.md5
                    │   └── servlet-1.0.war.sha1
                    ├── maven-metadata.xml
                    ├── maven-metadata.xml.md5
                    └── maven-metadata.xml.sha1

19 directories, 101 files

TODO: add discussion for .sha256 and .sha512 addition, which would go from 101 files to 155 (= 7 metadata * 5 (4 fingerprints) + 20 artifact files * 6 (.asc + 4 fingerprints))... (notice: when some tools publish fingeprints for .asc files, they add 20 * 4 = 80 additional files...)