如何从Java内部运行mvn exec:java

时间:2014-04-09 17:35:22

标签: java junit maven-3

我想构建一个JUnit集成测试,启动Java进程(基于Spring),然后对该进程进行调用。

如果我从命令行调用它,我将通过调用启动Java进程 来自我的pom目录中的命令行的mvn exec:java -DmainClass=myClass -Dblahblah

有没有办法从我的Java测试器类中调用exec:main,以便我的测试人员可以对进程执行调用并验证结果?

2 个答案:

答案 0 :(得分: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 );

答案 1 :(得分: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 );