Maven调用者:IllegalStateException
问题内容:
我有一个多模块Maven项目(https://github.com/veniltonjr/msplearning)
我的一个模块 ,我需要运行程序从Maven构建命令“全新安装 ”,但是当我调用这些目标出现以下错误执行:
java.lang.IllegalStateException:
未指定Maven应用程序目录,并且系统属性中未提供$ {maven.home}。
请至少指定其中一个。
在Maven Invoker文档中,据说M2_HOME环境变量必须存在。
我的SO中已经设置了此变量。这不足以使该方法invoke
起作用吗?遵循我运行相关方法的代码片段:
Invoker invoker = new DefaultInvoker();
invoker.setLocalRepositoryDirectory(new File("C:\\git\\msplearning"));
InvocationRequest request = new DefaultInvocationRequest();
request.setGoals(Arrays.asList("clean", "install"));
InvocationResult result = invoker.execute(request); // Exception occours here...
已经,谢谢!
编辑(解决方案)
我必须设置POM,还必须设置Maven Home,在我的情况下,它位于M3_HOME环境变量中:
InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile(new File("C:\\git\\msplearning\\pom.xml"));
request.setGoals(Collections.singletonList("verify"));
Invoker invoker = new DefaultInvoker();
invoker.setMavenHome(new File(System.getenv("M3_HOME")));
InvocationResult result = invoker.execute(request);
谢谢@RobertScholte和@khmarbaise!
问题答案:
设置request.pomFile
或request.baseDirectory
以便Invoker都知道应该从哪个目录或文件执行Apache
Maven。