2012-03-12 17 views
6

sto cercando di eseguire Maven della mia classe Java in base a questo suggerimento:Esecuzione di Maven dal codice Java in Windows?

How to run maven from java?

Runtime.getRuntime().exec("mvn"); 

ma ottengo:

java.io.IOException: Cannot run program "mvn": CreateProcess error=2, The system cannot find the file specified 

mvn è sul mio cammino e posso eseguirlo bene da cmd:

C:\Users\m>mvn -v 
Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100) 
Maven home: C:\apache-maven-3.0.3\bin\.. 
Java version: 1.6.0_20, vendor: Sun Microsystems Inc. 
Java home: C:\Program Files\Java\jdk1.6.0_20\jre 
... 

qualche suggerimento?

+0

Migliore utilizzo Maven embedder, guarda http://stackoverflow.com/ a/19904341/516167 – MariuszS

risposta

10

Prova:

Runtime.getRuntime().exec("cmd \c mvn"); 

Edit: In risposta alla domanda abeti ...

Sì. Vedi: Process#getInputStream. Fondamentalmente è necessario consumare l'output dal processo secondario creato.

mi piace anche questo articolo: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

+2

Ho bisogno di fare: Runtime.getRuntime(). Exec ("cmd/C mvn"); ma non ottengo alcun output nella mia console, è necessario eliminarlo in qualche modo? – u123

+0

produce se: BufferedReader in = new BufferedReader ( new InputStreamReader (p.getInputStream())); String line = ""; while ((line = in.readLine())!= null) { System.out.println (riga); – ses

1

Errore 2 significa che non è possibile trovare l'eseguibile dall'ambiente JRE. Ciò significa che la variabile di ambiente PATH non contiene la directory binaria di Maven.

2 scelte qui:

  1. assicurarsi che la directory bin Maven è nella variabile d'ambiente PATH
  2. Usa un percorso assoluto per il comando mvn.

In alternativa, questo potrebbe anche essere dovuto ad un permesso negato, ma è meno probabile che sia il caso.

+2

Ho aggiunto C: \ User \ username \ apache-maven-3.0.4 \ bin al mio PATH di sistema, ma ottengo lo stesso errore. –

+0

Prova a riavviare ide e possibilmente il tuo computer. Ho seguito anche le istruzioni di Guillame e ho anche riscontrato lo stesso problema dopo aver aggiunto Maven al PERCORSO. Tuttavia, una volta riavviato il mio computer, Maven è stato trovato sul PATH ed Eclipse è stato in grado di eseguire il comando maven. Spero che questo aiuti ... – liltitus27

2

È possibile visualizzare mvn.bat e l'eco che il comando java è effettivamente eseguito ed eseguirlo direttamente.

In mvn.bat:

%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

Nella mia macchina che esegue la dipendenza: albero è:

"java -classpath \"C:\dev\tools\apache-maven-3.1.1\boot\plexus-classworlds-2.5.1.jar\" -Dclassworlds.conf=C:\dev\tools\apache-maven-3.1.1\bin\m2.conf -Dmaven.home=\"C:\dev\tools\apache-maven-3.1.1\" org.codehaus.plexus.classworlds.launcher.Launcher dependency:tree"

Problemi correlati