Je veux exécuter des commandes Linux Shell avec Maven. Voici ce que j'ai essayé:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>hostname</executable>
</configuration>
</plugin>
Voici ce qui a fonctionné pour moi:
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<executions>
<execution><!-- Run our version calculation script -->
<id>Version Calculation</id>
<phase>generate-sources</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${basedir}/scripts/calculate-version.sh</executable>
</configuration>
</execution>
</executions>
</plugin>
Le problème ici est que je ne sais pas ce qui est attend. 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 {exécution: default-cli}] [INFO] ordinateur portable [INFO] - -------------------------------------------------- -------------------- [INFO] CONSTRUIRE AVEC SUCCÈS [INFO] ------------ -------------------------------------------------- ---------- ...
Le global configuration
est utilisé, la commande hostname
est exécutée (laptop
est mon nom d’hôte). En d'autres termes, le plugin fonctionne comme prévu.
Maintenant, si vous voulez qu'un plugin soit exécuté dans le cadre de la construction, vous devez lier un objectif sur une phase spécifique. Par exemple, pour le lier sur compile
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>some-execution</id>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>hostname</executable>
</configuration>
</plugin>
Puis:
$ mvn compile [INFO] Recherche de projets ... [INFO] -------------------- -------------------------------------------------- - [INFO] Bâtiment Q3491937 [INFO] segment de tâche: [compiler] [INFO] --------------- -------------------------------------------------- ------- [INFO] [ressources: ressources {execution: default-resources}] [INFO] Utilisation du codage 'UTF-8' pour copier les ressources filtrées. [INFO] ignorer le répertoire source non existant/répertoire/home/Pascal/Projets/Q3491937/src/main/resources ] Rien à compiler - toutes les classes sont à jour [INFO] [exec: exec {exécution: un-exécution}] [INFO] ordinateur portable [INFO] - -------------------------------------------------- -------------------- [INFO] CONSTRUIRE AVEC SUCCÈS [INFO] ------------ -------------------------------------------------- ---------- ...
Notez que vous pouvez spécifier un configuration
à l'intérieur d'un execution
.
Résolu Le problème est que l'exécutable fonctionne de manière différente sous Linux. Si vous voulez exécuter un fichier .sh, vous devez écrire comme suit. Ecris-le dans pom.xml
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<groupId>org.codehaus.mojo</groupId>
<executions>
<execution><!-- Run our version calculation script -->
<id>Renaming build artifacts</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>bash</executable>
<commandlineArgs>handleResultJars.sh</commandlineArgs>
</configuration>
</execution>
</executions>
</plugin>
2 options:
npm start
avec maven, vous pouvez le réaliser avec ce qui suit:mvn exec:exec -Pstart-node
Pour cela, vous avez besoin de la section maven ci-dessous
<profiles>
<profile>
<id>start-node</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>npm</executable>
<arguments><argument>start</argument></arguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
npm install
vous pouvez le faire avec:mvn install
Et pour que cela fonctionne, vous aurez besoin de la section ci-dessous:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<id>npm install (initialize)</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<executable>npm</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
</execution>