Notre référentiel interne (Artifactory) contient maintenant les versions stables ainsi que les versions SNAPSHOT de nos bibliothèques internes.Maven ne parvient pas à obtenir les builds SNAPSHOT à partir du dépôt
Pour les versions stables, il n'y a jamais eu de problème de téléchargement depuis le référentiel. Cependant, lorsque j'ajoute un -SNAPSHOT, Maven prétend ne pas pouvoir trouver la dépendance, même si elle est définitivement dans le référentiel.
Si je compile et déploie la dépendance localement (c'est-à-dire dans mon référentiel local), tout fonctionne normalement.
En gros, cela fonctionne:
<dependency>
<groupId>com.example</groupId>
<artifactId>ourlibrary</artifactId>
<version>1.0.0</version>
</dependency>
et cela ne:
<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 façon et déployées (pour autant que je peux peut-être dire) correctement au 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 semble similaire à this question, la résolution est arrivé à il ne concerne pas mon cas.
Toute idée sur ce problème serait grandement appréciée.
Modifier
Courir avec -X (comme John V. a suggéré) 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)
Je n'ai pas déclarer la prise en pension dans le POM, mais spécifié dans les paramètres de Maven que notre repo était universel (*) miroir.Cela ne devrait-il pas être suffisant (c'est certainement suffisant pour les constructions stables)? L'ajout d'une déclaration explicite au POM semble résoudre le problème. – Kris
Malheureusement, je n'ai pas trop travaillé avec settings.xml pour les dépôts. Je les ai inclus dans un pom parent, donc tout développeur débutant ne doit pas s'inquiéter de settings.xml au cas où le référentiel doit changer (ce qu'il a réellement pour nous) –
Je pense que j'ai raisonné cela. Pour les versions stables, Maven sera par défaut 'central', ce que mes paramètres miroir redirigent vers notre référentiel. Pour les constructions SNAPSHOT il n'y a pas de défaut (car le central ne les gère pas) et en l'absence du POM spécifiant un repo (qui * gère * les constructions SNAPSHOT), il échouera simplement sans même essayer de le rechercher. – Kris