Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

Utiliser Maven pour télécharger des librairies

Maven, c'est comme la betterave : on aime, ou pas.

Je me range plutôt dans la seconde catégorie, mais j'ai récemment découvert (grâce à Grégory Boissinot) une utilisation méconnue de cet outil qui se révèle très pratique lors de la mise en place de projets non-Maven : le téléchargement automatique de librairies et de leurs dépendances. C'est praticulièrement intéressant lorsqu'on met en place des stacks techniques comprenant des frameworks assez lourds comme Hibernate, qui possède de nombreuses dépendances.
Notez que cette astuce peut également avoir son utilité sur des projets Maven, car il est parfois nécessaire de récupérer localement les librairies, par exemple pour distribuer le projet complet à un client, effectuer une démonstration de l'application depuis un CDRom, ou encore travailler sur un poste sans connexion Internet.

Concrètement, comment fait-on ?

Tout d'abord, si vous ne disposez pas déjà d'un fichier pom.xml, demandez à Maven d'en créer un minimal grâce à la commande suivante :

  1. mvn archetype:create -DgroupId=foo -DartifactId=bar

Le résultat devrait ressembler à ceci :

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>foo</groupId>
  5. <artifactId>bar</artifactId>
  6. <packaging>jar</packaging>
  7. <version>1.0-SNAPSHOT</version>
  8. <name>bar</name>
  9. <url>http://maven.apache.org</url>
  10.  
  11. <dependencies>
  12. // Déclarer les frameworks et librairies ici
  13. </dependencies>
  14.  
  15. </project>

Ensuite, complétez sa section <dependencies> (ligne 12 ci-dessus) en spécifiant les frameworks et librairies qui composeront votre application. Pour cela, le plus simple est de faire ses courses sur un moteur d'indexation de repositories Maven (comme mvnrepository ou mvnindex.org) et de copier/coller les fragments de XML qu'ils indiquent.
Par exemple, pour la dernière version de Spring, le fragment est :

  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-core</artifactId>
  4. <version>2.5.6</version>
  5. </dependency>

Enfin, ouvrez une console dans le répertoire contenant le fichier pom.xml, et lancez la commande magique :

  1. mvn dependency:copy-dependencies

Maven va alors télécharger les librairies spécifiées ainsi que toutes leurs dépendances, dans le sous-répertoire "target/dependency". Vous n'avez plus qu'à les récupérer et à les incorporer à votre projet !


Commentaires

1. Le dimanche 26 avril 2009, 17:34 par Guillaume Carré

Ce qui fonctionne aussi avec Ant et Ivy, et ça doit être plus rapide au premier lancement (aucun plugin maven à télécharger)

2. Le lundi 27 avril 2009, 06:51 par Nico_

bon tip ^^
Mais personnellement, je fais partie de la première catégorie, ceux ayant adopté maven... avec je l'avoue, pas mal de turbulences dans mes habitudes au début.
Maven, en cas de changement de version de librairie, va s'occuper de tout pour vous, alors qu'avec cette opération, vous devrez toujours vous demander en regardant votre répertoire lib (ou autres) quelles librairies vous devez conserver.
Maven, c'est en plus de la gestion des dépendances, la définition des <a href="http://maven.apache.org/guides/intr...">scopes</a>, la résolution des conflits, la génération des war, jar basés sur la définition du pom.xml, et bien d'autres, j'avoue ne pas le maitriser à 100%.
Ivy, je ne l'ai jamais essayé, mais le principe a l'air le même.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.