Je ne comprends pas pourquoi c'est si difficile: p>
Dans un script, j'ai besoin de copier un artefact de Nexus vers un certain répertoire. En utilisant l'API de repos Nexus, je devrais spécifier le référentiel que je ne veux pas avoir à connaître. J'ai donc essayé d'obtenir l'artefact avec le but d'obtenir à la place de la dépendance maven-dépendance, ce qui fonctionne bien. (Dans ce cas, je l'obtiens d'un groupe de notre Nexus qui inclut les deux, les rejets et les instantanés.) P>
Cependant, j'ai maintenant l'artefact de mon repo local et que le même objectif "Copier" du plugin ne semble pas pouvoir obtenir cet artefact de là. Est-il vraiment nécessaire de descendre dans le dossier .m2 et de saisir ce pot avec la commande UNIX CP? Quiconque a déjà copié des artefacts de leurs repos locaux à d'autres DIRS avant? P>
Alternativement, si quelqu'un peut me dire comment obtenir un artefact via l'API Nexus sans spécifier le repo, cela fonctionnerait aussi. P>
4 Réponses :
Je viens d'essayer cela, et cela a fonctionné pour moi:
mvn dependency:copy-dependencies -DincludeArtifactIds=jcharts -DincludeGroupIds=jcharts -DoutputDirectory=/tmp/
Mais il a besoin d'un pom pour courir (que je n'ai pas dans ce cas). Peut-être que quelque chose généré, comme un archétype?
Vous n'avez même pas besoin d'un POM. Vous pouvez utiliser les bibliothèques Java sous-jacentes qui téléchargent depuis Maven Repos.
Je veux dire, lorsque j'exécute cet objectif (avec des identifiants de groupe et d'artefact ajustés), je reçois le message "L'objectif nécessite qu'un projet soit exécuté, mais il n'y a pas de POM dans ce répertoire".
Eh bien, ça marche, il suffit de l'exécuter d'un diretoire où il y a un POM bien qu'il ne l'utilisera pas. Cependant, ce n'est pas ce que je cherchais car il ne copie que le dossier, je veux pousser tout mon local local à mon reposibilité de Nexus.
Si vous utilisez Sonatype Nexus, vous devez envisager de désactiver "Central" comme indiqué dans leur livre . p>
Sinon, par @keith, Vous pouvez également forcer Maven à ne pas télécharger à partir de référentiels non locaux L en l'exécutant en mode hors connexion: Vous pouvez également utiliser plug-in Maven Wagon à Copiez le fichier de votre référentiel local vers un répertoire arbitraire. Cela ne devrait pas nécessiter un POM (mais vous devrez peut-être fournir une URL complète au pot). P> Dépendance: la copie-dépendance code> fera ce que vous essayez de faire.
Dépendance: Obtenez CODE> Spécialement téléchargements de référentiels distants, comme indiqué dans le Documentation P>
-o code> p>
On dirait que mon problème pourrait être autre chose. J'ai pris votre conseil et j'ai essayé l'interrupteur -o, et maintenant Maven affirme que l'artefact n'est pas dans mon repo local. Je vais devoir enquêter sur ça. Merci!
semble que le problème était le fichier _maven.RePositories en conjonction avec la configuration Maven particulière à ma société. P>
Nous ne mettons pas les informations sur le repo local dans nos paramètres.xml. Tout est dans le parent POM que tous nos projets utilisent. Mais si vous voulez faire une magie pure MVN-CLI, vous n'avez pas le parent-POM, vous devez donc vous fournir l'URL au repo local vous-même. Cela est possible avec la dépendance: Obtenez l'objectif, c'est pourquoi j'ai pu télécharger mon artefact de notre Nexus dans mon repo local. P>
Lorsque vous utilisez C'est là que le fichier Je vais devoir étudier une solution plus propre à cela, cependant. P>
Pour rendre les choses encore plus compliquées, je ne pouvais pas utiliser la dépendance: copie ou dépendance: copie-dépendonnes. Pour certaines raisons, ils ont besoin d'un POM, que je n'ai pas dans mon usecase. Qu'est-ce que le travail est org.apache.maven.plugins: Maven-Dépendency-plugin: 2.8: Copier que je crois est censé être la même chose, mais c'est une autre histoire. P>
Merci pour vos réponses! P>
Merci d'avoir posté ça! J'avais le même problème; continué à aller au repo central. Devait définir un profil dans les paramètres.xml et énumérer le centre de Maven Repo et mon propre repo privé. multi-repos . J'ai également constaté que l'utilisation de la version 2.1 du plug-in de dépendance est posée sur une POM mais la 2.8 n'a pas. J'imagine que c'était une demande de fonctionnalité de pouvoir le faire fonctionner sans POM et donc 2,8 (la plus récente) a la capacité de courir sans POM.
Avec la version 2.8 de get and Copy Copy, ce fichier est nommé _remote.repositories et vit aux côtés des artefacts «obtenant» dans l'emplacement correspondant à l'intérieur ~ / .m2 / référentiel.
Je devais être capable de spécifier l'ID de groupe, l'identifiant d'artefact et la version (et l'emballage), cela a fonctionné pour moi:
mvn dependency:copy \ -Dartifact=org.openmrs.web:openmrs-webapp:2.2.0-SNAPSHOT:war \ -DoutputDirectory=/tmp
Quel plug-in Maven avez-vous essayé d'utiliser? Je m'attendrais à ce que le plugin de dépendance fonctionne pour cela: Maven.apache.org/plugins/ Maven-Dépendency-plugin Quand vous dites "J'ai maintenant l'artefact dans mon repo local", voulez-vous dire, dans ce cas, vous seulement i> a l'artefact dans votre repo local ... c'est-à-dire sur la même machine?
J'ai utilisé org.apache.maven.plugins: Maven-Dépendency-plugin: 2.8: Obtenez l'artefact de Nexus à mon repo local à ~ / .m2 - Alors maintenant, c'est sur ma machine locale (et sur notre Nexus local, trop).
Dans la deuxième étape, j'essaie d'utiliser org.apache.maven.plugins: Maven-Dépendency-plugin: 2.8: Copier pour obtenir cet artefact de ~ / .m2 / ** à un autre dir de ma machine mais le but de la copie va directement au centre et ne regarde pas mon représentant local (il ne regarde pas notre Nexus local car ce n'est pas configuré dans mes paramètres.xml, qui pourrait être étrange à part entière, mais nous configurons cela dans notre société. Parent pom; c'est la première étape, je peux fournir l'URL locale de Nexus, c'est pourquoi cela fonctionne)