web-dev-qa-db-ja.com

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

私はかなりシンプルな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はそうであり、それが私が本当に気にするすべてです。私のプロジェクトでこのエラーを取得するにはどうすればよいですか?

154
Naftuli Kay

これは既知の問題のようです。これを無視するように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 Settings

165
maksimov

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

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

これをpluginsの後ろのbuild内に追加する必要があります。これによりエラーが削除され、M2Eがcopy-depenciesの目標maven-dependency-pluginを認識し、POMが期待どおりに動作するようになり、Eclipseがビルドするたびに依存関係がフォルダーにコピーされます。エラーを単に無視したい場合は、<execute /><ignore />に変更します。前に提案したように、maven-dependency-pluginpluginManagementで囲む必要はありません。

<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>
57
Caio Cunha

コピーの依存関係、アンパック、パックなどがプロジェクトにとって重要な場合は、無視しないでください。 Eclipse Indigo SR1、maven 2.2.1でテスト済みの<plugins><pluginManagement>を囲む必要があります

38
user311174

動作させるには、無視する代わりに、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. 楽しい
16
mario

上記の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>
8
SGB

EclipseでHadoopプロジェクトをロードしようとしたときに、同じ問題が発生しました。上記の解決策を試してみましたが、Eclipse Keplerで機能したのではないかと思います...もうよくわかりません(試行錯誤しました)。

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

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

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

1
Myluco

私はこれが古い投稿であることを知っていますが、今日この問題に苦労し、このページのテンプレートを使用しました: 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>

また、m2e 1.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エラーが発生しました。

0
Andna

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

0
blue-sky