6.2. 模块依赖项

模块依赖项是一种声明,一个模块需要一个或多个其他模块的类才能正常工作。当 JBoss EAP 加载模块时,模块类加载程序会解析该模块的依赖性,并将各个依赖项中的类添加到其类路径中。如果无法找到指定的依赖项,模块将无法加载。

部署的应用(如 JAR 或 WAR)作为动态模块加载,并利用依赖项来访问 JBoss EAP 提供的 API。

有两种类型的依赖项:显式和 隐式

显式依赖项
开发人员在配置文件中声明显式依赖项。静态模块可以在其 module.xml 文件中声明依赖项。动态模块可以声明部署的 MANIFEST.MFjboss-deployment-structure.xml 部署描述符中的依赖关系。
隐式依赖项

当部署中发现特定条件或元数据时,JBoss EAP 会自动添加隐式依赖关系。JBoss EAP 提供的 Jakarta EE API 是通过检测部署中隐式依赖项而添加的模块示例。

也可以使用 jboss-deployment-structure.xml 部署描述符文件将部署配置为排除特定的隐式依赖项。当应用捆绑了 JBoss EAP 将尝试添加 作为隐式依赖项的库的特定版本时,这非常有用。

可选依赖项

明确的依赖项可以作为可选指定。如果加载可选依赖项,则不会导致模块加载失败。但是,如果稍后依赖项可用,它不会添加到模块的类路径中。加载模块时,依赖项必须可用。

导出依赖性

模块的类路径仅包含其自身的类和直接依赖项的类。模块无法访问其中一个依赖项的依赖项类别。不过,模块可以指定导出明确的依赖项。导出的依赖关系会提供给依赖于导出它的模块的任何模块。

例如,模块 A 依赖于模块 B,而模块 B 则依赖于模块 C。模块 A 可以访问模块 B 的类,而模块 B 则可访问模块 C 类。模块 A 无法访问模块 C 类,除非:

  • 模块 A 声明了明确依赖模块 C
  • 模块 B 导出其对模块 C 的依赖。

全局模块

全局模块是 JBoss EAP 提供的一个模块,作为每个应用的依赖性。任何模块均可通过添加至 JBoss EAP 的全局模块列表来实现全局。它不需要更改模块。

详情请查看 Define Global Modules 部分。