2014-01-18 2 views
5

나는 다중 모듈 Maven 프로젝트 내 모듈 (https://github.com/veniltonjr/msplearning)메이븐 호출자 : IllegalStateException이

하나가 프로그래밍 방식 메이븐에서 명령이 "청소 설치"구축을 실행해야하지만 실행을 호출 할 때 이러한 목표 중 다음 오류가 발생합니다.

java.lang.IllegalStateException:Maven 응용 프로그램 디렉터리가 지정되지 않았으며 $ {maven.home}이 시스템 속성에 제공되지 않았습니다. 이 중 적어도 하나를 지정하십시오.

Maven Invoker 설명서에는 M2_HOME 환경 변수가 있어야한다고 나와 있습니다.

이미 내 변수에이 변수가 설정되어 있습니다. 이것은 방법 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... 

이미 감사합니다.

EDITED (솔루션)

은 내가 POM을 설정했다 또한 내 경우에 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!

+1

왜 이러한 명령을 실행해야합니까? 루트 수준에서'mvn install '이 작동하지 않습니까? – khmarbaise

+0

@khmarbaise 주석 주셔서 감사합니다. 루트 레벨에서 mvn install을 실행하면 빌드가 성공적으로 완료됩니다. 하지만 RESTful 서비스에서 출력 아티팩트를 제공해야하므로 프로그래밍 방식으로이 명령을 실행해야합니다. – falvojr

+1

@veniltonjr 위의 코드를 실행하려면 컴퓨터에 Maven이 설치되어 있어야합니까? 그렇지 않으면 몇 개의 jar 파일로 충분합니까 ?? – Lucy

답변

2

request.pomFile 또는 request.baseDirectory을 설정하여 호출자가 Apache Maven이 실행될 디렉토리 또는 파일을 알 수 있도록하십시오.

+0

회신 해 주셔서 감사합니다. @RobertScholte! 그러나 옵션 중 어느 것도 작동하지 않았습니다. 이 문제에 대한 제안 사항이 있습니까? 서비스 [ProductRESTfulServer] (https://github.com/veniltonjr/msplearning/blob/master/restful-app/src/main/java/com/msplearning/restful/app/ProductRESTfulServer.java)에서'invoke' 메소드를 수행하십시오.), 부모 프로젝트 ([msplearning] (https://github.com/veniltonjr/msplearning))의 모듈 중 하나에 있습니다. – falvojr

+0

Karl-Heinz가 올바른 질문을 던졌습니다. * 당신은 무엇을 만들려고하십니까? 어느 pom.xml입니까? –

+0

부모 프로젝트의 pom을 정말로 만들고 싶습니다 :'msplearning/pom.xml' – falvojr