Java 9模块如何解决与传递依赖关系相关的问题?

时间:2018-07-31 02:38:29

标签: java java-9 java-module transitive-dependency

我读到Java 9模块有助于解决由于传递依赖而拉出相同依赖的多个版本时出现的问题。我不明白为什么。如果您带来多个模块,则可以获得同样的问题。我的意思是,如果其中一个模块引入了一个hamcrest版本,而其他模块引入了其他测试工具,则引入了版本2、3、4或任何模仿或junit。模块如何解决此问题?

1 个答案:

答案 0 :(得分:3)

  

在模块路径中搜索具有特定名称的模块时,模块系统会采用该名称的模块的第一个定义。版本字符串(如果存在)将被忽略;如果模块路径的元素包含多个具有相同名称的模块的定义,则解析失败,并且编译器,链接器或虚拟机将报告错误并退出。构建工具和容器应用程序有责任配置模块路径,以避免版本冲突。解决版本选择问题不是模块系统的目标。

http://openjdk.java.net/jeps/261

简而言之,您可以为模块命名,以将特定于版本的字符串作为其名称的一部分,但这仅是