web-dev-qa-db-fra.com

Publier un instantané sur Nexus à l'aide de maven 3.0.5

Je ne parviens pas à publier une version instantanée d'un artefact que je construis à l'aide de maven to nexus. La version de mon artefact indique 1.0.0-SNAPSHOT.

Je peux exécuter mvn clean install sans problème. Mais lorsque j'essaie de déployer en utilisant mvn deploy, j'obtiens le message d'erreur suivant:

Return code is: 400, ReasonPhrase: Repository version policy: RELEASE does not allow version: 1.0.0-20161019.214318-1. -> [Help 1]

D'après ce que j'ai pu constater, maven3 ajoute l'horodatage au lieu du suffixe SNAPSHOT de l'artefact que je souhaite déployer. La balise <uniqueVersion> de maven n'est pas prise en charge dans maven3. Quelle est l'approche que je dois adopter pour déployer ces artefacts à l'aide de la commande mvn deploy.

Mise à jour: Pom.xml

   <distributionManagement>
    <repository>
      <id>my-nexus-snapshots</id>
      <name>Internal Snapshot Releases</name>
      <url>http://localhost:9999/repository/maven-snapshots/</url>
    </repository>
    <snapshotRepository>
      <id>my-nexus-releases</id>
      <name>Internal Releases</name>
      <url>http://localhost:9999/repository/maven-releases/</url>
    </snapshotRepository>
  </distributionManagement>

settings.xml

    <server>
        <id>my-nexus-snapshots</id>
        <username>user</username>
        <password>user123</password>
    </server>
    <server>
        <id>my-nexus-releases</id>
        <username>user</username>
        <password>user123</password>
    </server>
7
hYk

Habituellement, votre lien possède des référentiels distincts "instantanés" et "versions". Les versions SNAPSHOT sont déployées sur les premières versions, les versions non SNAPSHOT sur ces dernières. Pour le déploiement, ces référentiels doivent être spécifiés par vous. Vous pouvez le faire en ajoutant la section distributionManagement à votre pom. Là, vous pouvez définir des cibles spécifiques pour les deux cibles.

<distributionManagement>
  <repository>
    <id>releases</id>
    <name>releases</name>
    <url>http://somerepo:8081/nexus/content/repositories/releases/</url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <name>snapshots</name>
    <url>http://somerepo:8081/nexus/content/repositories/snapshots/</url>
  </snapshotRepository>
</distributionManagement>
6
JF Meier

Si vous utilisez Gradle cela peut être fait dans les paramètres de votre référentiel.
Il suffit d’ajouter le maven-snapshots url

Par exemple:

 repositories {
        maven {
            url = 'http://nexus.something.com/repository/maven-central/'
        }
        maven {
            url = 'http://nexus.something.com/repository/maven-releases/'
        }
        maven {
            url = 'http://nexus.something.com/repository/maven-snapshots/'
        }
    }
0
Dias