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

时间:2013-03-04 23:22:42

标签: java maven mojo

我有一个用@requiresDependencyResolution测试注释的mojo。

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

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

如果submodule21依赖于submodule1 maven报告

  

无法在项目子模块21上执行目标:无法解决   项目的依赖项org.my:submodule21:jar:1.0-SNAPSHOT:可以   找不到工件org.my:submodule1:jar:1.0-SNAPSHOT

删除requiresDependencyResolution = test批注可以防止出现此问题,但是我无权访问运行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

1 个答案:

答案 0 :(得分:0)

为了其他任何有此问题的人的利益 - 我最终解决了这个问题。这个插件没有问题。

surefire和我自己的插件之间的区别就在于它们的运行方式。 Surefire一直处于测试阶段,我自己的插件是通过直接调用目标来运行的。当我将我的插件绑定到验证阶段时,所有内容都会毫无问题地解决。