5.2. JBoss EAP 中的模块依赖项
模块依赖项是一个声明,一个模块需要一个或多个模块类才能正常工作。当 JBoss EAP 加载模块时,模块类加载程序会解析该模块的依赖项,并将各个依赖项中的类添加到其类路径中。如果无法找到指定的依赖项,该模块将无法加载。
部署的应用程序(如 Java 存档(JAR)或 Web Archive (WAR))作为动态模块加载,并使用依赖项访问 JBoss EAP 提供的 API。
有两种类型的依赖项: 显式、和 隐式。
- 显式依赖项
-
开发人员在配置文件中声明显式依赖项。静态模块可以在其
module.xml文件中声明依赖项。动态模块可以在部署的MANIFEST.MF中声明依赖项,或者jboss-deployment-structure.xml部署描述符。 - 隐式依赖项
- 当部署中的特定条件或元数据时,JBoss EAP 会自动添加隐式依赖项。JBoss EAP 提供的 Jakarta EE API 是通过在部署过程中检测隐式依赖项添加的模块示例。
部署也可以配置为使用 jboss-deployment-structure.xml 部署描述符文件来排除特定的隐式依赖项。当应用程序捆绑了 JBoss EAP 将尝试添加为隐式依赖项的库的特定版本时,这非常有用。
可选依赖项
显式依赖项可以指定为可选。加载可选依赖项失败将导致模块无法加载。但是,如果依赖项在以后变为可用,则不会将其添加到模块的类路径中。加载模块时,依赖项必须可用。
导出的依赖项
模块的类路径仅包含自己的类及其直接依赖项。模块无法访问依赖项的类。但是,模块可以指定导出有显式依赖项。导出的依赖项会提供给依赖于导出该模块的任何模块。
例如,模块 A 依赖于模块 B,模块 B 依赖于模块 C。模块 A 可以访问 Module B 的类,模块 B 可以访问 Module C 的类,除非:
- 模块 A 声明对 Module C 的明确依赖关系,或者
- 模块 B 将其对模块 C 的依赖导出。
全局模块
全局模块是 JBoss EAP 作为每个应用的依赖项提供的模块。任何模块都可以通过添加到 JBoss EAP 的全局模块列表来实现全局设置。它不需要更改该模块。
如需更多信息,请参阅 JBoss EAP 中的全局模块。