2010-10-28 7 views
9

Come può non funzionare in Windows?Maven Exec Plugin non utilizza il percorso di sistema su 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> 

ottengo questo quando l'eseguo:

[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] 

Come può eco non essere sulla strada?

risposta

9

Il problema qui è che echo è un comando del programma cmd.exe, non è un processo \ applicazione standalone come in Unix. Per fare ciò che stai cercando di fare qui devi chiamare cmd come eseguibile con 'echo', '/ C' (per dire a cmd che stai passando un comando - vedi 'cmd /?' Su Windows riga di comando.) e 'ciao' come argomenti.

Come così:

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

È inoltre possibile creare un file diecho.bat nella directory in esecuzione e impostare il contenuto:

@echo %*

Questa tecnica è particolarmente utile per supportare simultaneamente entrambi gli ambienti di generazione di Windows e Linux. Forse "echo" non è un buon esempio, ma potresti imbatterti in casi in cui esiste lo stesso comando sia su Windows che Linux.

Problemi correlati