我使用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的设置?
这次日食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中所定义。
从M2E版本1.4及更高版本:您可以整合POM(父POM或项目POM)内所需的生命周期配置,也可以将信息集成到Eclipse中的全球M2E配置。 你也需要应用此改变一些的quickfix-行动。
最后一个选项是寻找M2E连接器或切换到不同的Maven的插件集成M2E支持(如JAXB的插件)的新版本。
这里(的实施者 - 插件),我认为,在聚甲醛的定义是最简单的方法。
参见: https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html
只是一个供参考的那些你有在构建模型配置您的IDE的问题。 请密切关注目前针对开普勒发布此增强请求:
错误350414:商店忽略外项目M2E连接器的pom.xml https://bugs.eclipse.org/bugs/show_bug.cgi?id=350414
对我来说,这是类似的问题
我有行家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会和我所有的设置。 希望这可以帮助别人。
有几个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>
...
如何消除“Maven的实施者 - 插件(目标”强制执行“)由M2E忽略”的日食警告?
虽然日食lifecycle-mapping
插件已经为我工作在其他项目上,我目前在店的IntelliJ用我的秘密Eclipse的工作,我不想改变他们所有的POM文件,包括从类的话,露出自己的org.eclipse.m2e
。
一些实验后,我发现,你可以得到这个警告不是在Maven的喜好改变生命周期映射露面。 坦率地说,我不是100%肯定这是什么做什么,但我还没有看到任何副作用,所以...
- 在Eclipse中,请访问:首选项→Maven的生命周期→映射。
点击Open workspace lifecycle mappings metadata
,这将打开lifecycle-mapping-metadata.xml
在背景标签文件。 我认为这cooresponds到您的工作空间子目录下的以下文件:
.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
不知何故编译文件。
- 最后,你需要做的所有项目的行家更新项目看警告消失。
希望这可以帮助。
文章来源: How to eliminate the “maven-enforcer-plugin (goal ”enforce“) is ignored by m2e” warning by eclipse?