首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven隐式“提供的”依赖项未在“dependency:tree”中显示

Maven隐式“提供的”依赖项未在“dependency:tree”中显示
EN

Stack Overflow用户
提问于 2011-03-22 18:39:27
回答 2查看 3.4K关注 0票数 5

一位同事正在尝试建立一个新的Spring项目。该项目显式地依赖于spring-security,而spring-security又(隐式地)依赖于wss4j。在运行测试时,他遇到了缺少类的问题。

我们已经将缺失的类追踪到了axis-saaj,这是wss4j的一个“提供的”作用域依赖项。当我运行dependency:tree maven目标时,它没有被列为他的项目的依赖项。

我对“provided”的理解是这样的:它是由Maven为构建解析的,但不包含在可交付成果中,也不是由Maven (在类路径上)为任何“运行”阶段提供的(运行测试或通过Maven运行应用程序本身)。

因此,在“provided”依赖项对您的项目是隐含的情况下,Maven将完全忽略它,因为它实际上并不是构建依赖于“provided”工件的可交付成果,而是由您在运行时提供它。

我已经测试并列出了dependency:tree提供的依赖关系,如果它们是项目的显式依赖关系,但如果它们位于依赖关系树的较低位置,则不会。

我已经告诉他现在将依赖项作为显式依赖项(作用域为‘运行时’),但显然这会在完整的运行时环境中造成问题(它的作用域不是无缘无故的‘提供’),但我们需要知道依赖项才能显式地包含它们。有没有人知道如何获取项目的完整依赖列表?

谢谢

PS。我知道我也可以让他显式地依赖于带有“test”作用域的“axis-saaj”,但这不是问题所在,列出依赖项才是问题所在!

PPS。我们使用Maven3来实现这一点

PPPS。我没有在这里包含任何pom文本,因为它会变得太长。您可以通过在(groupId) org.springframework.ws,(artifactId) spring-ws-security,(版本)2.0.0.RELEASE上创建一个显式依赖项来查看这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-13 09:00:22

mvn dependency:treemvn dependency:list给出了你想要的“完整依赖列表”。正如您似乎正确理解的那样,您的依赖项的给定作用域依赖项不符合“传递性”的条件,因为缺少更好的词,因此不能算作您项目的依赖项。你似乎对情况有一个正确的把握,所以我不确定你还在问什么。试着问一些特定的问题和/或阅读basics of transitive dependencies,特别是页面下方的表格,它表明所提供的依赖关系永远不会包含在可传递性中。

票数 1
EN

Stack Overflow用户

发布于 2011-08-13 08:52:13

您是否检查了此axis-saaj依赖项是否也是optional=true

您所描述的行为正是optional所暗示的,因此您需要添加它是正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5389934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档