42

プラグイン開発でJavaからMavenコマンドを実行したい。試してみmaven-embedderましたが、現在サポートされていないようです。誰かが使用できる他のツールを知っていますか?

4

3 に答える 3

56

シンプルな呼び出し 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 );
于 2014-02-03T18:00:35.810 に答える
17

Maven Embedderを使用する

Maven エンベダーは引き続きサポートされており、構成が簡単なため、これはより適切なオプションです。

Java コード

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

于 2013-11-11T10:43:14.853 に答える
5

実際、Maven エンベダーはサポートされなくなりました (hudson のみが現在も使用しています)。ただし、hudson の場合と同様に、maven を実行する方法は他にもいくつかあります。maven を外部プログラムとして実行するだけです。

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

または、maven 用の ant スクリプトの作成を検討することもできます。 次に、このスクリプトを外部プログラムとして呼び出すか、(さらに制御が必要な場合) ant をクラスパスに追加して Antrunner を呼び出すことができます。

アップデート

Maven エンベダーが再びサポートされるようになったため、これが最適なオプションです。

于 2011-02-28T12:20:34.390 に答える