web-dev-qa-db-ja.com

「maven-enforcer-plugin(ゴール「enforce」)はm2eによって無視されます」という警告をEclipseで排除する方法は?

私はmavenとEclipse m2eを使用してマルチモジュールの親子mavenプロジェクトを構成しています。m2e1.2.0であるEclipse Juno SR1の最新のものを使用しています

親pomは実施プラグインを使用するため、親pom.xmlのプラグインセクションには以下が含まれます

_<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.1.1</version>
    <executions>

        <!-- Enforce that all versions of a transative dependency must converge. -->
        <execution>
            <id>enforce</id>
            <configuration>
                <rules>
                    <DependencyConvergence />
                </rules>
            </configuration>
            <goals>
                <goal>enforce</goal>
            </goals>
        </execution>

        <!-- Black list certain jars -->
        <execution>
            <id>enforce-banned-dependencies</id>
            <goals>
                <goal>enforce</goal>
            </goals>
            <configuration>
                <rules>
                    <bannedDependencies>
                        <excludes>
                            <exclude>
                                commons-logging:commons-logging
                            </exclude>
                        </excludes>
                    </bannedDependencies>
                </rules>
                <fail>true</fail>
            </configuration>
        </execution>

    </executions>
</plugin>
_

各子プロジェクトには、maven-enforcer-plugin (goal "enforce") is ignored by m2e.というエラーメッセージがあります

  • このメッセージの意味は何ですか?
  • このメッセージを削除するように構成するにはどうすればよいですか?
  • eclipseプロジェクト設定またはpom.xml設定を構成する必要がありますか?
44
ams

Eclipse mavenプラグインは、プロジェクトのpom.xmlファイルを実行して、mavenプロジェクトの構成方法を把握し、maven pom.xml構成をEclipse構成に変換します。 pom.xmlは、任意の数のmavenプラグインを参照できます。これらのプラグインはそれぞれ、メモリをリークしたり、Eclipseに有害なことをしたりする可能性があります。そのため、デフォルトでは、m2e Eclipseプラグインは、mavenプラグインをEclipseに統合する方法をm2eに指示する特別なm2eプラグインコネクタがない限り、mavenプラグインを無視します。要約すると、m2eは、バグのあるmavenプラグインに対してEclipse JVMプロセスを防御しています。mavenプラグインごとに、mavenとEclipseをブリッジするm2eコネクタが必要だということです。

そのため、警告を取り除くために、親pom.xmlのプラグイン管理セクションに以下を追加しました

<build>
  <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-enforcer-plugin</artifactId>
                  <versionRange>[1.0.0,)</versionRange>
                  <goals>
                    <goal>enforce</goal>
                  </goals>
                </pluginExecutionFilter>
                <action>
                  <ignore />
                </action>
              </pluginExecution>
            </pluginExecutions>
          </lifecycleMappingMetadata>
        </configuration>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

のようだ org.Eclipse.m2e:lifecycle-mappingは、Maven pom.xmlを処理するときにEclipse m2eプラグインと通信するためのメタデータを保持するように設計されたmavenプラグインであり、この情報は、Eclipseがpomを実行するときにpom.xmlで定義されたmavenプラグインで何をするかをEclipseに伝えるために使用されますEclipse UIの一部としてのxml。

55
ams

M2eバージョン1.4以降:必要なライフサイクル構成をpom(parent-pomまたはproject-pom)内に統合するか、Eclipse内のグローバルm2e-configurationに情報を統合できます。また、この変更を適用するためのいくつかのクイックフィックスアクションがあります。

最後のオプションは、m2e-connectorsを探すか、m2e-supportが統合された異なるバージョンの異なるmaven-plugins(jaxb-pluginsなど)の新しいバージョンに切り替えることです。

ここ(forcer-pluginの場合)、pomでの定義が最も簡単な方法だと思います。

参照: https://www.Eclipse.org/m2e/documentation/m2e-execution-not-covered.html

4
afischer

ビルドモデルでIDEを設定する際に問題が発生した場合は、参考にしてください。現在Keplerリリースを対象としているこの拡張リクエストに注目してください。

バグ350414:無視されたm2eコネクタをプロジェクトpom.xmlの外に保存https://bugs.Eclipse.org/bugs/show_bug.cgi? id = 350414

2
rmp

「maven-enforcer-plugin(目標「enforce」)をEclipseによるm2e」警告で無視する方法は?

Eclipse lifecycle-mappingプラグインは他のプロジェクトで機能しましたが、現在Eclipseの秘密のインスタンスでIntelliJショップで働いているので、pom.xmlを変更することはできません。グループorg.Eclipse.m2eのすべてを含めるようにすべてのPOMファイルを変更して、自分自身を公開します。

いくつかの実験の後、Mavenの設定でライフサイクルマッピングを変更することで、この警告が表示されないことがわかりました。率直に言って、私はこれが何をしているのか100%確信していませんが、副作用は見ていません...

  1. Eclipseで、[設定]→[Maven]→[ライフサイクルマッピング]に移動します。
  2. Open workspace lifecycle mappings metadataをクリックすると、バックグラウンドのタブでlifecycle-mapping-metadata.xmlファイルが開きます。これは、ワークスペースのサブディレクトリの下にある次のファイルに対応するものと想定しています。

    .metadata/.plugins/org.Eclipse.m2e.core/lifecycle-mapping-metadata.xml
    
  3. 次に、<pluginExecutions>...</pluginExecutions>内のファイルの下部に次のスタンザを追加します。

    <pluginExecution>
        <pluginExecutionFilter>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <versionRange>[1.0.0,)</versionRange>
            <goals>
                <goal>enforce</goal>
            </goals>
        </pluginExecutionFilter>
        <action>
            <ignore />
        </action>
    </pluginExecution>
    
  4. XMLファイルを保存したら、設定ウィンドウに戻ってReload workspace lifecycle mappings metadataを押す必要があります。これにより、ファイルがコンパイルされます。

  5. 最後に、すべてのプロジェクトでmaven update-projectを実行して、警告が消えるのを確認する必要があります。

お役に立てれば。

0
Gray

私にとっても同様の問題でした

Maven 3.0.3とJava 1.5がありました

そして私のポンは持っていました

<executions>
                    <execution>
                        <id>enforce-versions</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>[3.0.3,2.2.1,)</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>[1.7, 1.8)</version>
                                </requireJavaVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

ご覧のとおり、私は実際にルールを満たしていないので、Javaを更新し、mvnを実行しました。すべてが設定されました。これが誰かの助けになることを願っています。

0
tosha Shah

複数のpluginExecutionFilterがある場合、別の落とし穴が存在します。これらはpom.xmlの適切な場所になければなりません!私にとっては、変位のエラーや警告が存在しなかったので、それを見つけるのは危険でした。

これは、いくつかのpluginExecutionFiltersを使用するための適切なコードです。

<build>
  <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-enforcer-plugin</artifactId>
                        <versionRange>[1.0.0,)</versionRange>
                        <goals>
                           <goal>enforce</goal>
                        </goals>
                    </pluginExecutionFilter>
                    <action><ignore/></action>
                </pluginExecution>
<!-- now here follows the new filter -->
                <pluginExecution>
                    <pluginExecutionFilter>
                        <groupId>com.googlecode.maven-Java-formatter-plugin</groupId>
                        ...
0
smön