Java Mojo开发-处理多模块项目中未解决的依赖关系
我有一个带有@RequiresDependencyResolutionTest注释的mojo 它适用于具有单层嵌套的多模块项目,但用户报告了如下结构的问题Java Mojo开发-处理多模块项目中未解决的依赖关系,java,maven,mojo,Java,Maven,Mojo,我有一个带有@RequiresDependencyResolutionTest注释的mojo 它适用于具有单层嵌套的多模块项目,但用户报告了如下结构的问题 -- my_project | -- pom.xml -- submodule1 | -- pom.xml -- submodule2 | -- pom.xml -- submodule21 | -- p
-- my_project
|
-- pom.xml
-- submodule1
|
-- pom.xml
-- submodule2
|
-- pom.xml
-- submodule21
|
-- pom.xml
-- submodule22
|
-- pom.xml
如果子模块21依赖于子模块1 maven报告
无法对项目子模块21执行目标:无法解析
project org.my:submodule21:jar:1.0-SNAPSHOT:cand的依赖项
找不到工件org.my:submodule1:jar:1.0-SNAPSHOT
删除requiresDependencyResolution=test注释可以防止此问题,但是我无法访问运行mojo所需的信息
通过对github上surefire代码的简要扫描,它看起来也使用了requiresDependencyResolution=test,但能够在这个项目上运行而不会出现问题
与我自己的代码唯一明显的区别是,它使用java注释,而不是老式的javadoc注释
surefire魔咒是如何做到这一点的
我的代码是
显示问题的示例项目
为了其他有这个问题的人的利益,我最终解决了这个问题。插件没有问题
surefire和我自己的插件之间的区别只是它们的运行方式。Surefire被绑定到测试阶段,我自己的插件通过直接调用目标来运行。当我将插件绑定到验证阶段时,所有问题都会得到解决。根据错误消息,我假设此多模块构建中的依赖项不正确,因为如果依赖项是正确的,那么构建应该可以正常工作,而不需要通过mvn Install将工件安装到本地存储库中。这是我的第一个想法,但是错误只发生在我自己的插件上,而不是surefire。如果项目在某种程度上设置不正确,我希望两个插件显示相同的错误。您是否阅读了@requiresDependencyCollection的说明?也许您在处理链中还太早,实际上依赖项还没有放到类路径上?您是否清理了本地存储库并尝试在没有插件的情况下从头开始构建项目?@khmarbaise感谢您的建议,但不是这样-只是添加了一个描述如何解决此问题的答案。