gpt4 book ai didi

java - Maven:解决重复的依赖关系

转载 作者:太空宇宙 更新时间:2023-11-04 06:41:34 27 4
gpt4 key购买 nike

我正在开发一个将在我们公司内部使用的应用程序。为了让它与我们的其他内部系统进行互操作,我必须使用一些我们内部使用的 Maven 依赖项,但这会导致使用我也需要的一些外部第 3 方依赖项时出现一些问题。

所以基本上我的 pom 看起来像这样:

<dependencies>
<dependency>
internal-framework-artifact
</dependency>

<dependency>
necessary-third-party-artifact
</dependency>
</dependencies>

我发现这两个依赖项都将 apache 的 commons-collections 作为它们自己的依赖项之一(在大量其他依赖项中,但为了简单起见,我们将其保留为 1)。

如果我在 commons-collections pom 的两个版本上放置排除规则,我可以编译该项目,但生成的 jar 将无法访问 commons-collections 的任何一个版本,并且只会导致 java.lang.NoClassDefFoundError 异常。删除其中任何一个的排除规则只会导致 mvn 编译器错误:

[WARNING] Rule 2: org.apache.maven.plugins.enforcer.BanDuplicateClasses failed with message: Duplicate classes found:

我一直在查看各种问答,但我似乎找不到与我的情况 100% 相关的内容。我真的不知道如何解决这个问题。我是否遗漏了一些非常明显的东西?

最佳答案

我从未真正使用过 maven-shade-plugin 进行着色,但我认为这正是它设计的用途。

创建一个使用 maven-shade-plugin 的新项目(请参阅: http://maven.apache.org/plugins/maven-shade-plugin/ )来生成 internal-framework-artifact 的 uber-jar 版本,其中包含 internal-framework-artifact 中的类及其所有依赖项。配置插件,以便将所有依赖于 necessary-third-party-artifact 的类重新定位到一些不冲突的包名称。这个新项目应该生成一个具有不同名称的 .jar,例如 internal-framework-artifact-with-dependencies

现在修改您的原始 pom,使其依赖于 internal-framework-artifact-with-dependencies,并且它应该可以工作。

关于java - Maven:解决重复的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24621370/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com