web-dev-qa-db-fra.com

Comment configurer le projet maven pour déployer les instantanés et les versions sur Nexus?

Comment configurer le projet maven pour déployer les instantanés et les versions sur 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>

Cette configuration crée une erreur dans Eclipse 3.8 avec m2e 1.2

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

Je souhaite que l'artefact soit déployé dans le référentiel InternalSnapshots lorsque la version du pom porte le suffixe -SNAPSHOT et qu'il soit déployé dans le référentiel InternalReleases lorsqu'il est RELEASE. Cela devrait se produire en utilisant le même fichier pom.xml et en exécutant la même commande mvn deploy.

20
Paul Verest

Vous devez faire la distinction entre le référentiel des versions et des instantanés. <distributionManagement> n'autorise qu'un <repository> et un <snapshotRepository> enfant.

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

32
nabcos

Exemple de configuration pom.xml

<!-- 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>

Extraits de code pour .m2/settings.xml pour l'installation par défaut de Nexus

<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>  

23
Paul Verest

Vous pouvez faire les deux.

Ajouter le maven-release-plugin 2.5.3

Exécutez ce qui suit:

mvn deploy clean: version version: préparer une version: effectuer

0
Scott Jones