如何以编程方式调用 Maven 任务

2022-09-02 09:23:24

我正在另一个构建工具(Leiningen for Clojure,但这无关紧要)的上下文中使用Maven,我想知道我如何以编程方式调用像relation:build-classpath这样的插件(即通过Maven-API,而不是通过-命令)。mvn


答案 1

使用 Maven Invoker API。它快速而简单。

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

Invoker invoker = new DefaultInvoker();
invoker.setMavenHome(new File("/usr"));

try
{
  invoker.execute( request );
}
catch (MavenInvocationException e)
{
  e.printStackTrace();
}

pom.xml:

<dependency>
    <groupId>org.apache.maven.shared</groupId>
    <artifactId>maven-invoker</artifactId>
    <version>2.1.1</version>
</dependency>

答案 2

这里有一个更好的解决方案:使用Mojo-Executor库。它公开了一个简单的Java API,用于调用Maven插件。


推荐