对不起,我的新手问题。java/maven如何在运行时解决依赖冲突
假设我有一个包A,它声明B,C作为它的maven文件中的依赖项。 B,C使用两个不同版本的log4j进行日志记录。我有几个问题:
- 如果我使用maven,并声明B,C作为A的依赖关系。当maven从mavencentral repo中抽取B,C的神器(.jar)时。做B,C jar文件包含log4j类文件或仅包含它们自己的编译文件(B,C自己的源代码,不依赖项)。
- 如果我理解正确,当构建发生时,最后,构建中将只有一个log4j类文件(即使B,C使用不同版本的log4j)。在这里选择要创建哪个版本的log4j?这是否意味着我需要将log4j声明为A依赖项(在A的maven构建文件中) - 并且该版本将被选择为构建版本。
- B,C可能会使用完全不同的log4j版本。这里的API可能完全不同。它应该在运行时造成问题?但事实上,这是非常罕见的?为什么这样?
谢谢。
Maven有一个假设,可以始终使用较新版本的工件而不是旧版本。如果不是,则需要在依赖项中使用排除开始播放。 –