【问题标题】:Running Maven from Java code in Windows?在 Windows 中从 Java 代码运行 Maven?
【发布时间】:2012-03-12 20:21:23
【问题描述】:

我正在尝试根据这个建议从我的 java 类中运行 maven:

How to run maven from java?

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

但我明白了:

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

mvn 在我的路径上,我可以从 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
...

有什么建议吗?

【问题讨论】:

标签: java windows maven cmd


【解决方案1】:

试试:

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

编辑: 回答第一个问题...

是的。请参阅:Process#getInputStream。基本上,您将需要使用正在创建的子流程的输出。

我也喜欢这篇文章:http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

【讨论】:

  • 我需要做的:Runtime.getRuntime().exec("cmd /C mvn");但是我的控制台中没有任何输出,是否有必要以某种方式将其输出?
  • 如果: BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()) );字符串行 = ""; while ((line = in.readLine()) != null) { System.out.println(line);
【解决方案2】:

使用mvn.cmd 代替mvnmvn.bat
它工作正常(在 Windows 操作系统上)。
但请记住操作系统兼容性问题(Windows/Linux)。

【讨论】:

    【解决方案3】:

    可以查看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"

    【讨论】:

      【解决方案4】:

      错误 2 表示 JRE 环境找不到可执行文件。这意味着 PATH 环境变量不包含 Maven 二进制目录。

      这里有两个选择:

      1. 确保 Maven bin 目录位于 PATH 环境变量中
      2. 使用 mvn 命令的绝对路径。

      另外,这也可能是由于权限被拒绝,但这种情况不太可能。

      【讨论】:

      • 我将 C:\User\username\apache-maven-3.0.4\bin 添加到我的系统 PATH 中,但仍然出现相同的错误。
      • 尝试重启 ide 并可能重启您的计算机。我也遵循了 Guillame 的说明,在将 maven 添加到 PATH 后也遇到了同样的问题。但是,一旦我重新启动计算机,在 PATH 上找到了 Maven,并且 Eclipse 能够运行 maven 命令。希望这会有所帮助...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2013-12-05
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多