摆脱 org.eclipse.m2e:lifecycle-mapping 的 POM not found 警告
Posted
技术标签:
【中文标题】摆脱 org.eclipse.m2e:lifecycle-mapping 的 POM not found 警告【英文标题】:get rid of POM not found warning for org.eclipse.m2e:lifecycle-mapping 【发布时间】:2011-12-15 20:54:23 【问题描述】:为了让 m2e 1.0 正常工作,我必须指定生命周期映射:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<versionRange>[2.0.2,)</versionRange>
<goals>
<goal>process</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
但后来我收到了这个警告:
[WARNING] The POM for org.eclipse.m2e:lifecycle-mapping:jar:1.0.0 is missing, no dependency information available
[WARNING] Failed to retrieve plugin descriptor for org.eclipse.m2e:lifecycle-mapping:1.0.0: Plugin org.eclipse.m2e:lifecycle-mapping:1.0.0 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.eclipse.m2e:lifecycle-mapping:jar:1.0.0
如果我运行一些特定的 maven 任务,例如 mvn clean install findbugs:findbugs
(如果我只运行 mvn clean install
则没有这样的消息)
我知道问题是这个POM不存在,因为它只是定义来保存映射信息的。 (m2e lifecycle-mapping not found)
无论如何,我想保持我的构建干净,没有任何警告,那么我怎样才能摆脱这个特定的呢? (我的 CI 服务器检查没有警告。)
我使用 Maven 3.0.2,也尝试过 Maven 3.0.3,但结果相同。
【问题讨论】:
你运行的是哪个 Maven 版本? @khmarbaise:是maven 3.0.2 你能发布这个项目的完整 POM...因为我假设你在你的 pom 中的某个地方有依赖关系...顺便说一句:你试过用 Maven 3.0.3 运行它吗? @khmarbaise:您的意思是不是我已经发布的依赖项之外的其他依赖项? @khmarbaise:Maven 3.0.3 的行为相同 【参考方案1】:m2eclipse 1.7.0 引入了一个替代方案,即 XML 处理指令。
在最初的示例中,您只需将maven-processor-plugin
的process
目标的每个<execution>
都“注释”为
<?m2e execute?>
有关语法和更多选项的更多详细信息,请参阅release notes。
【讨论】:
我想给这个答案投票 60 次,它比旧的 XML 汤要整洁得多 虽然来自@ctrueden 的<profile />
appraoch 对于我们所有被旧Eclipse 版本卡住的人来说都很棒——这个答案太棒了!
请注意,上面的行将插件标记为execution, once, on project import
,这可能不是您想要的。下一个可能的选项可能是<?m2e ignore?>
,它会按照它所说的那样做。还有一些更细粒度的选项可用。
请你解释一下我应该把你的代码放在哪里?我在示例中(以及我的 pom.xml)中看不到 maven-processor-plugin 的任何 这是known bug,分辨率为WONTFIX。我认为建议的解决方案是最简单的:
mvn archetype:generate -DgroupId=org.eclipse.m2e -DartifactId=lifecycle-mapping \
-Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-mojo
和install
这个项目。
【讨论】:
这很好用。我将 distributionManagement->repository 标记添加到我们本地 nexus 存储库的 pom 中,并进行了 mvn deploy 以便为我的团队修复它。 “安装这个项目”是什么意思?我应该执行什么? @CptWasp 命令生成一个新项目。您需要使用“mvn install”将其安装在本地 m2 存储库中【参考方案3】:此解决方案现已弃用,我建议使用@ctrueden 的“配置文件”解决方案,这是公认的答案!
虽然不是最干净的解决方案,但当您在公司或自己使用存储库管理器时,同时您可以这样做:
- 结帐https://github.com/mfriedenhagen/dummy-lifecycle-mapping-plugin。
- 独自一人时运行mvn install
- 当你有像 Nexus 或 Artifactory 这样的存储库管理器时运行mvn deploy -DaltDeploymentRepository=REPO_ID::default::YOUR_THIRDPARTY_REPO_URL
。
- 参见https://github.com/mfriedenhagen/dummy-lifecycle-mapping-plugin/blob/master/README.creole。
问候 米尔科
【讨论】:
这是一个 hack,但这是我目前能想到的最佳解决方案 根据您的弃用警告,我将他更改为接受标志,对不起。【参考方案4】:我的团队通过将相关配置包装在配置文件中来解决此问题:
<profile>
<id>only-eclipse</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
...
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
【讨论】:
@Ralph 不,属性激活有效,因为只有 Eclipse 定义了 m2e.version 属性——它不是由 vanilla Maven 或其他 IDE 激活的。不过,它确实假设您使用的是 M2E Eclipse 集成(文件 > 导入 > 现有 Maven 项目)而不是旧的 eclipse:eclipse 目标。 @ctrueden 谢谢你 - 我已经参考。它来自bugs.eclipse.org/bugs/show_bug.cgi?id=367870 这应该是公认的解决方案。它修复了警告,开箱即用地与当前的 eclipse 一起工作,并且不依赖于本地存储库或缓存,因此它也可以在 CI 环境中工作。 这就像一个魅力,非常感谢你,我已经在我的 pom.xml 底部附加了这个配置文件(它看起来像这样:现在有更好的解决方案(仅适用于 Eclipse 中的错误消息)。
在错误生命周期配置未涵盖插件执行时按CTR+1:org.codehaus.mojo:buildnumber-maven-plugin:1.1:create-timestamp(执行:默认- create-timestamp, phase: validate) 然后选择这个选项:
这适用于org.eclipse.m2e.editor.xml_1.2.0.20120903-1050.jar
插件(也许更早)
【讨论】:
当您将它存储在设置中时,其他人会再次看到它。所以对于部署到第三方存储库的公司来说可能更可行:-)。 您命名的快速修复将生命周期映射配置添加到 pom.xml 中。这将导致问题所指的问题,而不是解决它。 我同意@Kissaki;这个答案没有解决这里提出的问题。以上是关于摆脱 org.eclipse.m2e:lifecycle-mapping 的 POM not found 警告的主要内容,如果未能解决你的问题,请参考以下文章