web-dev-qa-db-fra.com

Maven ne parvient pas à obtenir des versions instantanées du référentiel

Notre référentiel interne (Artifactory) contient désormais les versions stables ainsi que les versions INSTANTANÉES de nos bibliothèques internes.

Pour les versions stables, il n'y a jamais eu de problème de téléchargement de contenu depuis le référentiel.

Cependant, lorsque j'ajoute un -SNAPSHOT, Maven prétend ne pas être en mesure de trouver la dépendance, même si elle se trouve très certainement dans le référentiel.

Si je crée et déploie la dépendance localement (c'est-à-dire dans mon référentiel local), tout fonctionne normalement.

Fondamentalement, cela fonctionne:

<dependency>
  <groupId>com.example</groupId>
  <artifactId>ourlibrary</artifactId>
  <version>1.0.0</version>
</dependency>

et cela ne veut pas:

<dependency>
  <groupId>com.example</groupId>
  <artifactId>ourlibrary</artifactId>
  <version>1.0.1-SNAPSHOT</version>
</dependency>

Même si les deux versions ont été construites de la même manière et déployées (pour autant que je sache) correctement dans le référentiel.

L'erreur:

Missing:
----------

1) com.example:ourlibrary:jar:1.0.1-SNAPSHOT,

  Try downloading the file manually from the project website.

  Then, install it using the command:
      mvn install:install-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you Host your own repository you can deploy the file there:
      mvn deploy:deploy-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

  Path to dependency:
        1) com.example:product:war:2.0.0-SNAPSHOT
        2) com.example:ourlibrary:jar:1.0.1-SNAPSHOT,

Bien que cela ressemble à la question this , la résolution à laquelle il est parvenu ne s'applique pas à mon cas.

Tout aperçu de cette question serait grandement apprécié.

Modifier

L'exécution avec -X (comme l'a suggéré John V.) a révélé ce qui suit:

[DEBUG] Skipping disabled repository central
[DEBUG] ourlibrary: using locally installed snapshot
[DEBUG] Skipping disabled repository central
[DEBUG] Using mirror: http://repo.example.com/repo (id: repo.example.com)
[DEBUG] Artifact not found - using stub model: Unable to download the artifact from any repository

  com.example:ourlibrary:pom:1.0.1-SNAPSHOT

from the specified remote repositories:
  repo.example.com (http://repo.example.com/repo)


[DEBUG] Using defaults for missing POM com.example:ourlibrary:pom:1.0.1-SNAPSHOT:compile
[DEBUG]   com.example:ourlibrary:jar:1.0.1-SNAPSHOT:compile (selected for compile)
27
Kris

Deux pensées me viennent à l'esprit:

  1. La structure de chemin dans votre référentiel interne pour votre artefact est incorrecte. Je suggère d'exécuter la commande maven avec le paramètre -X. Il affichera la tentative du maven de télécharger les fichiers. Obtenez la ligne qui a votre référentiel comme URL et essayez de la rechercher vous-même.

    Le chemin devrait ressembler à

    /com/example/ourlibrary/1.0.1/ourlibrary-1.0.1-SNAPSHOT.jar

  2. Vous n'avez pas inclus votre référentiel en tant que référentiel dans votre pom.xml
14
John Vint

En règle générale, vous disposez d'une URL d'instantanés distincte de l'URL des versions. Juste des chemins différents dans le même référentiel, mais répertoriés comme référentiels distincts dans le pom. Celui pour les instantanés doit avoir des instantanés activés, et celui pour les versions a des instantanés désactivés:

<repositories>
        <repository>
            <id>central</id>
            <url>
                http://<releases-url>
            </url>
            **<snapshots>
                <enabled>false</enabled>
            </snapshots>**
        </repository>

        <repository>
            <id>snapshots</id>
            <url>
                http://<snapshots-url>
            </url>
            <snapshots>
                **<enabled>true</enabled>**
                <!-- never, daily, interval:X (where X is in minutes) or always -->
                <!--<updatePolicy>daily</updatePolicy> -->
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
13
kevinmrohr