ARTIFACTORY: How to override hardcoded pom.xml and enable alternative deployment repositories during Builds

ARTIFACTORY: How to override hardcoded pom.xml and enable alternative deployment repositories during Builds

Products
Frog_Artifactory
Content Type
Use_Case
AuthorFullName__c
Reddappa G
articleNumber
000006504
FirstPublishedDate
2025-07-01T11:30:06Z
lastModifiedDate
2025-06-30
VersionNumber
1
Introduction

When deploying Maven builds to JFrog Artifactory, the typical method involves specifying the target repository using the <distributionManagement> section in the project's pom.xml file as per our documentation

For example, a <distributionManagement> block in the pom.xml file looks like below:

User-added image 
However, in complex projects that involve multiple pom.xml files and parent POMs, this can become cumbersome, especially when there's a need to override the predefined repositories.

Manually updating each pom.xml or parent POM to point to new repositories introduces the risk of configuration errors. A common issue encountered in such scenarios is the 401 Unauthorized error, which occurs when repository definitions are incomplete or missing in any of the POM files.


Resolution

To simplify the deployment process and avoid potential configuration gaps, an alternate option is to specify the deployment repository as follows:

Option 1: In the Maven deploy command using the ‘-DaltDeploymentRepository’ flag. This approach overrides the repository defined in the pom.xml and ensures a consistent deployment target across the entire project, regardless of the repository configurations specified in individual POM files.
mvn clean deploy -DaltDeploymentRepository=<id>::<layout>::https://<JFrogURL>/<repository_name>
For the above example of <distributionManagement> in POM file, the example maven deploy command would look like below: 
mvn clean deploy -DaltDeploymentRepository=demo-releases::default::https://<JFrogURL>/<repository_name>
Option 2: We can also define these alternate deployment repositories in the ‘settings.xml’ as below:
<properties>         <altSnapshotDeploymentRepository><id(snapshots)>::<layout>::https://<JFrogURL>/<repository_name></altSnapshotDeploymentRepository>       <altReleaseDeploymentRepository><id(releases)>::<layout>::https://<JFrogURL>/<repository_name></altReleaseDeploymentRepository>
</properties>

 

Note: The format id::layout::url in the above needs to be changed according to the Maven documentation.

For the above example of <distributionManagement> in POM file, the following example contains an equivalent block to be added in ‘settings.xml’: 
<properties>         <altSnapshotDeploymentRepository>demo-snapshots::default::https://<JFrogURL>/<repository_name></altSnapshotDeploymentRepository>       <altReleaseDeploymentRepository>demo-releases::default::https://<JFrogURL>/<repository_name></altReleaseDeploymentRepository>
</properties>
Conclusion

The above methods streamline artifact deployment and reduce the chances of authentication or configuration errors in multi-module or inherited Maven projects.