2014-04-09 71 views
2

我想構建一個啓動Java進程(基於Spring)的JUnit集成測試,然後調用該進程。從我的Java測試儀內主:我如何從Java內部運行mvn exec:java

如果我把這個命令行我會在我的POM目錄調用命令行 mvn exec:java -DmainClass=myClass -Dblahblah啓動Java進程

有沒有辦法來調用EXEC類,以便我的測試人員可以針對進程執行調用並驗證結果?

+0

可能的[如何從java運行maven?](http:// stackoverfl ow.com/questions/5141788/how-to-run-maven-from-java) – FrobberOfBits

回答

1

您可以使用maven-invoker

這裏是你所需要的

InvocationRequest request = new DefaultInvocationRequest(); 
request.setPomFile(new File("/path/to/pom.xml")); 
request.setGoals(Collections.singletonList("exec:java -DmainClass=com.vgrazi.MyClass -Dparam1=value1")); 

Invoker invoker = new DefaultInvoker(); 
invoker.execute(request); 
+0

謝謝。有沒有辦法發送-D參數? –

+0

嘗試使用http://maven.apache.org/shared-archives/maven-invoker-2.1.1/apidocs/org/apache/maven/shared/invoker/DefaultInvocationRequest.html#addShellEnvironment%28java.lang.String,% 20java.lang.String%29 –

+0

其實我只是在字符串的末尾添加了我的-D參數,它工作正常。換句話說,「exec:java -Dblahblah -Dblahmore」。謝謝! –

2

使用Maven invocation API

的代碼將是類似下面的東西:

InvocationRequest request = new DefaultInvocationRequest(); 
request.setPomFile(new File("/path/to/pom.xml")); 
request.setGoals(Collections.singletonList("install")); 

Invoker invoker = new DefaultInvoker(); 
invoker.execute(request);