Transformer un CLASSPATH en liste de dépendances maven ?

Aujourd’hui, j’ai eu un petit truc pénible à faire.
J’avais un jar venu … de l’extérieur … que je souhaitais mettre dans mon repository maven d’entreprise. Bien sûr, les choses auraient été bien plus simple si un artefact avait été disponible, mais hélas, ça n’était pas le cas (apparemment pour des raisons commerciales).
Donc, j’avais ce jar , dans un dossier lib, accompagné d’une palanquée d’autres jars de provenances diverses (jetty, log4j, jUnit, Jena, …).
Coup de bol, comme il s’agit d’un jar exécutable (ou à peu prés), celui-ci disposait d’un MANIFEST.MF complet. En particulier, il disposait d’une entrée Class-Path, listant donc les dépendances runtime de ce jar. Il me fallait donc les extraire pour les transformer en dépendances maven. Bon, comme, en fait, je devais faire ça pour un paquet de jars, j’ai écrit un petit script Groovy pour automatiser tout ça :

 

 

En bonus, pour les cas où on sait à quoi correspond un jar (par exemple, si je sais que jena/jena.jar correspond à l’artefact com.hp.hpl.jena:jena:2.6.3, on peut ajouter ça dans un fichier de propriétés Java (mais en XML, parce que les caractères « : » sont interprétés – curieusement – comme des séparateurs clé/valeur). Un fichier qui aura donc cette tête-là :

 

 

Vous allez bien sûr me demander si il ya des feintes dans ce paquet épais de code Groovy.
Pas trop, mis à part une bon sang d’expression régulière. Oui, je sais, maintenant, j’ai deux problèmes. Cela dit, l’avantage avec ce genre de truc, c’est que le temps de développement de l’expression régulière (grâce à un testeur en ligne) est en fait bien plus long que son temps de mise en oeuvre dans le code.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s