1464 votes

Comment ajouter des fichiers jar locaux à un projet Maven ?

Comment ajouter des fichiers jar locaux (qui ne font pas encore partie du référentiel Maven) directement dans les sources de la bibliothèque de mon projet ?

1 votes

Bonjour @Praneel PIDIKITI, Pouvez-vous s'il vous plaît changer la réponse acceptée par celle qui a le plus de votes ?

1 votes

@nslntmnx Ce ne sera pas la meilleure solution, car toutes les solutions ont des inconvénients. stackoverflow.com/questions/364114/

1 votes

Si vos librairies sont mises à jour ou étendues à l'occasion, voir cette réponse a Je veux charger tous les JARs de mon dossier de projet libs avec maven. pour une méthode "pomifiée", évitant ainsi un dossier de dépôt supplémentaire et des lignes de commande encombrantes, ou encore install-file scripts.

1677voto

Alireza Fattahi Points 1318

Vous pouvez ajouter des dépendances locales directement (comme indiqué dans la rubrique construire un projet maven avec les bibliothèques propriétaires incluses ) comme ceci :

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/Name_Your_JAR.jar</systemPath>
</dependency>

Mise à jour

Dans les nouvelles versions, cette fonctionnalité est marquée comme dépréciée mais fonctionne toujours et n'a pas encore été supprimée (vous voyez juste un avertissement dans le journal lors du démarrage de maven). Un problème a été soulevé dans le groupe maven à ce sujet. https://issues.apache.org/jira/browse/MNG-6523 ( Vous pouvez participer et décrire pourquoi cette fonctionnalité est utile dans certains cas). J'espère que cette fonctionnalité restera là !

Si vous me demandez, tant que la fonction n'est pas supprimée, je l'utilise pour rendre la dépendance à seulement un vilain fichier jar dans mon projet qui n'a pas sa place dans le référentiel. Si cette fonctionnalité est supprimée, eh bien, il y a beaucoup de bonnes réponses ici que je peux choisir plus tard !

55 votes

Il y a des moments où l'on veut tester spécifiquement un ancien bocal par exemple, et je pense que cette réponse est bien adaptée à cela. C'est celle dont j'avais besoin. Upvoted

2 votes

Le dossier externe est mieux ? Cet exemple <systemPath> suggère un dossier dans le projet. Serait-il plus judicieux de conserver ces bocaux dans un dossier externe au projet ? Une sorte de petit pseudo-référentiel. Je suppose que Maven extrait une copie du jar d'un tel dossier externe.

41 votes

Aussi belle et facile qu'elle puisse paraître, cette solution présente le problème suivant : votreJar.jar ne sera pas inclus dans un fichier WAR pour votre application.

956voto

user373455 Points 1328

Installez le JAR dans votre dépôt Maven local (généralement .m2 dans votre dossier personnel) comme suit :

mvn install:install-file \
   -Dfile=<path-to-file> \
   -DgroupId=<group-id> \
   -DartifactId=<artifact-id> \
   -Dversion=<version> \
   -Dpackaging=<packaging> \
   -DgeneratePom=true

Où chacun se réfère :

<path-to-file> : le chemin d'accès au fichier à charger, par exemple c:\kaptcha-2.3.jar

<group-id> : le groupe sous lequel le fichier doit être enregistré, par ex. com.google.code

<artifact-id> : le nom de l'artefact pour le fichier, par exemple kaptcha

<version> : la version du fichier, par exemple 2.3

<packaging> : le conditionnement du fichier, par exemple jar

Référence

10 votes

Les instructions d'installation sur mon build avaient tout sauf la partie generatePom. Cela semble être crucial.

21 votes

La réponse ne mentionne pas un README ou que les pots sont apportés avec. Cependant, si le projet apporte les jarres, alors vous pourriez aussi bien mettre le repo dans le projet comme mentionné ici. stackoverflow.com/a/36602256/1000011 alors vous n'avez pas besoin d'un README car le projet fonctionnera comme si les jars étaient dans maven central sans aucune étape manuelle supplémentaire.

10 votes

@opticyclic votre commentaire a besoin de plus de upvotes, ou cette réponse doit être éditée. C'est une recette de désastre pour les novices qui ne réalisent pas que l'installation dans le repo Maven local ne comprendrait pas pour tout le monde.

15voto

Jigar Joshi Points 116533

Oui, vous pouvez avoir mais ce n'est pas une bonne idée.

Au lieu de cela, installez toutes ces jarres dans les dépôts maven.

Voir aussi

11voto

Puce Points 13540

Une façon de le faire est de le télécharger sur votre propre gestionnaire de dépôt Maven (tel que Nexus). C'est une bonne pratique d'avoir son propre gestionnaire de dépôt de toute façon.

Une autre méthode intéressante que j'ai vue récemment consiste à inclure le plugin d'installation Maven dans votre cycle de vie de construction : Vous déclarez dans le POM l'installation des fichiers dans le dépôt local. C'est une petite surcharge et aucune étape manuelle n'est nécessaire.

http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html

4 votes

J'ai fini par passer à Gradle. Cela ne fonctionne pas Si le jar local est défini comme dépendance, maven n'exécutera pas les plugins avant de résoudre les dépendances, une installation manuelle est inévitable. J'ai trouvé une discussion sur cette situation : stackoverflow.com/questions/5951999/

4voto

Simeon Points 3511

La meilleure solution consiste à créer votre propre dépôt à distance.

Ver aquí pour plus de détails sur la façon de procéder. Jetez un coup d'œil à la page ' Téléchargement vers un référentiel distant section ".

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