dans mon projet J2EE, j'ai quelques dépendances, qui ne sont disponibles dans aucun référentiel Maven, car ce sont des bibliothèques propriétaires. Ces bibliothèques doivent être disponibles au moment de l'exécution, de sorte qu'elles doivent être copiées dans la cible /.../ WEB-INF / lib ...
Pour le moment, je les énumère en tant que dépendance système dans mon POM, mais avec cette méthode, le problème est qu'ils ne sont pas copiés dans la version cible lors de la compilation. Cette méthode n'est pas non plus très élégante.
Alors, quelle est la meilleure façon de les intégrer dans Maven?
Remarque: je ne souhaite pas créer mon propre référentiel Maven.
java
maven-2
build-process
Samson
la source
la source
Réponses:
Comme vous l'avez dit, vous ne voulez pas créer votre propre référentiel, cela vous aidera peut-être.
Vous pouvez utiliser l' objectif de fichier d'installation de maven-install-plugin pour installer un fichier dans le référentiel local. Si vous créez un script avec une invocation Maven pour chaque fichier et que vous le conservez à côté des fichiers JAR, vous (et toute autre personne ayant accès) pouvez facilement installer les fichiers JAR (et les fichiers pom associés) dans leur référentiel local.
Par exemple:
ou juste
Vous pouvez ensuite référencer les dépendances comme d'habitude dans votre projet.
Cependant, votre meilleur pari est toujours de configurer un référentiel distant interne et je recommanderais d'utiliser Nexus moi-même. Il peut fonctionner sur votre boîte de développement si nécessaire, et la surcharge est minime.
la source
Pour les personnes souhaitant une solution rapide à ce problème:
donnez simplement à votre bibliothèque un identifiant de groupe et un nom d'artefact uniques et pointez vers son emplacement dans le système de fichiers. Tu es prêt.
Bien sûr, il s'agit d'une solution rapide et sale qui fonctionnera UNIQUEMENT sur votre machine et si vous ne modifiez pas le chemin d'accès aux bibliothèques. Mais parfois, c'est tout ce que vous voulez, exécuter et faire quelques tests.
EDIT: il suffit de redéfinir la question et de réaliser que l'utilisateur utilisait déjà ma solution comme solution temporaire. Je laisserai ma réponse comme une aide rapide pour les autres qui viennent à cette question. Si quelqu'un n'est pas d'accord avec cela, laissez-moi un commentaire. :)
la source
Créez un dossier de référentiel sous votre projet. Prenons
Ensuite, installez votre fichier jar personnalisé dans ce dépôt:
Enfin, ajoutez les définitions de dépôt et de dépendance suivantes aux projets pom.xml:
la source
/
(c'est- à -dire, indiquant un dossier), alors le dépôt est créé avec groupId. Ex: si l'ID de groupe estfoo.com
et localRepositoryPath estrepo
, le dossier du référentiel devientrepo.foo.com
.Vous devez configurer un référentiel local qui hébergera ces bibliothèques. Il existe un certain nombre de projets qui font exactement cela. Par exemple Artifactory .
la source
Aucune des solutions ne fonctionne si vous utilisez la version Jenkins !! Lorsque pom est exécuté à l'intérieur du serveur de construction Jenkins ... ces solutions échoueront, car Jenkins exécutera pom tentera de télécharger ces fichiers à partir du référentiel d'entreprise.
Copiez les fichiers jars sous src / main / resources / lib (créez le dossier lib). Ceux-ci feront partie de votre projet et iront jusqu'au serveur de déploiement. Dans le serveur de déploiement, assurez-vous que vos scripts de démarrage contiennent src / main / resources / lib / * dans le chemin de classe. Alto.
la source
vous pouvez les installer dans un référentiel local privé (par exemple .m2 / référentiel sous votre répertoire personnel): plus de détails ici
la source
Si je comprends bien, si ce que vous voulez faire est d'exporter les dépendances pendant la phase de compilation afin qu'il n'y ait pas besoin de récupérer manuellement chacune des bibliothèques nécessaires, vous pouvez utiliser les dépendances de copie mojo .
J'espère que cela peut être utile dans votre cas ( exemples )
la source
La solution de @Ric Jafe est ce qui a fonctionné pour moi.
Ceci est exactement ce que je cherchais. Un moyen de le faire passer pour le code de test de recherche. Rien d'extraordinaire. Ouais, je sais que c'est ce qu'ils disent tous :) Les différentes solutions de plugins maven semblent exagérées pour mes besoins. J'ai des fichiers JAR qui m'ont été donnés en tant que bibliothèques tierces avec un fichier pom. Je veux qu'il compile / s'exécute rapidement. Cette solution que j'ai banalement adaptée à python a fait des merveilles pour moi. Coupé et collé dans mon pom. Le code Python / Perl pour cette tâche se trouve dans cette Q&R: Puis-je ajouter des fichiers JAR à maven 2 build classpath sans les installer?
la source
Continuez à les utiliser comme dépendance système et copiez-les dans la cible /.../ WEB-INF / lib ... en utilisant le plugin de dépendance Maven:
http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html
la source
L'installation seule n'a pas fonctionné pour moi.
la source