Eu quero executar comandos shell do pom.xml do Maven

Eu quero executar comandos shell do Linux com o Maven. Aqui está o que eu tentei:

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

Aqui está o que está funcionando para mim:

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

O problema aqui é que eu não sei o que é esperado . Com sua configuração atual, invocar o plug-in na linha de comando funcionaria:

 $ mvn exec: exec
 [INFO] Verificando projetos ...
 [INFO] ----------------------------------------------- -------------------------
 [INFO] Edifício Q3491937
 Segmento de tarefa [INFO]: [exec: exec]
 [INFO] ----------------------------------------------- -------------------------
 [INFO] [exec: exec {execução: default-cli}]
 [INFO] laptop
 [INFO] ----------------------------------------------- -------------------------
 [INFO] CONSTRUIR BEM SUCEDIDO
 [INFO] ----------------------------------------------- -------------------------
 ...

A configuration global é usada, o comando hostname é executado ( laptop é meu nome de host). Em outras palavras, o plug-in funciona conforme o esperado.

Agora, se você quiser que um plug-in seja executado como parte da compilation , é necessário vincular uma meta em uma fase específica. Por exemplo, para ligá-lo na compile :

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

E depois:

 compilation $ mvn
 [INFO] Verificando projetos ...
 [INFO] ----------------------------------------------- -------------------------
 [INFO] Edifício Q3491937
 [INFO] task-segment: [compile]
 [INFO] ----------------------------------------------- -------------------------
 [INFO] [resources: resources {execução: resources padrão}]
 [INFO] Usando a codificação 'UTF-8' para copiar resources filtrados.
 [INFO] pule o recurso não existenteDirectory / home / pascal / Projects / Q3491937 / src / main / resources
 [INFO] [compilador: compile {execution: default-compile}]
 [INFO] Nada a compilar - todas as classs estão atualizadas
 [INFO] [exec: exec {execução: alguma execução}]
 [INFO] laptop
 [INFO] ----------------------------------------------- -------------------------
 [INFO] CONSTRUIR BEM SUCEDIDO
 [INFO] ----------------------------------------------- -------------------------
 ...

Observe que você pode especificar uma configuration dentro de uma execution .

Resolvido O problema é que o executável está funcionando de uma maneira diferente no Linux. Se você deseja executar o arquivo .sh, escreva no caminho abaixo. Escreva em pom.xml

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

2 opções:

  1. Você quer executar um comando do maven sem vincular a qualquer fase, basta digitar o comando e o maven o executa , você só quer maven executar algo, você não liga se estamos em compile / package / … Vamos digamos que eu quero rodar o npm start com o maven, você pode conseguir com o seguinte:

mvn exec:exec -Pstart-node

Para isso, você precisa da seção abaixo do maven

    start-node    org.codehaus.mojo exec-maven-plugin 1.3.2    exec     npm start       
  1. Você deseja executar um comando arbitrário do maven enquanto estiver em uma fase específica , por exemplo, quando eu estiver na fase de instalação eu quero executar o npm install você pode fazer isso com:

mvn install

E para isso funcionar, você precisaria da seção abaixo:

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