Nexus Ivy Maven:二级依赖忽略传递

Posted

技术标签:

【中文标题】Nexus Ivy Maven:二级依赖忽略传递【英文标题】:Nexus Ivy Maven : Second Level Dependencies Ignores Transitive 【发布时间】:2014-11-28 11:34:22 【问题描述】:

1.) 我有一个具有这种常春藤依赖项的 Project1:

<dependency org="xalan" name="serializer" rev="2.7.1" transitive="false" conf="compile->default" />

这个项目带来了serializer.jar(就只有这个jar,OK!

2.) 在第二个项目(Proyect2)中,我放置了下一个依赖项:

<dependency org="com.net" name="Project1" rev="latest.integration" conf="default->default;compile->compile;runtime->runtime" transitive="true">
</dependency>

这个“项目2”带来:

    项目一 Serializer.jar

    xml-apis.jar

    尽管在 xalan 依赖项中将转移设置为 false。

我在我的 Eclipse + IVEDe 环境中没有这种行为,只有 Nexus 和 Maven.... 这似乎是错误的,因为在 Project1 上我将 xalan 传递性设置为 false。

【问题讨论】:

【参考方案1】:

在项目 1 中尝试以下依赖项,看看是否能解决问题:

<dependency org="xalan" name="serializer" rev="2.7.1" conf="compile->master" />

请参阅以下关于 Ivy 如何解释 Maven 模块和范围的答案:

How are maven scopes mapped to ivy configurations by ivy

我不喜欢关闭传递依赖。我认为依赖配置映射要好得多,如果绝对必要,还可以包含一个排除语句来删除令人反感的依赖关系。

【讨论】:

嗨!解决问题的另一种方法是排除 xml-apis 。对我来说,它以这种方式工作(排除模块='xml-apis'),但是发送主配置进行编译是另一种选择。但是,我想说的是,在我定义依赖传递=“假”的方式中,不应该提供第三方库.... ,但是使用 Maven 和 Nexus 给我带来了 Serializer 和 Xml-apis .... 我不知道为什么.. 逻辑行为是本地的!:-)!没有传递性...

以上是关于Nexus Ivy Maven:二级依赖忽略传递的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Sonatype Nexus 作为 Ivy 依赖项的镜像 [重复]

ivy(2.3.0 或 2.4)不使用分类器解析 SNAPSHOT maven 依赖项

从 Nexus 下载时,常春藤的 transitive="false" 会被忽略

ivy使用Maven阿里云镜像的问题

常春藤不使用分类器拉动对 jar 的传递依赖

从 Maven 迁移到 SBT