2012-03-12 20 views
6

Próbuję uruchomić Maven z mojej klasy java w oparciu o tę propozycję:Uruchamianie Maven z kodu Java w systemie Windows?

How to run maven from java?

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

ale otrzymuję:

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

mvn jest na mojej drodze i mogę go uruchomić dobrze od 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 
... 

jakieś sugestie?

+0

Lepsze wykorzystanie Maven wbudowującego, spojrzeć na http://stackoverflow.com/ a/19904341/516167 – MariuszS

Odpowiedz

10

Spróbuj:

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

Edit: W odpowiedzi na pytanie jodły ...

Tak. Zobacz: Process#getInputStream. Zasadniczo będziesz musiał skonsumować dane wyjściowe z tworzonego podprocesu.

ja też jak w tym artykule: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

+2

Potrzebuję zrobić: Runtime.getRuntime(). Exec ("cmd/C mvn"); ale nie mam żadnych danych wyjściowych w mojej konsoli, czy trzeba to jakoś wydłubać? – u123

+0

generuje, jeśli: BufferedReader in = new BufferedReader ( new InputStreamReader (p.getInputStream())); Linia ciągu = ""; while ((line = in.readLine())!= null) { System.out.println (linia); – ses

1

Błąd 2 oznacza, że ​​plik wykonywalny nie może zostać znaleziony w środowisku środowiska JRE. Oznacza to, że zmienna środowiskowa PATH nie zawiera katalogu binarnego Maven.

2 wybory tutaj:

  1. upewnić się, że bin Maven jest w zmiennej środowiskowej PATH
  2. bezwzględną ścieżkę do polecenia mvn.

Może to również wynikać z odmowy zgody, ale jest mniej prawdopodobne.

+2

Dodałem C: \ User \ nazwa użytkownika \ apache-maven-3.0.4 \ bin do mojej ścieżki systemowej, ale wciąż dostaję ten sam błąd. –

+0

Spróbuj ponownie uruchomić ide i ewentualnie twój komputer. Postępowałem zgodnie z instrukcjami od Guillame, a także doświadczyłem tego samego problemu po dodaniu maven do PATH. Jednak po ponownym uruchomieniu komputera Maven został znaleziony na ścieżce PATH, a Eclipse mógł uruchomić polecenie maven. Mam nadzieję, że to pomaga ... – liltitus27

2

Można zobaczyć mvn.bat i echo, które polecenia java faktycznie wykonane i uruchomić go bezpośrednio.

W 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%

W moim komputerze wykonującym zależność: drzewo jest:

"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"

Powiązane problemy