Je veux exécuter des commandes shell à partir du fichier pom.xml de Maven

Je veux exécuter des commandes shell Linux avec Maven. Voici ce que j’ai essayé:

 org.codehaus.mojo exec-maven-plugin 1.1.1    exec     hostname   

Voici ce qui a fonctionné pour moi:

  exec-maven-plugin org.codehaus.mojo   Version Calculation generate-sources  exec   ${basedir}/scripts/calculate-version.sh     

Le problème ici est que je ne sais pas ce qui est attendu . Avec votre configuration actuelle, invoquer le plug-in sur la ligne de commande ne fonctionnerait que:

 $ mvn exec: exec
 [INFO] Recherche de projets ...
 [INFO] ----------------------------------------------- -------------------------
 [INFO] Bâtiment Q3491937
 [INFO] segment de tâche: [exec: exec]
 [INFO] ----------------------------------------------- -------------------------
 [INFO] [exec: exec {execution: default-cli}]
 [INFO] ordinateur portable
 [INFO] ----------------------------------------------- -------------------------
 [INFO] CONSTRUIRE UNE RÉUSSITE
 [INFO] ----------------------------------------------- -------------------------
 ...

La configuration globale est utilisée, la commande hostname est exécutée (le laptop est mon nom d’hôte). En d’autres termes, le plug-in fonctionne comme prévu.

Maintenant, si vous voulez qu’un plugin soit exécuté dans le cadre de la construction , vous devez lier un objective sur une phase spécifique. Par exemple, pour le lier sur comstack :

   org.codehaus.mojo exec-maven-plugin 1.1.1   some-execution comstack  exec     hostname   

Et alors:

 $ mvn comstackr
 [INFO] Recherche de projets ...
 [INFO] ----------------------------------------------- -------------------------
 [INFO] Bâtiment Q3491937
 [INFO] segment de tâche: [comstackr]
 [INFO] ----------------------------------------------- -------------------------
 [INFO] [ressources: ressources {exécution: ressources par défaut}]
 [INFO] Utilisation de l'encodage 'UTF-8' pour copier des ressources filtrées.
 [INFO] ignore le ResourceDirectory / home / pascal / Projects / Q3491937 / src / main / resources non existant
 [INFO] [compilateur: comstack {execution: default-comstack}]
 [INFO] Rien à comstackr - toutes les classes sont à jour
 [INFO] [exec: exec {execution: some-execution}]
 [INFO] ordinateur portable
 [INFO] ----------------------------------------------- -------------------------
 [INFO] CONSTRUIRE UNE RÉUSSITE
 [INFO] ----------------------------------------------- -------------------------
 ...

Notez que vous pouvez spécifier une configuration dans une execution .

Résolu Le problème est que l’exécutable fonctionne différemment sous Linux. Si vous voulez exécuter le fichier .sh, vous devez écrire comme suit. Ecrivez-le dans pom.xml

   exec-maven-plugin 1.6.0 org.codehaus.mojo   Renaming build artifacts package  exec   bash handleResultJars.sh     

2 options:

  1. Vous voulez exécuter une commande de maven sans lier de phase, il vous suffit de taper la commande et maven l’exécute , vous voulez juste exécuter quelque chose, vous ne vous souciez pas de savoir si nous sums dans comstack / package / … disons que je veux lancer npm start avec maven, vous pouvez y arriver avec ce qui suit:

mvn exec:exec -Pstart-node

Pour cela, vous avez besoin de la section maven ci-dessous

    start-node    org.codehaus.mojo exec-maven-plugin 1.3.2    exec     npm start       
  1. Vous voulez exécuter une commande arbitraire à partir de maven alors que vous en êtes à une phase donnée , par exemple lorsque je suis à la phase d’installation, je veux exécuter npm install vous pouvez le faire avec:

mvn install

Et pour cela, vous auriez besoin de la section ci-dessous:

   org.codehaus.mojo exec-maven-plugin 1.3.2   npm install (initialize)  exec  initialize  npm  install