4

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

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

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

如果 submodule21 依赖于 submodule1 maven 报告

无法在项目 submodule21 上执行目标:无法解析项目 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 注释。

万无一失的魔力是如何实现这一目标的?

我的代码是

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

4

1 回答 1

0

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

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

于 2013-09-16T18:57:46.397 回答