私は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 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。
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
ビルドモデルでIDEを設定する際に問題が発生した場合は、参考にしてください。現在Keplerリリースを対象としているこの拡張リクエストに注目してください。
バグ350414:無視されたm2eコネクタをプロジェクトpom.xmlの外に保存https://bugs.Eclipse.org/bugs/show_bug.cgi? id = 350414
「maven-enforcer-plugin(目標「enforce」)をEclipseによるm2e」警告で無視する方法は?
Eclipse lifecycle-mapping
プラグインは他のプロジェクトで機能しましたが、現在Eclipseの秘密のインスタンスでIntelliJショップで働いているので、pom.xml
を変更することはできません。グループorg.Eclipse.m2e
のすべてを含めるようにすべてのPOMファイルを変更して、自分自身を公開します。
いくつかの実験の後、Mavenの設定でライフサイクルマッピングを変更することで、この警告が表示されないことがわかりました。率直に言って、私はこれが何をしているのか100%確信していませんが、副作用は見ていません...
Open workspace lifecycle mappings metadata
をクリックすると、バックグラウンドのタブでlifecycle-mapping-metadata.xml
ファイルが開きます。これは、ワークスペースのサブディレクトリの下にある次のファイルに対応するものと想定しています。
.metadata/.plugins/org.Eclipse.m2e.core/lifecycle-mapping-metadata.xml
次に、<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>
XMLファイルを保存したら、設定ウィンドウに戻ってReload workspace lifecycle mappings metadata
を押す必要があります。これにより、ファイルがコンパイルされます。
お役に立てれば。
私にとっても同様の問題でした
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を実行しました。すべてが設定されました。これが誰かの助けになることを願っています。
複数の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>
...