Affichage des articles dont le libellé est assembly. Afficher tous les articles
Affichage des articles dont le libellé est assembly. Afficher tous les articles

25 juin 2009

assembly mon amour...

Le plugin maven-assembly est probablement le plus énervant de la galaxie Maven.

Comme de nombreux Mavenistes j'utilise "l'héritage naturel" qui consiste à utiliser un même POM pour définir les modules du projet et comme parent commun.

Effet de bord : la construction mvn install commence par le parent, puis les modules, ce qui est logique si on veut que les modules "voient" leur parent dans son état final.

Maintenant, si je veux produire un assembly, ce plugin doit s'exécuter ... après les modules. Le bon vieux problème de l'oeuf et de la poule !

Une solution simple qui peut servir à d'autres : un POM "pom-assembly.xml" qui ne déclare que le plugin assembly attaché à la phase install et un unique module "."

<modules>
<module>.</module>
</modules>

<build>
<defaultgoal>install</defaultgoal>
<plugins>
<plugin>
<artifactid>maven-assembly-plugin</artifactid>
<inherited>false</inherited>
...
</plugin>
</plugins>
</build>

en lançant un mvn -f pom-assembly.xml install maven va enchaîner l'install des modules mais pas celle de ce POM qui n'est plus le parent global.

D:\projets\xx>mvn -f pom-assembly.xml
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] xx parent
[INFO] xx :: Composants GWT
[INFO] xx :: configuration
[INFO] xx :: infrastructure
[INFO] xx :: wsdl
[INFO] xx :: modele
[INFO] xx :: services
[INFO] xx :: persistance
[INFO] xx :: ordonnanceur
[INFO] xx :: services web
[INFO] xx :: batchs
[INFO] xx :: simulateurs
[INFO] xx :: ear
[INFO] xx :: tests d'intÚgration
[INFO] xx :: assembly
[INFO] -----------------------------------------------

Je sais, ça sent le gros hack à deux cents, mais ça dépanne en attendant Maven 3