
FAQ Maven 2Consultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 74, dernière mise à jour : 22 septembre 2006
Sommaire→Utilisation→Gestion des dépendances
Maven recheche les dépendances dans le repository dit central, présent à l'adresse : http://www.ibiblio.org/maven2
Sur ce serveur, dans un sous-répertoire correspondant au groupId (les '.' permettent de séparer chacun des sous-répertoires) puis à l'artifactId, puis enfin à la version, se trouve le fichier POM de la dépendance ainsi que le fichier jar (ou autre selon le type d'artefact).
Pour ajouter une dépendance à un projet, il suffit de la déclarer dans le pom.xml.
Maven s'occupera de la récuperer (si il s'agit d'un projet ayant une licence compatible avec la redistribution) :
<project>
...
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
Une dépendance est décrite par les informations groupId/artifactId/version/type qui permettent de l'identifier de façon unique.
Si l'artefact est un jar, il n'est pas nécessaire de spécifier son type.
On doit préciser à Maven la version de la dépendance que l'on souhaite utiliser :
<project>
...
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
La version est obligatoire, sauf si on indique une dépendance déjà déclarée dans un POM parent au sein d'un tag <dependencyManagement>.
On peut préciser un numéro de version comme dans l'exemple ci-dessus.
On peut également donner une plage de versions à Maven (dans le tableau suivant x désigne la version choisie par Maven) :
| Syntaxe | Signification |
|---|---|
| (,1.0] | x <= 1.0 |
| [1.2,1.3] | 1.2 <= x <= 1.3 |
| [1.0,2.0) | 1.0 <= x < 2.0 |
| [1.5,) | x >= 1.5 |
| (,1.0],[1.2,) | x <= 1.0 or x >= 1.2. Plusieurs ensembles peuvent être déclarés, séparés par des ',' |
| (,1.1),(1.1,) | Une version autre que la 1.1. |
Le scope (la portée) d'une dépendance est déclaré par la balise scope dans la déclaration d'une dépendance :
<project>
...
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
La dépendance ci-dessus a le scope test, ce qui signifie qu'elle doit être utilisée pour compiler les tests et les exécuter.
Les scopes possibles sont :
- compile : la dépendance est nécessaire pour toutes les phases du build
- test : la dépendance est nécessaire pour la compilation/l'exécution des tests
- runtime : la dépendance est nécessaire à l'exécution, mais pas à la compilation
- provided : la dépendance est nécessaire à la compilation, mais ne sera pas packagée avec le projet. Typiquement, un container lui fournira cette dépendance (par exemple servlet-api).
Voir aussi : Introduction to the Dependency Mechanism
Certaines dépendances, de part leur license, ne peuvent pas être distribuées via le repository central de Maven. Il faut alors trouver le jar correspondant à cette dépendance et le charger dans le répository local en utilisant la commande :
mvn install:install-file -Dfile=<chemin-du-fichier> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
Un POM basique sera installé dans le repository local. Si vous connaissez les dépendances de cet artefact, vous devez éditer ce POM est y ajouter les dépendances, ainsi vous bénéficierez du mécanisme de dépendances transitives en utilisant cet artefact.
Le packaging est généralement un fichier jar.
Si le jar a une licence compatible avec la redistribution, mais n'est pas présent dans le repository, il s'agit d'une erreur. Vous pouvez donc ouvrir un dossier dans http://jira.codehaus.org/browse/MEV (après avoir revérifié que c'est bien une erreur, voir aussi : Guide to uploading artifacts to Ibiblio).
Voir aussi :
Guide to installing 3rd party JARs


















