FAQ MavenConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 97, dernière mise à jour : 12 mai 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.


SommaireUtilisationGestion des dépendances (5)
précédent sommaire suivant
 

Maven recherche les dépendances dans le repository dit central, présent à l'adresse : http://search.maven.org/

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 trouvent le fichier POM de la dépendance ainsi que le fichier .jar (ou autre selon le type d'artefact).

Mis à jour le 17 juillet 2006 denisC elitost

Pour ajouter une dépendance à un projet, il suffit de la déclarer dans le pom.xml.

Maven s'occupera de la récupérer (s'il s'agit d'un projet ayant une licence compatible avec la redistribution) :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
  
<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.

Mis à jour le 17 juillet 2006 denisC elitost

On doit préciser à Maven la version de la dépendance que l'on souhaite utiliser :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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

Mis à jour le 17 juillet 2006 denisC elitost

Le scope (la portée) d'une dépendance est déclaré par la balise scope dans la déclaration d'une dépendance :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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).

Mis à jour le 17 juillet 2006 denisC elitost

Certaines dépendances, de part leur licence, 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 :

Code xml : Sélectionner tout
1
2
mvn install:install-file -Dfile=<chemin-du-fichier> -DgroupId=<group-id> \ 
    -DartifactId=<artifact-id> -Dversion=<version>  -Dpackaging=<packaging> -DgeneratePom=true
Un POM basique sera installé dans le repository local. Si vous connaissez les dépendances de cet artefact, vous devez éditer ce POM et 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 (après avoir revérifié que c'est bien une erreur, suivez le guide : Guide to uploading artifacts to Ibiblio).

Mis à jour le 17 juillet 2006 denisC elitost

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -