web-dev-qa-db-fra.com

Ajouter une dépendance à Maven

Comment prendre un fichier jar que je possède et l'ajouter au système de dépendances dans maven 2? Je serai le responsable de cette dépendance et mon code a besoin de ce fichier jar dans le chemin de classe pour pouvoir être compilé.

132
Milhous

Vous devrez le faire en deux étapes:

1. Attribuez à votre JAR un identifiant groupId, artifactId et sa version, puis ajoutez-les à votre référentiel.

Si vous ne disposez pas d'un référentiel interne et que vous essayez simplement d'ajouter votre fichier JAR à votre référentiel local, vous pouvez l'installer comme suit, à l'aide de 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 sur votre référentiel interne si vous en avez un et que vous souhaitez le rendre disponible pour les 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 capable d'accomplir la même chose en utilisant mvn deploy:deploy-file ....

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

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

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

Vous pouvez également spécifier une dépendance qui ne se trouve pas dans un référentiel Maven. Cela peut être utile s'il n'existe pas de référentiel central maven pour votre équipe ou si vous avez un serveur CI

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

En fait, en enquêtant sur cela, je pense que toutes ces réponses sont incorrectes. Votre question est trompeuse en raison de notre niveau de compréhension de maven. Et je dis notre parce que je viens juste d’être initié à maven.

Dans Eclipse, lorsque vous souhaitez ajouter un fichier JAR à votre projet, vous devez normalement télécharger le fichier jar manuellement, puis le déposer dans le fichier lib répertoire. Avec Maven, vous ne le faites pas de cette façon. Voici ce que vous faites:

  • Aller à mvnrespoitory
  • Recherchez la bibliothèque que vous souhaitez ajouter
  • Copiez la déclaration dependency dans votre pom.xml
  • reconstruire via mvn

Maintenant, maven va se connecter et télécharger le jar avec la liste des dépendances, et résoudra automatiquement toutes les dépendances supplémentaires que jar aurait pu avoir. Donc, si jar avait également besoin de la journalisation commune, celui-ci sera également téléchargé.

45
Kieveli

Je ferais ceci:

  1. ajoutez la dépendance que vous voulez dans votre pom:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>
    
  2. courir mvn install il essaiera de télécharger le pot et échouera. Sur le processus, il vous donnera la commande complète d’installer le jar avec le message d’erreur. Copiez cette commande et lancez-la! facile hein?!

14
user40032

Je suppose que vous demandez comment insérer une dépendance dans un "référentiel bien connu" et non pas simplement demander comment mettre à jour votre POM.

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

Et pour ceux qui souhaitent configurer un serveur de référentiel interne, regardez ici (la moitié du problème lié à l’utilisation de Maven 2 consiste à trouver la documentation)

3
kdgregory