Quiero ejecutar comandos de shell de Linux con Maven. Esto es lo que probé:
<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>

Respuestas:
Esto es lo que me ha funcionado:
fuente
<configuration />debería seguir<executions />y no colocarse allí. Me tomó bastante tiempo encontrar este simple error sintáctico. La salida de error de Maven realmente no es tan útil.<workingDirectory>${basedir}/scripts/</workingDirectory>en el bloque de configuración, en lugar de proporcionar la ruta completa,<executable>también podría ser una buena ideaEl problema aquí es que no sé qué se espera . Con su configuración actual, invocar el complemento en la línea de comando simplemente funcionaría:
$ mvn exec: exec [INFO] Escaneado de proyectos ... [INFO] ----------------------------------------------- ------------------------- [INFO] Edificio Q3491937 [INFO] segmento de tarea: [exec: exec] [INFO] ----------------------------------------------- ------------------------- [INFO] [exec: exec {ejecución: default-cli}] [INFO] portátil [INFO] ----------------------------------------------- ------------------------- [INFO] CONSTRUYE EXITOSO [INFO] ----------------------------------------------- ------------------------- ...Se
configurationusa el global ,hostnamese ejecuta el comando (laptopes mi nombre de host). En otras palabras, el complemento funciona como se esperaba.Ahora, si desea que un complemento se ejecute como parte de la compilación , debe vincular un objetivo en una fase específica. Por ejemplo, para enlazarlo en
compile:Y entonces:
$ mvn compilar [INFO] Escaneado de proyectos ... [INFO] ----------------------------------------------- ------------------------- [INFO] Edificio Q3491937 [INFO] segmento de tareas: [compilar] [INFO] ----------------------------------------------- ------------------------- [INFO] [recursos: recursos {ejecución: recursos predeterminados}] [INFO] Uso de codificación 'UTF-8' para copiar recursos filtrados. [INFO] omitir el directorio de recursos no existente / home / pascal / Projects / Q3491937 / src / main / resources [INFO] [compilador: compilar {ejecución: compilación predeterminada}] [INFO] Nada para compilar: todas las clases están actualizadas [INFO] [exec: exec {ejecución: alguna-ejecución}] [INFO] portátil [INFO] ----------------------------------------------- ------------------------- [INFO] CONSTRUYE EXITOSO [INFO] ----------------------------------------------- ------------------------- ...Tenga en cuenta que puede especificar un
configurationdentro de unexecution.fuente
mvn exec:execen el padre, mvn lo ejecutará en todos los proyectos de la compilación de múltiples módulos, incluido el padre. Pero el pom principal no tiene ninguna configuración para el complemento que esperaexecutableque se defina, de ahí el mensaje de error.configurationdentro delexecutionbloque, funcionará si se ejecuta como parte de un grupo (mvn install) pero arrojará elspecify the following: <configuration>error si se ejecuta directamente conmvn exec:exec.Resuelto. El problema es que el ejecutable funciona de manera diferente en Linux. Si desea ejecutar el archivo .sh, debe escribir de la siguiente manera. Escríbalo en pom.xml
fuente
2 opciones:
npm startcon maven, puedes lograrlo con lo siguiente:mvn exec:exec -Pstart-nodePara eso necesitas la siguiente sección de maven
npm install, puede hacerlo con:mvn installY para que eso funcione, necesitaría la siguiente sección:
fuente
¡Gracias! Tomer Ben David. Me ayudó. como estoy haciendo pip install en la carpeta de demostración como mencionaste npm install
fuente