maven-dependency-plugin(目標「copy-dependencies」、「unpack」)はm2eでサポートされていません


155

私はかなり単純なMavenプロジェクトを持っています:

<project>
    <dependencies>
        ...
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/dependencies</outputDirectory>
                        </configuration>    
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

ただし、m2eclipseで次のエラーが発生します。

Description Resource    Path    Location    Type
maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e. pom.xml  /jasperreports-test line 60 Maven Project Build Lifecycle Mapping Problem

m2eclipseがこのタスクを「サポート」していない場合、なぜ気にするのですか?Mavenはそうです、そしてそれが私が本当に気にしているすべてです。プロジェクトでこのエラーを解消するにはどうすればよいですか?


4
最近のm2eは、m2eがサポートされていない目標を無視するようにpom.xmlに適切な構成を追加するためのクイックフィックスを提供しています。
するThorbjörnRavnアンデルセン

@ThorbjørnRavnAndersen、クイックフィックスは何ですか?
Muhammad Gelbana 2014年

1
@MuhammadGelbana Eclipseでは、「迅速な修正」とは、カーソルを問題に置くことを意味します。Ctrl-1を押します。クイックフィックスを選択します。
–ThorbjørnRavn Andersen、2014

回答:


164

既知の問題のようです。これを無視するようにm2eに指示できます。

オプション1:pom.xml

<build/>タグ内に以下を追加します。

<pluginManagement>
<plugins>
    <!-- Ignore/Execute plugin execution -->
    <plugin>
        <groupId>org.eclipse.m2e</groupId>
        <artifactId>lifecycle-mapping</artifactId>
        <version>1.0.0</version>
        <configuration>
            <lifecycleMappingMetadata>
                <pluginExecutions>
                    <!-- copy-dependency plugin -->
                    <pluginExecution>
                        <pluginExecutionFilter>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-dependency-plugin</artifactId>
                            <versionRange>[1.0.0,)</versionRange>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                        </pluginExecutionFilter>
                        <action>
                            <ignore />
                        </action>
                    </pluginExecution>
                </pluginExecutions>
            </lifecycleMappingMetadata>
        </configuration>
    </plugin>
   </plugins></pluginManagement>

Mavenを実行する必要があります...->この後、プロジェクトのプロジェクト構成を更新します。

続きを読む:http : //wiki.eclipse.org/M2E_plugin_execution_not_covered#m2e_maven_plugin_coverage_status

オプション2:グローバルEclipseオーバーライド

POMファイルの変更を回避するために、Eclipse設定を介して無視のオーバーライドをワークスペース全体に適用できます。

このファイルをディスクのどこかに保存します:https : //gist.github.com/maksimov/8906462

ではEclipse/Preferences/Maven/Lifecycle Mappings、このファイルを参照し、[OK]をクリックします。

Eclipse設定


10
コピー依存がWARファイルを構築する上で重要なステップである場合はどうなりますか?m2Eclipseの呼び出しで怪物を処理しています。実行するアクションを変更しても、重要なファイルはターゲットフォルダーにコピーされません...
bartv

1
自動生成された無視設定の場合、@ PhoneTech、m2eは「このプラグインの設定はEclipse m2e設定のみを保存するために使用されます。Mavenビルド自体には影響しません。」というコメントを追加します。しかし、あなたが言っていることはコピーされないので、それが何を意味するのかわかりません。
Arjan 2012

6
はい、それは
役に立ち

これでも警告が表示されますが、エラーは発生していません。
スティーブクロス2014年

57

これは、Eclipse M2Eプラグイン実行のM2Eの問題であり、カバーされていません

この問題を解決するには、認識できないライフサイクルをマップし、M2Eに実行するように指示するだけです。

あなたは、あなたの後にこれを追加する必要がありplugins、内側にbuild。これによりエラーが取り除かれ、M2Eが目標copy-depenciesを認識しmaven-dependency-pluginてPOMを期待どおりに機能させ、Eclipseがビルドするたびに依存関係をフォルダーにコピーします。エラーを無視するだけの場合は、をに変更<execute /><ignore />ます。あなた封入するため不要maven-dependency-pluginにはpluginManagement、以前のように示唆していません。

<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.eclipse.m2e</groupId>
      <artifactId>lifecycle-mapping</artifactId>
      <version>1.0.0</version>
      <configuration>
        <lifecycleMappingMetadata>
          <pluginExecutions>
            <pluginExecution>
              <pluginExecutionFilter>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <versionRange>[2.0,)</versionRange>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
              </pluginExecutionFilter>
              <action>
                <execute />
              </action>
            </pluginExecution>
          </pluginExecutions>
        </lifecycleMappingMetadata>
      </configuration>
    </plugin>
  </plugins>
</pluginManagement>

4
これは確かにそれを解決します。そして、私は人々が動いて話していたときを考えて、愚かされていた<plugins><pluginManagement>実際に移動する必要があります1 <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId>そこに。ただし<groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId>、で囲む必要があるのはについて<pluginManagement>です。Eclipseでクイックフィックスを使用する場合は、同じことが追加された上で定期的に<plugins>、その場所があまりにも正常に動作しそうです。次に、キーをに変更<ignore><execute>ます。いいね。
Arjan 2012

1
あなたが提供したリンクで推奨されているように、実行内に<runOnIncremental> false </ runOnIncremental>が必要であることがわかりました。答えをありがとう、私は正しい道に進みました。
cyber-monk

