137 votes

Ajouter une dépendance dans Maven

Comment puis-je prendre un fichier jar que j'ai et l'ajouter au système de dépendances dans maven 2 ? Je serai le mainteneur de cette dépendance et mon code a besoin de ce jar dans le chemin de la classe pour qu'il compile.

140voto

Jack Leow Points 11081

Vous devrez le faire en deux étapes :

1. Donnez à votre JAR un groupId, un artifactId et une version et ajoutez-le à votre dépôt.

Si vous n'avez pas de dépôt interne, et que vous essayez simplement d'ajouter votre JAR à votre dépôt local, vous pouvez l'installer comme suit, en utilisant n'importe quel groupId/artifactIds arbitraire :

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

Vous pouvez également le déployer dans votre dépôt interne si vous en avez un et si vous souhaitez le mettre à la disposition des autres développeurs de votre organisation. J'utilise simplement l'interface web de mon référentiel pour ajouter des artefacts, mais vous devriez être en mesure d'accomplir la même chose en utilisant la fonction mvn deploy:deploy-file ... .

2. Mettez à jour les projets dépendants pour référencer ce JAR.

Ensuite, mettez à jour la dépendance dans le pom.xml des projets qui utilisent le JAR en ajoutant ce qui suit à l'élément :

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>

3 votes

Pouvez-vous ajouter plus de détails concernant le déploiement ? Nous avons un dépôt interne, et je veux déployer mon fichier jar local installé dans ce dépôt afin que les autres développeurs et notre serveur de construction obtiennent également le jar.

0 votes

Cette réponse devrait obtenir tous les likes ! J'ai utilisé cette méthode pour ajouter avec succès des dépendances pour mes projets maven sur Google App Engine et Heroku.

93voto

Frederic Morin Points 1944

Vous pouvez également spécifier une dépendance qui ne se trouve pas dans un dépôt maven. Cela peut s'avérer utile lorsqu'il n'existe pas de dépôt maven central pour votre équipe ou si vous disposez d'un dépôt de type CI serveur

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>

4 votes

Puis-je dépendre d'un autre fichier pom au lieu d'un jar ?

46voto

Kieveli Points 7162

En fait, en étudiant la question, je pense que toutes ces réponses sont incorrectes. Votre question est trompeuse en raison de notre niveau de compréhension de ce qui suit maven . Et je dis notre parce que je viens juste d'être introduit à maven .

Sur Eclipse Lorsque vous voulez ajouter un fichier jar à votre projet, vous téléchargez normalement le jar manuellement et vous le déposez ensuite dans le fichier lib répertoire. Avec maven, vous ne le faites pas de cette façon. Voici ce que vous faites :

  • Aller à mvnrepository
  • Recherchez la bibliothèque que vous voulez ajouter
  • Copiez le dependency dans votre pom.xml
  • reconstruire via mvn

Maintenant, maven se connectera et téléchargera le jar avec la liste des dépendances, et de résoudre automatiquement toute dépendance supplémentaire qui jar a pu avoir. Donc si le jar a également besoin de commons-logging, qui sera également téléchargé.

5 votes

J'utilise Spring Tool Suite (construit sur Eclipse). Après les étapes 1 et 2 de la solution ci-dessus : 1. Ouvrir pom.xml dans l'éditeur STS, cliquer sur l'onglet "Dependencies" en bas 2. Cliquer sur "Add" dans le groupe Dependencies 3. Copier/coller les informations de dépendance de l'onglet "Maven" depuis la fenêtre du navigateur (groupId, artifactId, version) dans les champs correspondants de la popup "Select Dependency" dans STS 4. Cliquez sur OK 5. sauvegarder pom.xml Une fois sauvegardé, mon répertoire Maven sur le disque dur et les paramètres de dépendance Maven dans STS sont mis à jour en quelques secondes. Vous pouvez modifier le fichier .xml directement, mais l'utilisation de l'outil peut aider à éviter les problèmes de format xml.

2 votes

C'est en effet la façon préférée de faire les choses, mais il y a des situations où vous ne pouvez pas le faire (par exemple un jar propriétaire qui n'est pas sur mvnrepository). Dans ce cas, vous aurez besoin d'un moyen de l'ajouter "manuellement", auquel cas une autre réponse aurait la solution.

0 votes

Il est également possible que la question posée soit moins celle d'un débutant. J'ai mis cela pour les personnes qui cherchent à faire quelque chose sans la formulation appropriée qui vient du temps passé à travailler avec maven. (Comme je l'étais à l'époque)

14voto

user40032 Points 101

Je ferais ça :

  1. ajoutez la dépendance comme vous le souhaitez dans votre pom :

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>
  2. exécuter mvn install il va essayer de télécharger le jar et échouer. Au cours du processus, il vous donnera la commande complète d'installation du jar avec le message d'erreur. Copiez cette commande et exécutez-la ! facile hein ? !

3voto

kdgregory Points 21849

Je suppose que vous demandez comment pousser une dépendance vers un "référentiel bien connu", et non pas simplement comment mettre à jour votre POM.

Si oui, alors ce est ce que vous voulez lire.

Et pour tous ceux qui cherchent à mettre en place un serveur de référentiel interne, regardez ici (la moitié du problème de l'utilisation de Maven 2 est de trouver la documentation).

0 votes

Je voudrais entretenir moi-même une dépendance. Il s'agit d'une bibliothèque interne.

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