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 Ant et Ivy pour télécharger des librairies

Suite à une bonne remarque sur le billet précédent, voici une méthode pour télécharger automatiquement des librairies et leurs dépendances avec Ant et Ivy.

Pour rappel, Ant est un outil de build et d'automatisation, qui exécute des tâches décrites dans un fichier XML (généralement nommé "build.xml"), et Ivy un moteur de résolution de dépendances utilisable via des tâches Ant. L'installation de ces produits est très simple, similaire à celle de Maven : téléchargement puis décompression d'une archive, et positionnement d'une variable d'environnement.

Le système repose sur deux fichiers de configuration :

  • Le fichier "ivy.xml", qui permet de déclarer les librairies du projet
  • Le fichier "build.xml", un script Ant qui nous permettra de piloter Ivy

Tout d'abord, voici le fichier "ivy.xml", très simple :

  1. <ivy-module version="2.0">
  2. <info organisation="net.thecodersbreakfast" module="ant-ivy"/>
  3. <dependencies>
  4. <dependency org="org.apache.wicket" name="wicket" rev="1.3.5"/>
  5. </dependencies>
  6. </ivy-module>

On voit à la ligne 4 la déclaration de la librairie Wicket 1.3.5.
La syntaxe est un peu différente de celle de Maven, mais on y trouve les mêmes informations. Il est donc possible, comme précédemment, de les trouver sur les moteurs d'indexation de repositories Maven, comme mvnrepository ou mvnindex.

Ensuite, voici le script Ant associé :

  1. <project xmlns:ivy="antlib:org.apache.ivy.ant" default="download-libs">
  2. <target name="download-libs" description="Download dependencies">
  3. <ivy:retrieve pattern="lib/[artifact].[ext]"/>
  4. </target>
  5. </project>

La ligne 1 importe le namespace "ivy", qui autorise l'utilisation d'Ivy au sein des scripts Ant. La ligne 3 demande (gentiment) à Ivy de télécharger les librairies déclarées précédemment dans le fichier "ivy.xml". Celles-ci seront placées dans un sous-répertoire "lib" et nommées selon le pattern "artifact.ext" (ex: wicket.jar).

Il ne reste plus qu'à lancer le script Ant. Pour cela, il suffit d'ouvrir une console dans le répertoire contenant les deux fichiers de configuration, et de lancer la commande :

  1. ant

Et voilà !


Commentaires

1. Le dimanche 26 avril 2009, 21:41 par Grégory Boissinot

Ivy est le gestionnaire de dépendances le plus puissant du marché.

Vous pouvez effectivement utiliser ce gestionnaire de dépendances pour télécharger toutes vos librairies. Comme le signale Olivier, cela est très utile pour télécharger toutes les dépendances transitives de nombreux framework comme Hibernate, Spring, Wicket, …

Par défaut, Ivy utilise un resolver Maven 2 permettant de bénéficier de la fonctionnalité la plus utile de Maven, c'est-à-dire le contenu des repository Maven et les méta données. En effet, devant la popularité et la très grande utilisation de Maven, les repository Maven contiennent la quasi totalité des frameworks open-source. Et pour chaque artefact, nous avons les dépendances nécessaires.

Mais pour ce besoin, au lieu de coupler Ivy à un builder comme Ant (ou à d'autres comme Gant ou Gradle), je vous conseille d'utiliser le gestionnaire de dépendance Ivy en standalone. Il suffit d'écrire votre descripteur de dépendance Ivy : le fichier ivy.xml; Ensuite il suffit d'invoquer en ligne de commande
java -jar ivy-2.1.0-rc1.jar -retrieve lib/[artifact].[ext] -ivy ivy.xml

L'invocation de cette commande téléchargera, dans le répertoire lib situé à la racine du répertoire de l'invocation de la commande, toutes les dépendances et dépendances transitives, décrites dans le fichier ivy.xml.

Mais si vous ne souhaitez pas écrire vos dépendances dans un fichier XML, vous pouvez passez les dépendances directement à la ligne de commande comme ceci
java -jar ivy-2.1.0-rc1.jar -ivy ivy.xml -retrieve lib/[artifact].[ext] -dependency org.apache.wicket wicket 1.3.5 -dependency jfree jfreechart 1.0.5

Plus d'informations sur la documentation officielle
http://ant.apache.org/ivy/history/2...

2. Le dimanche 26 avril 2009, 22:27 par Grégory Boissinot

Pour information, concernant les moteurs de recherche d'artefacts Maven, je déconseille vivement le moteur mvnrepository.com qui n'est pas à jour dans son index. De plus, il est souvent indisponible.

mvnindex.org (couplé à son plugin Eclipse) est très bien mais limité au repository central Maven (http://repo1.maven.org/maven2).

Pour ma part, j'utilise le très bon et très complet moteur de recherche MvnBrowser
http://www.mvnbrowser.com/

Ajouter un commentaire

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