我想基于这个build议从我的java类运行maven:
如何从java运行maven?
Runtime.getRuntime().exec("mvn");
但是我得到:
java.io.IOException: Cannot run program "mvn": CreateProcess error=2, The system cannot find the file specified
mvn是我的path,我可以从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 ...
有什么build议么?
尝试:
Runtime.getRuntime().exec("cmd \c mvn");
编辑:为了响应第一个问题…
是。 请参阅: Process#getInputStream 。 基本上你需要消耗正在创建的子进程的输出。
我也喜欢这篇文章: http : //www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
您可以查看mvn.bat并回显实际执行哪个java命令并直接运行它。
在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%
在我的机器执行依赖关系:树是:
"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"
错误2意味着JRE环境无法找到可执行文件。 这意味着PATH环境变量不包含Maven二进制目录。
这里有两个选择:
另外,这也可能是由于拒绝了权限,但情况不太可能。