当前位置: 首页 > 知识库问答 >
问题:

如何消除Eclipse的“maven-enforcer-plugin(目标”enforcer“)被M2E忽略”警告?

皇甫心思
2023-03-14

我正在使用maven和eclipse m2e配置一个多模块的父/子maven项目,我使用的是eclipse Juno SR1的最新内容,即m2e 1.2.0

父pom使用enforcer插件,因此父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(目标“enforcer”)被M2E忽略。

  • 这条消息的意思是什么?
  • 如何配置内容以删除此消息?
  • 需要配置eclipse项目设置还是pom.xml设置?

共有1个答案

楚煜
2023-03-14

eclipse maven插件运行一个projects pom.xml文件,以便弄清楚maven项目是如何配置的,并将maven pom.xml配置转换为eclipse配置。pom.xml可以引用任意数量的maven插件,这些插件中的每一个都有可能泄漏内存,或者做一些对Eclipse有害的事情。因此,默认情况下,m2e eclipse插件忽略任何maven插件,除非这些maven插件有一个特殊的m2e插件连接器,该连接器告诉m2e如何将maven插件集成到eclipse中。总之,m2e是为了保护eclipse JVM进程不受有缺陷的maven插件的影响,它说对于每个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插件,设计用于保存元数据,以便在eclipse m2e插件处理maven pom.xml时与之通信,该信息用于告诉eclipse当eclipse将pom.xml作为eclipse UI的一部分运行时如何处理pom.xml中定义的maven插件。

 类似资料:
  • 我正在使用maven和eclipse m2e配置一个多模块父子maven项目,我使用的是eclipse Juno SR1的最新内容,即m2e 1.2.0 父pom使用enforcer插件,因此父pom使用enforcer插件。xml的插件部分包含以下内容 每个子项目都有一条错误消息,表示m2e忽略了maven enforcer插件(目标“enforce”) 这条信息是什么意思? 如何配置东西以删除

  • 我在父pom的imported dependencyManagement部分中指定了库的版本。我确认我的有效pom只有一次出现这种依赖性。它位于dependencyManagement部分: 这将根据它覆盖可传递依赖项的版本。安装(并重新安装依赖项以匹配版本边界)后,组织。阿帕奇。专家插件:maven依赖插件:2.8:树打印: 但是(最初,没有重新安装依赖项)enforcer抱怨版本错误: 并显示

  • 我正在尝试用Maven安装UIMA JDK。然而,总有一个警告 请帮助我解决此问题

  • 有关错误和可能的解决方案的详细信息,请阅读以下文章:[帮助1]http://cwiki.apache.org/confluence/display/maven/mojoExecutionException

  • 我在我的项目中更新了几个依赖项的版本,构建变得很慢,在enforcer插件上等待大约5分钟以上。我试着比较了以前构建的调试日志,它们通常只需要3分钟,而这次总共需要8+分钟,我提到的5+分钟被执行器偷走了。我在日志中看到的唯一显著区别是下面。没有错误或其他任何东西,而且这些日志移动得很慢。这就是问题所在。如果有人知道这意味着什么,我怎样才能通过这个,这将是很大的帮助 omitfornearer:o