Question

J'ai créé un plug-in Maven2 personnalisé à l'aide de Ant. J'aimerais appeler un autre plug-in Maven, en particulier le plug-in Cargo Maven2, immédiatement après la fin du plug-in Ant personnalisé. Cependant, je ne souhaite pas associer le plug-in Cargo à un autre objectif ou à une autre phase. Existe-t-il un moyen de les exécuter de manière consécutive sans avoir à écrire un script batch? Est-il possible d’appeler le plug-in Custom Ant vers le plug-in Cargo?

Était-ce utile?

La solution

Voir cette discussion: Re: appeler un plugin dans un autre plugin? Selon les développeurs de Maven, ce n'est pas ainsi que les plugins sont censés fonctionner.

Cependant, il y a ce commentaire intéressant:

  

Les plugins / Mojos doivent être des enveloppes fines autour d’une bibliothèque. Vous voudriez utiliser la bibliothèque directement.

Cargo n’est pas seulement un plugin Maven, il dispose également d’une API Java et d’une tâche Ant . Donc, vous pourriez probablement:

  • appelez la tâche Cargo Ant à partir de votre mojo Ant (je pense que vous aurez simplement besoin des fichiers JAR Cargo dans le chemin de classe de votre plugin);

  • réécrivez votre mojo Ant en Java et appelez l'API Cargo (vous souhaitez consulter les sources du plug-in Cargo).

Autres conseils

Le script Ant que maven-ant-plugin exécute n'est pas vraiment conscient de Maven en tant que tel; Ce plugin est conçu pour la compatibilité ascendante avec les tâches Ant personnalisées. Je ne peux pas penser à une façon propre de faire ce que vous voulez, même s'il peut y avoir une sorte de bidouille qui vous permet de le faire.

Il devrait également être possible d’exécuter une deuxième instance de Maven depuis Ant, qui exécute uniquement l’objectif Cargo, mais dans ce cas, vous pourriez rencontrer des problèmes avec les fichiers verrouillés, etc. Pour ce faire, utilisez simplement une balise dans votre script Ant et appelez le bouton "mvn". exécutable avec les objectifs appropriés comme arguments.

Le moyen le plus propre est simplement de lier l’objectif Cargo à une phase de la construction et de le faire courir après la fin de Ant. Je ne vois aucun inconvénient à cette approche - vous n’avez pas vraiment indiqué de raisons précises pour lesquelles vous voulez l’éviter.

Les deux maven suivants pourraient vous intéresser

Le plugin GMaven vous permet d’écrire des plugins maven en utilisant groovy. Cela vous donne un accès complet à ant en utilisant le Ant Builder . moyen facile d'écrire des scripts ant dans Groovy. Ensuite, dans ce mojo Groovy, vous pouvez appeler n’importe quel mojo maven à l’aide de l’exécuteur Mojo.

J'ai utilisé ceux-ci dans plusieurs plug-ins personnalisés maven et je n'ai pas trouvé de moyen plus facile d'écrire et de combiner des mojos.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top