2010-10-28 13 views
9

¿Cómo puede esto no funcionar en Windows?Maven Exec Plugin no utiliza la ruta del sistema en Windows?

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2</version> 
    <executions> 
    <execution> 
     <id>deploy-dev-ssh</id> 
     <phase>install</phase> 
     <goals> 
     <goal>exec</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <executable>echo</executable> 
    <arguments> 
     <argument>hello</argument> 
    </arguments> 
    </configuration> 
    </plugin> 

me sale esto cuando lo ejecuto:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (do-this) on project <my_project_name>: Command execution failed. Cannot run program "echo" (in directory "<my_local_path>"): CreateProcess error=2, The system cannot find the file specified -> [Help 1] 

¿Cómo puede sea el clon de estar en el camino?

Respuesta

9

El problema aquí es que echo es un comando del programa cmd.exe, no es una aplicación de proceso independiente como en Unix. Para hacer lo que estás tratando de hacer aquí, necesitas llamar a cmd como el ejecutable con 'echo', '/ C' (para decirle a cmd que le estás pasando un comando - mira 'cmd /?' En tu Windows línea de comando.) y 'hola' como argumentos.

así:

  <configuration> 
       <executable>cmd</executable> 
       <arguments> 
        <argument>/C</argument> 
        <argument>echo</argument> 
        <argument>hello</argument> 
       </arguments> 
      </configuration> 
3

También puede crear un archivo de echo.bat en el directorio de ejecución y ajusta el contenido a:

@echo %*

Esta técnica es especialmente útil para soportar simultáneamente ambos entornos de compilación de Windows y Linux. Tal vez "eco" no es un buen ejemplo, pero puede encontrarse con casos donde el mismo comando existe tanto en Windows como en Linux.

Cuestiones relacionadas