plugins内に追加した後でこれを追加する必要はありませんbuild。これは前に追加できます。
Fagner Brack 14

38

コピーの依存関係、アンパック、パックなどがプロジェクトにとって重要な場合は、無視しないでください。あなたは同封しなければならない<plugins><pluginManagement>2.2.1をMavenのEclipseのインディゴSR1でテストを、


4
おかげで、それはEclipse Indigo SR2にも役立ちます
ステム09

1
少しは私を失ったんだ...んが、平均より上が、とのコードを使用していることを<execute />代わりに<ignore />?ありがとう!
xverges

1
もう少し詳しく説明しますか?ただ、パッティング<plugin><pluginManagement>、それでもまだ私に同じ警告を与え、それがその仕事をする参照。
Arjan 2012

@CaioToOn、もう少し知っているかもしれません...?に追加した<pluginManagement>後も、「通常の」2行<build><plugins><plugin>...も追加する必要があります。で構成されたものを参照して<pluginManagement>ください。(それでも、Junoが同じことについて文句を言うのを見てい<pluginManagement>ます。)
Arjan

@Arjan pluginsタグをで囲む必要がありますpluginManagement。しかし、私が下で与えた答え、stackoverflow.com / a / 12109018/179138を見てください。提案されたものは実行を無視しますが、Eclipseでプラグインを実行しないでください。
Caio Cunha

16

これを機能させるには、無視する代わりに、maven-dependency-pluginのm2eコネクターをインストールします:https :
//github.com/ianbrandt/m2e-maven-dependency-plugin

ここでは、Eclipseでそれを行う方法を示します。

  1. Window / Preferences / Maven / Discovery /に移動します
  2. カタログのURLを入力してください:http : //download.eclipse.org/technology/m2e/discovery/directory-1.4.xml
  3. [カタログを開く]をクリックします
  4. m2e-maven-dependency-pluginを選択します
  5. 楽しい

1
正解は+1。pom.xmlプラグインのインストール後にファイルを少し編集することを忘れないでください。そうしないと、エラーが消えない場合があります。
Fagner Brack


私はこれを試しましたが、カタログURLフィールドは編集できません!鉱山は最後に設定されています:download.eclipse.org/technology/m2e/discovery/directory.xml(つまり-1.4なし)。どのように/どこでそれを調整することができますか?
mmo

8

上記のCaioToOnからの回答にもかかわらず、私はこれを最初に機能させるのにまだ問題がありました。

何度か試した後、ようやく機能しました。私の最終版をここに貼り付けています-それが他の誰かのためになることを願っています。

    <build> 
        <plugins>
            <!--
            Copy all Maven Dependencies (-MD) into libMD/ folder to use in classpath via shellscript
             --> 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.8</version>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/libMD</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <!--  
        Above maven-dependepcy-plugin gives a validation error in m2e. 
        To fix that, add the plugin management step below. Per: http://stackoverflow.com/a/12109018
        -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-dependency-plugin</artifactId>
                                        <versionRange>[2.0,)</versionRange>
                                        <goals>
                                            <goal>copy-dependencies</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <execute />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

日食で実行するという目標を提供できますか?
Jess

1

EclipseでHadoopプロジェクトをロードしようとすると、同じ問題が発生しました。私は上記の解決策を試しましたが、それがEclipse Keplerで機能した可能性があると思います...確かではありません(あまりにも多くのことを試しました)。

私が抱えていたすべての問題を抱えて、私はEclipse Lunaに移ることに決めました、そして上記の解決策は私にとってはうまくいきませんでした。

...タグをパッケージに変更することを推奨する別の投稿がありました。私はそれを始めました、そしてそれはエラーを「クリア」します...しかし、私は変更が後で私に噛まれるだろうと思い始めます-私はMavenの専門家ではありません。

幸い、すべてのエラーを削除する方法を見つけました。「ウィンドウ」->「設定」->「Maven」->「エラー/警告」に移動し、「プラグインの実行がライフサイクルの対象外です...」オプションを「無視」に変更します。それが役に立てば幸い。


0

私はこれが古い投稿であることを知っていますが、今日もこの問題に苦労し、このページのテンプレートを使用しました:http : //maven.apache.org/plugins/maven-dependency-plugin/usage.html

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.7</version>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>[ groupId ]</groupId>
                  <artifactId>[ artifactId ]</artifactId>
                  <version>[ version ]</version>
                  <type>[ packaging ]</type>
                  <classifier> [classifier - optional] </classifier>
                  <overWrite>[ true or false ]</overWrite>
                  <outputDirectory>[ output directory ]</outputDirectory>
                  <destFileName>[ filename ]</destFileName>
                </artifactItem>
              </artifactItems>
              <!-- other configurations here -->
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

そして、すべてがm2e1.3.1で正常に動作します。

使ってみたところ

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/dependencies</outputDirectory>
                    </configuration>    
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

m2eエラーも発生しました。


はい、これがまさにこのエントリの目的です。m2eでは、Eclipseビルドライフサイクルでプラグインの実行をマップするためのコネクタが必要になりました。<br/>コメントを書いている時点でも、m2eはこのようなコネクタをいくつかしかサポートlifecycle-mappingしていません。Mavenプラグインを使用して、サポートされていないプラグイン(ここではmaven-dependency-plugin)の処理方法をm2eに指示する必要があります
Olivier B.

0

別のオプションは、問題タブに移動し、エラーを右クリックして、クイックフィックスの適用をクリックします。は無視xmlコードを生成し、それに.pomファイルを適用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.