103 votes

Maven: Comment inclure les pots, qui ne sont pas disponibles dans les répétitions dans un projet J2EE?

dans mon projet J2EE j'ai un couple de dépendances, qui ne sont pas disponibles dans n'importe quel référentiel, parce qu'ils sont propriétaires des bibliothèques. Ces bibliothèques doivent être disponibles au moment de l'exécution, de sorte que doivent être copiés à la cible/.../WEB-INF/lib ...

Maintenant, je suis à la liste système de dépendance dans mon POMPON, mais avec cette méthode, le problème, c'est que ne sont pas copiés dans l'objectif de construire lors de la compilation. Aussi cette méthode n'est pas très élégant.

Alors, quelle est la meilleure façon de les intégrer dans Maven?

Remarque: je ne veux pas créer mon propre référentiel.

199voto

Ric Jafe Points 843

Pour les gens qui veulent une solution rapide à ce problème:

<dependency>
  <groupId>LIB_NAME</groupId>
  <artifactId>LIB_NAME</artifactId>
  <version>1.0.0</version>
  <scope>system</scope>
  <systemPath>${basedir}/WebContent/WEB-INF/lib/YOUR_LIB.jar</systemPath>
</dependency>

il suffit de donner votre bibliothèque un unique id de groupe et le nom d'artefact et le point où il est dans le système de fichiers. Vous êtes bon pour aller.

Bien sûr, c'est un sale quick fix qui ne fonctionne que sur votre machine et si vous n'avez pas modifier le chemin d'accès à la libs. Mais des fois, c'est tout ce que vous voulez, d'exécuter et de faire quelques tests.

EDIT: viens de re-rouge de la question et a réalisé l'utilisateur a déjà été à l'aide de ma solution comme une solution temporaire. Je vais laisser ma réponse comme une aide rapide, pour d'autres qui viennent à cette question. Si quelqu'un n'est pas d'accord avec cette s'il vous plaît laissez-moi un commentaire. :)

56voto

Rich Seller Points 46052

Comme vous l'avez dit vous ne voulez pas configurer votre propre référentiel, peut-être cela aidera.

Vous pouvez utiliser l' installation de fichier objectif de l'maven-install-plugin à installer un fichier dans le dépôt local. Si vous créez un script avec une Maven invocation pour chaque fichier et de le garder à côté de l'bocaux, vous (et toute autre personne ayant accès) peuvent facilement installer les pots (et associés pom fichiers) de leur dépôt local.

Par exemple:

mvn install:install-file -Dfile=/usr/jars/foo.jar -DpomFile=/usr/jars/foo.pom
mvn install:install-file -Dfile=/usr/jars/bar.jar -DpomFile=/usr/jars/bar.pom

ou tout simplement

mvn install:install-file -Dfile=ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0 -Dpackaging=jar

Vous pouvez alors faire référence à la dépendance de la normale dans votre projet.

Toutefois, votre meilleur pari est toujours d'installer un interne dépôt distant et je vous recommande d'utiliser Nexus moi-même. Il peut fonctionner sur le développement de votre zone, si nécessaire, et la charge est minime.

8voto

Gregory Mostizky Points 4565

Vous devez définir un référentiel local qui sera l'hôte de ces bibliothèques. Il y a un certain nombre de projets qui font exactement cela. Par exemple Artifactory.

2voto

dfa Points 54490

vous pouvez les installer dans un local privé référentiel (par exemple .m2/repository dans votre répertoire / home): plus de détails ici

2voto

ipingu Points 167

Si je suis bien comprendre, si ce que vous voulez faire est d'exporter des dépendances lors de la phase de compilation, donc il n'y aura aucun besoin de rechercher manuellement chaque les bibliothèques nécessaires, vous pouvez utiliser le mojo copier-dépendances.

J'espère que ça peut vous être utile dans votre cas (exemples)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X