Supposons que vous ayez un projet Java EE.
Supposons également que vous souhaitiez, en test tout au moins, le déployer sur une instance de Glassfish.Supposons toujours que, par habitude, ou par goût, ou même par masochisme, vous souhaitiez utiliser maven pour ça.Supposons enfin que, pour des raisons diverses et variées, vous utilisiez des données stockées dans, mettons, une base de donnée Neo4J, des queues JMS, une base de donnée relationelle, et que sais-je encore.Vous allez naturellement vous diriger vers un plugin maven permettant le pilotage de glassfish. Et, comme vous étes un bon développeur, donc fainçant, vous allez chercher sur le web ce qui existe. Et pour question comme ça, le web, c'est StackOverflow, ni plus, ni moins.Donc, vous allez vous diriger vers maven-glassfish-plugin. J'ai hélas déja dit ici qu'il comportait quelques bugs. Ce que je n'ai pas dit, c'est qu'en plus de ces bugs, il est impossible de l'utiliser pour déployer le connecteur Neo4J.Et là, il faut en revenir à la base.Enfin, la base, pas tout à fait.Vous savez que maven dispose d'un exec-maven-plugin, permettant d'exécuter n'importe quel programme ? Et bien en l'utilisant dans mon projet, je crée maintenant le domaine avec toutes les informations utiles (enfin, presque), je déploie mon application (avec ce fameux flag "--force" qui manque au maven-glassfish-plugin), et je peux même détruire le domaine. Bref, c'est la féte avec maven.

Evidement, si vous voulez savoir comment je déploie ce domaine, je peux vous l'expliquer.

J'ai donc découvert la commande multimode de Glassfish, qui permet de lui envoyer des "scripts".

J'ai donc créé un script create-domain.txt, dans lequel j'ai mis toutes les instructions utiles (dont le déploiement du connecteur Neo4J, pour lequel je dois retrouver le chemin d'une dépendance maven - merci gmaven -, ce que j'explique dans cette réponse sur StackOverflow enfin, disons qu'en plus de ça, je fais un peu de filtrage de ressource).Puis, dans mon pom, j'ai créé un profil activé par la propriété domain=create, dans lequel, lors de la phase package, je lance ma commande multimode. Vous voulez voir cette commande ? D'accord, la voilà :

https://gist.github.com/1127365

Enorme, non ?En fait, ça ne marche pas. Regardez cette question que je pose (encore une fois sur StackOverflow). Je soupçonne que ça a un rapport avec ce bug Ant correspondant peu ou prou au même cas. D'ailleurs, je vais tester sur autre chose que Windows XP, tiens.Notez qu'à cause de l'absence du flag force, j'utilise à peu prés la même méthode pour déployer mon EAR : un profil contenant un appel à exec-maven-plugin lançant asadmin avec les bons paramètres.

Comme quoi, parfois, Java EE, c'est la guerre, mais pas forcément à cause des raisons traditionnelles.