Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    3.5. Relations entre projets

    Une des raisons pour lesquelles nous utilisons Maven est qu'il facilite le suivi des dépendances (et des dépendances de dépendances). Quand un projet dépend d'un artefact produit par un autre projet alors cet artefact est une dépendance. Dans le cas d'un projet Java, cela peut être aussi simple que de dépendre d'une dépendance externe comme Log4J ou JUnit. Les dépendances peuvent donc représenter des dépendances externes, mais elles permettent aussi de gérer les dépendances entre projets. Si le projet-a dépend du projet-b, Maven est suffisamment intelligent pour savoir que le projet-b doit être construit avant le projet-a.

    Les relations d'un projet ne se limitent pas aux dépendances et à déterminer tout ce qui est lui nécessaire pour construire un artefact. Maven sait modéliser les relations d'un projet vers son parent et entre sous-modules. Cette section présente les différentes relations qui peuvent exister entre projets et comment les configurer.

    3.5.1. Au sujet des coordonnées

    Les coordonnées permettent de définir de manière unique un projet, nous en avons déjà parlé dans le ???. Les relations entre projets se font au moyen des coordonnées Maven. Il ne suffit pas de dire que le projet-a dépend du projet-b ; en réalité, un projet avec un groupId, un artifactId et une version dépend d'un autre projet avec son groupId, son artifactId et sa version. Pour résumer, les coordonnées Maven se composent de trois éléments :

    groupId

    Un groupId regroupe un ensemble d'artefacts. Ces identifiants de groupe ont, en général, la forme d'un package Java. Par exemple, le groupId org.apache.maven est le groupId de base de l'ensemble des artefacts produits par le projet Apache Maven. Les identifiants de groupe sont convertis en chemin dans les dépôts Maven ; par exemple le groupId org.apache.maven correspondra au répertoire /maven2/org/apache/maven sur repo1.maven.org.

    artifactId

    L'artifactId est l'identifiant principal du projet. Quand vous produisez un artefact, il va prendre le nom de l'artifactId. Quand vous faites référence à un projet vous utiliserez l'artifactId. La combinaison artifactId, groupId doit être unique. En d'autres termes, vous ne pouvez pas avoir deux projets distincts avec les mêmes artifactId et groupId ; les artifactIds sont uniques pour un groupId donné.

    Note

    Si l'utilisation des '.' est très courante pour les groupIds, vous devriez éviter d'en utiliser pour les artifactIds. En effet, cela peut provoquer des problèmes lors de l'interprétation d'un nom complet jusqu'aux sous-composants.

    version

    Quand un artefact est délivré, on lui affecte un numéro de version. Ce numéro de version peut être un identifiant numérique tel que "1.0", "1.1.1" ou "1.1.2-alpha-01". Vous pouvez aussi utiliser ce que l'on appelle une version snapshot. Une version snapshot est une version d'un composant en cours de développement. Les numéros de version snapshot se terminent toujours par SNAPSHOT ; par exemple "1.0-SNAPSHOT", "1.1.1-SNAPSHOT" ou "1-SNAPSHOT". La Section 3.3.1.1, « Numéro de version de build » décrit les numéros de versions et les intervalles de versions.

    Il existe un quatrième identifiant moins utilisé :

    classifier

    On utilise un classifier lorsqu'on livre le même code, mais sous la forme de plusieurs artefacts distincts pour des raisons techniques. Par exemple, si vous voulez construire deux arterfacts d'un JAR, un compilé avec le compilateur Java 1.4 et un autre avec le compilateur Java 6, vous utiliserez le classifier pour produire deux JARs différents avec la même combinaison groupId:artifactId:version. Si votre projet utilise des extensions en code natif, vous utiliserez le classifier pour distinguer les artefacts selon chaque plate-forme cible. Les classifiers sont couramment utilisés lors du packaging du code source, de la JavaDoc d'un artefact ou d'assemblage de binaires.

    Dans ce livre, lorsque nous évoquons des dépendances, nous utilisons souvent le format simplifié suivant pour décrire une dépendance : groupId:artifactId:version. Pour référencer la version 2.5 de Spring, nous utiliserions org.springframework:spring:2.5. Quand vous demandez à Maven d'afficher une liste des dépendances grâce au plugin Maven Dependency, vous verrez que Maven a tendance à produire des traces en utilisant cette écriture simplifiée.