Как запустить Maven из Java? - PullRequest
       9

Как запустить Maven из Java?

35 голосов
/ 28 февраля 2011

Я хочу выполнить команду maven из Java для разработки плагина. Я попробовал maven-embedder, но похоже, что теперь он не поддерживается. Кто-нибудь знает какой-то другой инструмент, который можно использовать?

Ответы [ 3 ]

48 голосов
/ 03 февраля 2014

Простой API вызова: maven-invoker.

Проектная документация: http://maven.apache.org/shared/maven-invoker/

Использование: http://maven.apache.org/shared/maven-invoker/usage.html

InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile( new File( "/path/to/pom.xml" ) );
request.setGoals( Arrays.asList( "clean", "install" ) );

Invoker invoker = new DefaultInvoker();
invoker.execute( request );
13 голосов
/ 11 ноября 2013

Использование Maven Embedder

Maven Embedder все еще поддерживается и прост в настройке, так что это лучший вариант для вас.

Java code

MavenCli cli = new MavenCli();
cli.doMain(new String[]{"clean", "install"}, "project_dir", System.out, System.out);

Конфигурация проекта

<dependencies>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-embedder</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.aether</groupId>
        <artifactId>aether-connector-wagon</artifactId>
        <version>0.9.0.M2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-http-lightweight</artifactId>
        <version>2.5</version>
    </dependency>
</dependencies>

Полностью рабочий пример: https://github.com/mariuszs/maven-cli-example

4 голосов
/ 28 февраля 2011

Maven Embedder действительно больше не поддерживается (по-прежнему его использует только Hudson).Но, как и в Гудзоне, есть несколько других способов запуска Maven.Вы можете просто запустить maven как внешнюю программу:

Runtime.getRuntime().exec("mvn clean install");

Или вы можете подумать о создании ant-сценария для maven. Этот сценарий затем может быть вызван либо как внешняя программа, либо (есливам нужно больше контроля) добавьте муравей в ваш путь к классам и вызовите Antrunner.

ОБНОВЛЕНИЕ

Теперь снова поддерживается Maven Embedder, так что это ваш лучший вариант.

...