2012-03-12 63 views
6

Tôi cố gắng để chạy maven từ lớp java của tôi dựa trên đề nghị này:Chạy Maven từ mã Java trong Windows?

How to run maven from java?

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

nhưng tôi nhận được:

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

mvn là trên con đường của tôi và tôi có thể chạy nó chỉ cần phạt từ 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 
... 

bất kỳ đề xuất nào?

+0

sử dụng Maven embedder, nhìn vào http://stackoverflow.com/ a/19904341/516167 – MariuszS

Trả lời

10

Hãy thử:

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

Edit: Để đối phó với những câu hỏi linh sam ...

Yes. Xem: Process#getInputStream. Về cơ bản bạn sẽ cần phải tiêu thụ đầu ra từ quá trình con đang được tạo ra.

Tôi cũng như bài viết này: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

+2

Tôi cần làm: Runtime.getRuntime(). Exec ("cmd/C mvn"); nhưng tôi không nhận được bất kỳ đầu ra trong giao diện điều khiển của tôi, là nó cần thiết để ống mà ra bằng cách nào đó? – u123

+0

nó tạo ra nếu: BufferedReader in = new BufferedReader ( InputStreamReader mới (p.getInputStream())); Chuỗi dòng = ""; khi ((line = in.readLine())!= null) { System.out.println (dòng); – ses

1

Lỗi 2 có nghĩa là không thể tìm thấy tệp thi hành trong môi trường JRE. Điều này có nghĩa là biến môi trường PATH không chứa thư mục nhị phân Maven.

2 lựa chọn ở đây:

  1. Hãy chắc chắn rằng thư mục bin Maven là trong môi trường PATH biến
  2. Sử dụng một đường dẫn tuyệt đối cho lệnh mvn.

Ngoài ra, điều này cũng có thể là do sự cho phép bị từ chối, nhưng ít có khả năng xảy ra trường hợp này.

+2

Tôi đã thêm C: \ User \ username \ apache-maven-3.0.4 \ bin vào hệ thống PATH của tôi, nhưng tôi vẫn gặp lỗi tương tự. –

+0

Thử khởi động lại ide và có thể là máy tính của bạn. Tôi đã làm theo hướng dẫn từ Guillame, và cũng trải nghiệm cùng một vấn đề sau khi tôi thêm maven vào PATH. Tuy nhiên, một khi tôi khởi động lại máy tính của mình, Maven đã được tìm thấy trên PATH và Eclipse đã có thể chạy lệnh maven. Hy vọng điều này sẽ giúp ... – liltitus27

2

Bạn có thể xem mvn.bat và echo mà lệnh java là thực sự thực hiện và chạy nó trực tiếp.

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

Trong máy tính của tôi thực sự phụ thuộc: cây là:

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

Better
Các vấn đề liên quan