Запуск Maven из кода Java в Windows? - PullRequest
6 голосов
/ 13 марта 2012

Я пытаюсь запустить maven из своего класса java на основе этого предложения:

Как запустить maven из 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
...

есть предложения?

Ответы [ 4 ]

10 голосов
/ 13 марта 2012

Попробуйте:

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

Редактировать: В ответ на первый вопрос ...

Да.См .: Процесс # getInputStream .В основном вам нужно будет использовать вывод создаваемого подпроцесса.

Мне также нравится эта статья: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

2 голосов
/ 07 февраля 2014

Вы можете просмотреть mvn.bat и echo, какая Java-команда фактически выполняется, и запустить ее напрямую.

В мвн.бат:

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

На моей машине выполняется зависимость: tree is:

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

1 голос
/ 08 февраля 2019

Пользователь "mvn.cmd" вместо mvn или mvn.bat. Работает нормально.

1 голос
/ 13 марта 2012

Ошибка 2 означает, что исполняемый файл не может быть найден средой JRE. Это означает, что переменная среды PATH не содержит двоичный каталог Maven.

2 варианта здесь:

  1. Убедитесь, что каталог bin Maven находится в переменной среды PATH
  2. Использовать абсолютный путь к команде mvn.

Кроме того, это также может быть связано с отказом в разрешении, но это менее вероятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...