46

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

親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設定を構成する必要がありますか?
4

6 に答える 6

56

eclipse mavenプラグインは、mavenプロジェクトがどのように構成されているかを把握し、maven pom.xml構成をeclipse構成に変換するために、projectspom.xmlファイルを実行します。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は、mavenpom.xmlを処理するときにeclipsem2eプラグインと通信するためのメタデータを保持するように設計されたmavenプラグインのようです。この情報は、eclipseが実行するときにpom.xmlで定義されたmavenプラグインをどのように処理するかをeclipseに伝えるために使用されます。 EclipseUIの一部としてのpom.xml。

于 2012-10-24T06:14:16.680 に答える
4

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

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

ここで(エンフォーサープラグインの場合)、pomでの定義が最も簡単な方法だと思います。

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

于 2014-10-10T16:34:06.360 に答える
2

ビルドモデルでのIDEの構成に問題がある方のための参考までに。現在Keplerリリースを対象としているこの拡張リクエストに注目してください。

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

于 2012-12-20T18:40:47.640 に答える
0

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

私はMaven3.0.3とJava1.5を持っていました

そして私のpomは持っていた

<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を実行し、すべての準備が整いました。これが誰かを助けることを願っています。

于 2013-06-05T17:45:59.190 に答える
0

複数のpluginExecutionFilterを使用する場合、もう1つの落とし穴があります。これらは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>
                        ...
于 2013-09-11T16:38:51.977 に答える
0

日食による「m2e」警告によって「maven-enforcer-plugin(目標「enforce」)が無視される)を排除する方法は?

eclipselifecycle-mappingプラグインは他のプロジェクトで機能しpom.xmlましたが、現在Eclipseの秘密のインスタンスを使用してIntelliJショップで作業しているため、変更できません。すべてのpomファイルを次のように変更して自分自身を公開したくありません。グループからのすべてを含めますorg.eclipse.m2e

いくつかの実験の結果、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. Reload workspace lifecycle mappings metadataXMLファイルが保存されたら、設定ウィンドウに戻って、ファイルをコンパイルするを押す必要があります。

  5. 最後に、警告が消えることを確認するために、すべてのプロジェクトでMaven更新プロジェクトを実行する必要があります。

お役に立てれば。

于 2018-03-01T16:35:04.003 に答える