在我的项目中,Tomcat正在部署WAR文件。 WAR文件试图在另一个项目上运行maven:
List<String> args = new ArrayList<String>();
args.add("mvn");
for (String goal : goals) {
args.add(goal);
//Here, goals is { "clean", "compile", "test", "dependency:copy-dependencies" }
}
ProcessBuilder processBuilder = new ProcessBuilder(args).directory(workingDir);
processBuilder.redirectErrorStream();
Process process = processBuilder.start();
但是,tomcat无法运行maven并且出现此错误:
java.io.IOException: Cannot run program "mvn" (in directory "C:/..."): CreateProcess error=2, The system cannot find the file specified
我是Tomcat和Maven的新手,但我很确定我将JAVA_HOME,CATALINA_HOME,MAVEN_HOME都正确设置到他们的bin文件夹,并添加到PATH中。我没有使用任何IDE,只使用cmd和浏览器。
Tomcat中是否存在某种配置,不允许它运行外部进程?可以改变吗?
感谢您的帮助!
答案 0 :(得分:0)
我认为mvn
可能不是一个可以运行的命令,而你的进程应该是cmd \c mvn
,这实际上告诉Java启动命令终端并指示命令终端运行maven。
出于便携性原因,您应该看到以下问题:How to run maven from java?
通过使用便携式API,您可以获得平台独立性,并省去了笨重的子流程处理。