How to configure maven project to deploy both snapshot and releases to Nexus?

49,105

Solution 1

You need to distinguish between the releases and snapshots repository. <distributionManagement> only allows one <repository> and one <snapshotRepository> child.

http://maven.apache.org/pom.html#Distribution_Management

Solution 2

Example of pom.xml configuration

<!-- http://maven.apache.org/pom.html#Distribution_Management -->
<distributionManagement>
    <snapshotRepository>
        <id>InternalSnapshots</id>
        <name>Internal Snapshots</name>
        <url>http://192.168.16.232:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
    <repository>
        <id>InternalReleases</id>
        <name>Internal Releases</name>
        <url>http://192.168.16.232:8081/nexus/content/repositories/releases/</url>
    </repository>
</distributionManagement>

Snippets for .m2/settings.xml for default Nexus installation

<server>   
    <id>thirdparty</id>   
  <username>deployment</username>
  <password>deployment123</password>
</server>
<server>
  <id>InternalReleases</id>
  <username>deployment</username>
  <password>deployment123</password>
 </server>  
<server>
  <id>InternalSnapshots</id>
  <username>deployment</username>
  <password>deployment123</password>
 </server>  
Share:
49,105
Paul Verest
Author by

Paul Verest

Java Developer, Architect, Team Leader; Agile Coach, Tech Manager Authoring Nodeclipse, Anide.js, Enide Organizing http://szjug.github.io/ Building up JVMs, Spring.io and Node.js User Groups (Java, Groovy, Scala, Android, JavaScript)

Updated on April 29, 2021

Comments

  • Paul Verest
    Paul Verest about 3 years

    How to configure maven project to deploy both snapshot and releases to Nexus?

    <distributionManagement>
        <repository>
            <id>InternalReleases</id>
            <name>Internal Releases</name>
            <url>http://192.168.16.232:8081/nexus/content/repositories/releases/</url>
        </repository>
        <repository>
            <id>InternalSnapshots</id>
            <name>Internal Snapshots</name>
            <url>http://192.168.16.232:8081/nexus/content/repositories/snapshots/</url>
        </repository>
    </distributionManagement>
    

    This configuration creates error in Eclipse 3.8 with m2e 1.2

    Project build error: Non-parseable POM D:\Workspaces\W\Parent\pom.xml: Duplicated tag: 'repository' (position: START_TAG 
     seen ...
    

    I want the artifact deployed to the InternalSnapshots repository when the pom's version is suffixed with -SNAPSHOT and deployed to the InternalReleases repository when it is RELEASE. This should happen using the same pom.xml file and executing the same mvn deploy command.