Comment faire pour exécuter des tâches de façon conditionnelle à l'aide de l'maven-antrun-plugin?
J'ai besoin d'exécuter certaines ant commandes en fonction d'un environnement variable passée en tant que paramètre à la maven build commande.
Pour le moment j'ai 3 blocs de tâches et uniquement les tâches de bloc avec aucune condition n'est en cours d'exécution.
<tasks name="isProdCheck">
<condition property="isProd">
<equals arg1="${environment}" arg2="PROD" />
</condition>
</tasks>
<tasks if="isProd" depends="isProdCheck">
...
</tasks>
<tasks>
... I am the only block executed
</tasks>
Ce que je fais mal, est-il une meilleure façon de le faire?
- Pouvez-vous confirmer comment vous appelez maven et passez le paramètre?
- Puis-je le voir correctement, que vous 2e tâche n'a pas de nom?
Vous devez vous connecter pour publier un commentaire.
En premier lieu, selon Maven 1.x site web, la version stable actuelle de maven 1.x est la version 1.1, pas 1.4. Deuxièmement, il n'y a pas de AntRun Plugin version 1.7 et, à ma connaissance, c'est un plugin Maven 2. Troisièmement, la syntaxe que vous utilisez semble très similaire à À L'Aide D'Attributs qui, rappelons-le, est d'environ Maven 2.
Donc, j'ai peut-être raté quelque chose mais, c'est très déroutant et vous devriez peut-être de clarifier ces points dans votre question.
de toute façon, comme vous l'avez mentionné explicitement Maven 1, je vais essayer de répondre. Si je me souviens bien, je voudrais écrire une coutume but et l'utilisation de la Gelée debase:si
oubase:quand
. Pour ce faire, fournir quelque chose comme cela dansmaven.xml
:Je ne suis vraiment pas sûr de la syntaxe, tout cela Maven 1 genre de choses est tout simplement trop loin, et je n'ai pas le tester (je suis trop paresseux pour installer Maven 1). Mais je suppose que vous. Le manuel référence de scripting peut vous aider.
Pour être honnête, j'espère vraiment que vous avez une bonne raison de préférer Maven 1.x sur Maven 2.x 🙂Mise à JOUR: Il semble que l'OP est fait à l'aide de Maven 2, donc je vais mettre à jour ma question en conséquence. Pour mettre en œuvre le comportement désiré, vous pouvez utiliser Ant-contrib est
if
tâche comme indiqué ci-dessous:Et ensuite appeler
mvn compile -Dfoo=bar
(c'est juste un exemple).Mais, tout cela n'est pas le "maven façon" de faire les choses. Maintenant que je comprends un peu mieux ce que vous essayez de le faire (mais pas tout à fait comme vous ne l'expliquez pas votre but ultime), je pense que l'utilisation de construire des profils serait plus approprié et plus, ayant lu votre propre réponse, je pense que vous avez plus de compliquer les choses (et que vous êtes sur le mauvais chemin).
Je comprends que vous êtes un Maven débutant, mais je vous suggère d'essayer de l'utiliser, bien qu'au lieu de retomber sur Ant ou vous ne recevrez pas les avantages de celui-ci. Aussi, lors de l'ouverture d'une question, au lieu de demander une solution spécifique, vous devriez plutôt vous expliquer votre problème général, vous obtiendrez de meilleures réponses. Ici, je ne peux pas fournir plus de conseils car je ne sais pas ce que vous êtes vraiment essayer de l'atteindre.
Vous n'avez pas besoin d'utiliser
AntContrib
aprèsmaven-antrun-plugin 1.5
qui utilise<target>
au lieu de<tasks>
selon l'utilisation du plugin. Cette balise fonctionne de la même manière , mais dans celui-ci, vous pouvez ajouter des conditions, comme l'exemple ci-dessous.Le code ci-dessus s'exécute toujours la première cible, mais la deuxième cible dépend de la valeur d'une propriété. Vous pouvez le configurer pour un parent et un sous-module de projet, la définition du plugin sur
<pluginsManagement>
de la balise et de l'appel de certaines propriétés à la sous-modules, puis de l'appel du plugin.target
dans<configuration>
le plugin s'exécute uniquement le dernier (et Intellij IDEA marque la la dernière cible avec l'erreur sur pom.xml).<configuration>
. Mais fonctionne lorsque vous définissez plusieurs<execution>s
(avec des Identifiants uniques) avec un<target>
par<execution>
Résolu ce problème en créant de multiples nommé cibles avec des "si" attributs et une condition de la propriété dans une build.xml fichier dans la racine du projet comme suit.
Passé propriétés des commutateurs de ligne de commande j'ai besoin, et a appelé la fourmi cibles dans le build.xml fichier à partir de la section tâches dans le POM Maven comme suit:
runable exemple ici https://www.surasint.com/run-ant-with-if-from-maven/
Une autre solution: garder le ant-contrib-1.0b3.jar pour un chemin d'accès, puis le définir comme ce
puis
J'ai mis plein d'exemple de code ici que vous pouvez télécharger https://www.surasint.com/2017/04/09/run-ant-with-if-from-maven/