誰もが、プログラムorg.apache.maven.cli.MavenCliを使用しての良い例を与えることができますか?

StackOverflow https://stackoverflow.com/questions/4206679

  •  25-09-2019
  •  | 
  •  

質問

私は、現在のプロジェクトにMavenの目標を実行する必要があるIntelliJのプラグインを作成しようとしています。 intertubesのすべての話はMavenEmbedderを使用することをお勧めします。それと幸運。 2.0.4バージョンはよくサポートされておらず、それを使用する方法について何の言及はありません。

私はそれを埋め込みは必要なすべてのフィールドで初期化されていない壁への旋回とRANを与えました。反射プライベートメンバ注入?驚くばかり!なぜ誰もがオブジェクトを初期化する明白な方法が必要でしょうか?

少数の人々はある程度の成功を収めて2.1バージョンを使用しているようです。私は、jarファイル、あるいはソースにそれを見つけることができませんでした。

は、私が行って、埋め込みプロジェクトの3.0バージョンをチェックアウト: http://maven.apache.org/ref/3.0-beta-3/maven-embedder/ のそれはすべて一緒にMavenEmbedderオブジェクトを離れないとだけMavenCli上のメインまたはドメインメソッドを介してアクセスをサポートしているようです。誰もがこれらのメソッドを使用しており、いくつかのアドバイスを与えることができますか?

役に立ちましたか?

解決

うん、MavenCliの文書化の方法であまりありません。 APIはsignificatly簡単ですが、私はいくつかの例のように、まだ思います。ここでは...

を動作するものです
MavenCli cli = new MavenCli();
int result = cli.doMain(new String[]{"compile"},
        "/home/aioffe/workspace/MiscMaven",
        System.out, System.out);
System.out.println("result: " + result);

これは、ディレクトリを取ると「コンパイル」段階を実行します...

他のヒント

maven 3.1.1のための作業Mavenの設定

依存関係

<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>

コード

MavenCli cli = new MavenCli();

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

提供スコープと動的に取得されたコンポーネントの依存行列情報はビット混乱することができます。私が直接または推移依存して、すべての必要な項目を得たように私には登場以来、私のためだったが、その後、遠隔解像度は動作しませんでした。

私は、Mavenの3.3.3(2015年5月25日での最新)にジャンプしたかったです。私はそれは私が楽観的なものの現在のバージョンは、ここで指定した(他の場所)にアップデートしようとしたときに提示SISUエラーなしで作業しました。これはJDK8を使用して、今日のように指定例で働いていたタグを持つプロジェクトです。

https://github.com/mykelalvis/test-maven-埋め込み/木/ 20150525-作業する

関連DEPS(SLF4Jはちょうどので、私は、ログを見ることができるである)

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-embedder</artifactId>
        <version>3.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.aether</groupId>
        <artifactId>aether-connector-basic</artifactId>
        <version>1.0.2.v20150114</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.aether</groupId>
        <artifactId>aether-transport-wagon</artifactId>
        <version>1.0.2.v20150114</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-http</artifactId>
        <version>2.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-provider-api</artifactId>
        <version>2.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-http-lightweight</artifactId>
        <version>2.9</version>
    </dependency>   

これは実行

rm -r ~/.m2/repository/org/apache/maven/plugins/maven-clean-plugin/
mvn exec:java

たぶんある種のユニットテスト作っている必要があります。

誰かが埋め込まれたのMaven 3.3.3(すなわち、必要な依存関係の小さい以上の範囲志向のセットを思い付いた)のための優れたソリューションを持っている場合は、それらを投稿してください。

@StevePerkinsからのコメント上のビルドに

、およびMavenのバージョン3.1.0を使用して、

私はそれが働いて得るためにワゴン・プロバイダAPIへのオード - コネクタ - ワゴンからの推移の依存関係を除外しなければなりませんでした。

のpom.xmlます:

(...)
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-embedder</artifactId>
    <version>3.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.eclipse.aether</groupId>
    <artifactId>aether-connector-wagon</artifactId>
    <version>0.9.0.M2</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-provider-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.maven.wagon</groupId>
    <artifactId>wagon-http</artifactId>
    <version>2.5</version>
    <scope>test</scope>
</dependency>
(...)
ここで

とは、Javaの例です。

(...)
MavenCli cli = new MavenCli();

ByteArrayOutputStream baosOut = new ByteArrayOutputStream();
ByteArrayOutputStream baosErr = new ByteArrayOutputStream();

PrintStream out = new PrintStream(baosOut, true);
PrintStream err = new PrintStream(baosErr, true);

cli.doMain( new String[] { "clean" }, new File("."), out, err );

String stdout = baosOut.toString("UTF-8");
String stderr = baosErr.toString("UTF-8");
(...)

完全な例こちら

は達人、埋め込みのバージョンごとに依存マトリックスは、例えば、あります3.2.5用: http://maven.apache.org/ REF / 3.2.5 / Mavenの-埋め込み/ dependencies.htmlする

私はorg.apache.maven:maven-embedder:jar:3.2.5org.apache.maven:maven-aether-provider:jar:3.2.5、およびorg.apache.maven.wagon:wagon-provider-api:jar:2.8を使用しなければならなかったことに基づいています。

このバージョンは18.0を使用していますので、それはまた、非常に古いグアバライブラリの依存が修正されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top