| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
Le plugin Exec nous permet d'exécuter le programme Simple Weather sans avoir à charger les dépendances
requises dans le classpath. Avec un autre système de build, nous aurions dû copier toutes les dépendances du
programme dans une espèce de répertoire fourre-tout lib/ qui aurait contenu les fichiers
JAR. Ensuite, nous aurions dû écrire un script basique qui aurait ajouté notre bytecode et nos
dépendances dans un classpath. C'est seulement après tout cela que nous aurions pu exécuter java
org.sonatype.mavenbook.weather.Main. Le plugin Exec profite du fait que Maven sait déjà comment créer et
gérer votre classpath et vos dépendances.
C'est très pratique, mais il est agréable de savoir de quoi se compose exactement le classpath de votre
projet. Même si le projet ne dépend que de quelques bibliothèques dont Dom4J, Log4J, Jaxen et Velocity, il dépend
aussi de dépendances transitives. Si vous avez besoin de connaître la composition de votre classpath, vous pouvez
utiliser le plugin Maven Dependency pour afficher une liste des dépendances résolues. Afin d'afficher cette liste pour le projet Simple Weather, exécutez
le goal dependency:resolve :
$ mvn dependency:resolve
...
[INFO] [dependency:resolve]
[INFO]
[INFO] The following files have been resolved:
[INFO] com.ibm.icu:icu4j:jar:2.6.1 (scope = compile)
[INFO] commons-collections:commons-collections:jar:3.1 (scope = compile)
[INFO] commons-lang:commons-lang:jar:2.1 (scope = compile)
[INFO] dom4j:dom4j:jar:1.6.1 (scope = compile)
[INFO] jaxen:jaxen:jar:1.1.1 (scope = compile)
[INFO] jdom:jdom:jar:1.0 (scope = compile)
[INFO] junit:junit:jar:3.8.1 (scope = test)
[INFO] log4j:log4j:jar:1.2.14 (scope = compile)
[INFO] oro:oro:jar:2.0.8 (scope = compile)
[INFO] velocity:velocity:jar:1.5 (scope = compile)
[INFO] xalan:xalan:jar:2.6.0 (scope = compile)
[INFO] xerces:xercesImpl:jar:2.6.2 (scope = compile)
[INFO] xerces:xmlParserAPIs:jar:2.6.2 (scope = compile)
[INFO] xml-apis:xml-apis:jar:1.0.b2 (scope = compile)
[INFO] xom:xom:jar:1.0 (scope = compile)
Comme vous pouvez vous en rendre compte, notre projet possède un grand nombre de dépendances. Alors que nous
n'avons inclus que quatre bibliothèques comme dépendances directes, nous avons en fait 15 dépendances. Dom4J
dépend de Xerces et des XML Parser APIs, Jaxen dépend de la présence de Xalan dans le
classpath. Le plugin Dependency va afficher la combinaison finale des dépendances utilisées pour compiler votre
projet. Si vous voulez connaître l'arbre complet des dépendances de votre projet, vous pouvez exécuter le goal
dependency:tree.
$ mvn dependency:tree
...
[INFO] [dependency:tree]
[INFO] org.sonatype.mavenbook.custom:simple-weather:jar:1.0
[INFO] +- log4j:log4j:jar:1.2.14:compile
[INFO] +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] +- jaxen:jaxen:jar:1.1.1:compile
[INFO] | +- jdom:jdom:jar:1.0:compile
[INFO] | +- xerces:xercesImpl:jar:2.6.2:compile
[INFO] | \- xom:xom:jar:1.0:compile
[INFO] | +- xerces:xmlParserAPIs:jar:2.6.2:compile
[INFO] | +- xalan:xalan:jar:2.6.0:compile
[INFO] | \- com.ibm.icu:icu4j:jar:2.6.1:compile
[INFO] +- velocity:velocity:jar:1.5:compile
[INFO] | +- commons-collections:commons-collections:jar:3.1:compile
[INFO] | +- commons-lang:commons-lang:jar:2.1:compile
[INFO] | \- oro:oro:jar:2.0.8:compile
[INFO] +- org.apache.commons:commons-io:jar:1.3.2:test
[INFO] \- junit:junit:jar:3.8.1:test
...
Si vous êtes aventurier dans l'âme ou si vous voulez voir le chemin complet des dépendances, avec les artefacts qui ont été rejetés à cause d'un conflit ou pour toute autre raison, exécutez Maven avec le flag debug.
$ mvn install -X
...
[DEBUG] org.sonatype.mavenbook.custom:simple-weather:jar:1.0 (selected for null)
[DEBUG] log4j:log4j:jar:1.2.14:compile (selected for compile)
[DEBUG] dom4j:dom4j:jar:1.6.1:compile (selected for compile)
[DEBUG] xml-apis:xml-apis:jar:1.0.b2:compile (selected for compile)
[DEBUG] jaxen:jaxen:jar:1.1.1:compile (selected for compile)
[DEBUG] jaxen:jaxen:jar:1.1-beta-6:compile (removed - )
[DEBUG] jaxen:jaxen:jar:1.0-FCS:compile (removed - )
[DEBUG] jdom:jdom:jar:1.0:compile (selected for compile)
[DEBUG] xml-apis:xml-apis:jar:1.3.02:compile (removed - nearer: 1.0.b2)
[DEBUG] xerces:xercesImpl:jar:2.6.2:compile (selected for compile)
[DEBUG] xom:xom:jar:1.0:compile (selected for compile)
[DEBUG] xerces:xmlParserAPIs:jar:2.6.2:compile (selected for compile)
[DEBUG] xalan:xalan:jar:2.6.0:compile (selected for compile)
[DEBUG] xml-apis:xml-apis:1.0.b2.
[DEBUG] com.ibm.icu:icu4j:jar:2.6.1:compile (selected for compile)
[DEBUG] velocity:velocity:jar:1.5:compile (selected for compile)
[DEBUG] commons-collections:commons-collections:jar:3.1:compile (selected for compile)
[DEBUG] commons-lang:commons-lang:jar:2.1:compile (selected for compile)
[DEBUG] oro:oro:jar:2.0.8:compile (selected for compile)
[DEBUG] junit:junit:jar:3.8.1:test (selected for test)
Dans la sortie de debug, vous voyez les rouages du mécanisme de gestion de dépendances. Ce que vous voyez
ici c'est l'arbre des dépendances de ce projet. Maven affiche les coordonnées Maven complètes de toutes les
dépendances de votre projet ainsi que les dépendances de vos dépendances (et
les dépendances des dépendances de vos dépendances). Vous pouvez voir que le projet
simple-weather dépend de jaxen, qui dépend de xom, qui à
son tour dépend de icu4j. Vous pouvez voir aussi que Maven construit ce graphe de dépendances
en supprimant les doublons et en résolvant les conflits entre différentes versions. Si vous avez un problème avec
certaines dépendances, il est souvent utile d'aller plus loin que la simple liste produite par
dependency:resolve. Activer les traces en mode debug, vous permet de voir
comment fonctionne le mécanisme de résolution des dépendances de Maven.