-->

如何消除“Maven的实施者 - 插件(目标”强制执行“)由M2E忽略”的日食警告?(How to

2019-07-02 10:41发布

我使用maven和eclipse M2E配置多模块父子Maven项目中,我使用从日食朱诺SR1最新的东西,这是M2E 1.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的设置?

Answer 1:

这次日食Maven插件运行项目pom.xml文件,以便弄清楚Maven项目是如何配置和Maven的pom.xml的配置,转换为Eclipse配置。 一个pom.xml可以引用行家插件的任意数量,并且每个这些插件的具有泄漏内存,或做的事情,是有害的蚀的可能性。 因此,在默认情况下M2E Eclipse插件忽略任何Maven插件,除非这些Maven插件都告诉M2E如何将Maven插件集成到Eclipse的一个特殊M2E插件连接器。 总之M2E是防御的童车Maven插件月食JVM进程,通过说,对于每一个Maven插件,需要有一个M2E连接器的Maven和Eclipse之间的桥梁。

因此,要摆脱警告我增加了以下父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插件设计,当它处理一个maven的pom.xml保存元数据与Eclipse插件M2E沟通并使用该信息来告诉Eclipse使用Maven插件,是什么做当蚀运行的pom.xml作为蚀UI的一部分在pom.xml中所定义。



Answer 2:

从M2E版本1.4及更高版本:您可以整合POM(父POM或项目POM)内所需的生命周期配置,也可以将信息集成到Eclipse中的全球M2E配置。 你也需要应用此改变一些的quickfix-行动。

最后一个选项是寻找M2E连接器或切换到不同的Maven的插件集成M2E支持(如JAXB的插件)的新版本。

这里(的实施者 - 插件),我认为,在聚甲醛的定义是最简单的方法。

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



Answer 3:

只是一个供参考的那些你有在构建模型配置您的IDE的问题。 请密切关注目前针对开普勒发布此增强请求:

错误350414:商店忽略外项目M2E连接器的pom.xml https://bugs.eclipse.org/bugs/show_bug.cgi?id=350414



Answer 4:

对我来说,这是类似的问题

我有行家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会和我所有的设置。 希望这可以帮助别人。



Answer 5:

有几个pluginExecutionFilters当另一个缺陷存在。 这些必须在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>
                        ...


Answer 6:

如何消除“Maven的实施者 - 插件(目标”强制执行“)由M2E忽略”的日食警告?

虽然日食lifecycle-mapping插件已经为我工作在其他项目上,我目前在店的IntelliJ用我的秘密Eclipse的工作,我不想改变他们所有的POM文件,包括从类的话,露出自己的org.eclipse.m2e

一些实验后,我发现,你可以得到这个警告不是在Maven的喜好改变生命周期映射露面。 坦率地说,我不是100%肯定这是什么做什么,但我还没有看到任何副作用,所以...

  1. 在Eclipse中,请访问:首选项→Maven的生命周期→映射。
  2. 点击Open workspace lifecycle mappings metadata ,这将打开lifecycle-mapping-metadata.xml在背景标签文件。 我认为这cooresponds到您的工作空间子目录下的以下文件:

     .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. 最后,你需要做的所有项目的行家更新项目看警告消失。

希望这可以帮助。



文章来源: How to eliminate the “maven-enforcer-plugin (goal ”enforce“) is ignored by m2e” warning by eclipse?