Mojo开发 - 处理多模块项目中未解决的依赖关系

问题描述:

我有一个用@requiresDependencyResolution测试注释的mojo。Mojo开发 - 处理多模块项目中未解决的依赖关系

它适用于具有单层嵌套的多模块项目,但用户报告了如下结构的问题。

-- my_project 
    | 
    -- pom.xml 
    -- submodule1 
     | 
     -- pom.xml 
    -- submodule2 
     | 
     -- pom.xml 
     -- submodule21 
     | 
     -- pom.xml 
     -- submodule22 
     | 
     -- pom.xml 

如果submodule21取决于submodule1行家报告

无法执行项目submodule21目标:无法解析 依赖项目org.my:submodule21:jar:1.0-SNAPSHOT:莫非 不找到神器org.my:submodule1:jar:1.0-SNAPSHOT

卸下requiresDependencyResolution =测试注释防止这个问题,但当时我没有访问Informa公司我需要mojo运行。

从github上的surefire代码的简短扫描,它看起来也使用requiresDependencyResolution = test,但能够在没有问题的情况下运行该项目。

https://github.com/apache/maven-surefire/blob/master/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java

https://github.com/apache/maven-surefire/blob/master/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java

从我自己的代码,唯一明显的区别是,它使用了Java注释,而不是老式的javadoc的。

万无一失的mojo如何实现这一目标?

我的代码是

http://code.google.com/p/pitestrunner/source/browse/pitest-maven/src/main/java/org/pitest/maven/PitMojo.java

示例项目显示问题

http://code.google.com/p/pitestrunner/issues/detail?id=71

+0

基于错误消息,我会假设在这个多模块构建中的依赖关系是不正确的,如果依赖关系正确的话,如果没有任何问题,通过* mvn安装将构件安装到本地存储库时应该可以正常工作* – khmarbaise 2013-03-06 13:00:42

+0

This是我的第一个想法 - 但错误只发生在我自己的插件上,不一定会发生。如果项目在某种程度上不正确的设置,我希望这两个插件都显示相同的错误。 – henry 2013-03-06 22:28:19

+0

您是否阅读了@requiresDependencyCollection的描述?也许你在处理链中太早,实际上依赖关系还没有放到类路径中? – user1050755 2013-03-20 04:43:25

对于任何人的利益别人有这个问题 - 我终于解决了这个问题。这个插件没有问题。

surefire和我自己的插件之间的区别仅仅是它们运行的​​方式。 Surefire被绑定到测试阶段,我自己的插件直接通过调用目标来运行。当我将我的插件绑定到验证阶段时,所有事情都可以毫无问题地解决。