文前说明

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。

分析整理的版本为 Ovirt 3.4.5 版本。

项目的 pom 文件中,使用 <artifactId>jboss-modules-maven-plugin</artifactId> 插件,引入 JBoss 模块化管理,这是 JBoss 支持的静态加载配置方式的一种,采用模块化管理的项目有:dependencies、tools、compat、common、utils、dal、authentication

  1. utils 项目为例,modules 配置文件存放位置:
    /backend/manager/modules/utils/src/main/modules/org/ovirt/engine/core/utils/main/module.xml,配置信息如下:
<module xmlns="urn:jboss:module:1.1" name="org.ovirt.engine.core.utils"> <resources><resource-root path="utils.jar"/> </resources><dependencies> <module name="javax.api"/> <module name="javax.servlet.api"/><module name="org.apache.commons.fileupload"/> </dependencies>
</module>
  • <module xmlns="urn:jboss:module:1.1" name="org.ovirt.engine.core.utils">
    name 定义了模块名称。
  • <resource-root path="utils.jar"/>,定义了模块生成的 jar 包名称。

注意:如果是第三方依赖,该名称必须与 maven 的 artifactId 一致。

  • <dependencies> 定义了模块的依赖关系,通过 <module name="javax.api"/> 设置依赖的模块名称。

注意:JBoss modules 是一个适用于 Java 的模块化(非层次化)类加载以及执行环境的实现。因此如果一个模块需要另一个模块的某些功能,必须进行依赖,这个依赖是不能传递的,例如 A 依赖于 B,B 依赖于 C,如果 A 使用了 C 的功能,那么 A 必须依赖 C。

  1. Jboss 本身具有了很多的模块,可以直接进行依赖。文件位置:安装目录 /modules 中。例如 javax.api、javax.servlet.api 都是 Jboss 自带的模块。

  2. 配置了模块,还需要把模块与 maven 管理的 jar 包配置建立关联关系。这部分工作 dependencies 项目进行了配置。engine 中只要是采用模块化管理的项目中引入了第三方包,都需要在 dependencies 项目中进行关联性配置。

  • dependenciespom 文件,配置了<dependency>,这里定义了 mavenjar 包管理。
  • <artifactId>jboss-modules-maven-plugin</artifactId><modules> 标签中,配置了模块的关联关系,例如:
<module> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId>  <moduleName>org.apache.commons.fileupload</moduleName>
</module>

mavencommons-fileupload 包与模块 org.apache.commons.fileupload 进行关联。

  1. utils 为例,依赖其他模块。
  • 依赖 Jboss 自身包含的模块,那么只需要在 modules 文件中配置即可。
<dependencies> <module name="javax.api"/> <module name="javax.servlet.api"/>
</dependencies>
  • 依赖的第三方包,是 Jboss 自身不包含的,那么需要在
    /backend/manager/dependencies/src/main/modules 文件夹下面,按模块名称建立目录。例如 org.apache.commons.fileupload 就需要创建 org/apache/commons/fileupload/main/ 目录,在该目录下创建 module.xml 配置文件,配置为新的模块:
<module xmlns="urn:jboss:module:1.1" name="org.apache.commons.fileupload"><resources> <resource-root path="commons-fileupload.jar"/> </resources> <dependencies> <module name="javax.servlet.api"/> <module name="org.apache.commons.io"/> </dependencies>
</module>

再引入该模块:

<dependencies> <module name="javax.api"/> <module name="javax.servlet.api"/> <module name="org.apache.commons.fileupload"/>
</dependencies>

最理想的配置是,所有的模块都能找到依赖关系,最底层的依赖是 Jboss 自身包含的依赖。但是实际情况可能会复杂很多,模块与模块的依赖关系,可以通过查询 maven中央库 了解。

  • 如果模块单独使用的可能性不大,每次都需要联合其他模块一起使用实现某个功能,那么可以将这些模块统一配置为一个模块,简化配置。例如:
<module xmlns="urn:jboss:module:1.1" name="org.springframework"> <resources> <resource-root path="spring-aop.jar"/><resource-root path="spring-asm.jar"/><resource-root path="spring-beans.jar"/> <resource-root path="spring-context.jar"/> <resource-root path="spring-core.jar"/> <resource-root path="spring-expression.jar"/> <resource-root path="spring-instrument.jar"/> <resource-root path="spring-jdbc.jar"/> <resource-root path="spring-ldap-core.jar"/> <resource-root path="spring-tx.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="org.apache.commons.lang"/> <module name="org.apache.commons.logging"/> <module name="org.aopalliance"/> <module name="sun.jdk"/> </dependencies>
</module>

将 spring 所需 jar 包统一划分为一个模块,使用到 spring 的地方,统一引入该模块即可。

作者:羽杰
链接:https://www.jianshu.com/p/c4e570176311
來源:简书

【Ovirt 笔记】JBoss modules 配置分析与整理相关推荐

  1. 使用JBoss Modules来模块化Java

    本文的英文原文Modularized Java with JBoss Modules是JBoss Modules的作者David写的,由HollisChuang翻译在使用JBoss Modules来模 ...

  2. vue-cli webpack配置分析 - chenBright - SegmentFault 思否

    相信vue使用者对vue-cli都不会陌生,甚至可以说,很熟悉了,但对其webpack的配置可能知之甚少吧. 过完年回来后,我接手了公司的新项目.新项目是一个spa.很自然,我就想到了vue-cli脚 ...

  3. Redhat(Linux)上的JBoss管理配置

    Redhat(Linux)上的JBoss管理配置 1  JBoss设置 使用的省略词含义 命令                         操作的含义 JBOSS_HOME        JBos ...

  4. 读书笔记 摘自:《Google工作整理术》

    读书笔记 摘自:<Google工作整理术>(作者: [美]道格拉斯·梅里尔 [美]詹姆斯·马丁) 前言 通过研究我发现,人们教授数学以及其他学科的方式与我们大脑的实际运行机制相去甚远. 事 ...

  5. Hyperledger Fabric笔记3--BYFN启动流程分析

    Hyperledger Fabric笔记3--BYFN启动流程分析 BYFN--构建你的第一个网络,该方案提供了一个示例Hyperledger Fabric网络,该网络由两个组织组成,每个组织都维护两 ...

  6. 数据分析学习总结笔记17:文本分析入门案例实战

    文章目录 1 数据准备 2 分词 3 统计词频 4 词云 5 提取特征 6 用sklearn进行训练 1 数据准备 数据样例如下, 数据总量为7.7万+: 本节通过一个实战的例子来展示文本分析的最简单 ...

  7. go-pitaya学习笔记(7)-custom_metrics demo分析

    学习笔记: 我家别墅靠大海/pitaya-learn 尝试集成功能:我家别墅靠大海/pitaya-game 如果你正在看此笔记,请你左边放笔记,右边放chatdemo的代码!! 我是按代码的顺序记的笔 ...

  8. motan学习笔记 三 motan Demo 分析

    motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...

  9. 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ⑤ ( tasks.json 中的 args 数组配置分析 | 编译并执行 C++ 程序 )

    文章目录 一.tasks.json 中的 args 数组配置分析 二.编译并执行 C++ 程序 可以参考官方提供的文档 : https://code.visualstudio.com/docs/cpp ...

最新文章

  1. Python OpenCV——函数 cv2.findContours 运行错误【in function ‘cv::pointSetBoundingRect‘】解决方案
  2. Windows下Maven的安装与配置
  3. qt.pro转成vs程序
  4. 计算机应用与基础进制,计算机应用基础选择题-删进制、字符题(2).docx
  5. 吸猫就吸Tomcat之Pipeline-Valve巧妙设计
  6. 【Zookeeper系列】Zookeeper命令操作(转)
  7. Webx3 学习笔记
  8. sklearn 1.0.1官方文档教程
  9. cityscape train.txt 数据 python读取子文件夹内所有文件
  10. 懒羊羊的作业:看过国产动画片的同学都知道,懒羊羊是一只非常懒的羊,整天除了吃就是睡,根本没有时间做作业。明天就是周一了,村长慢羊羊留的作业:把 n 个整数从大到小排序,它还没开始写...
  11. shiro中anon配置不生效
  12. 一个屌丝程序员的青春(四二)
  13. 北邮数电期末复习——第三章
  14. java List取随机几个数据的方法实现
  15. git clone 使用代理加速
  16. phpstudy+opencart搭建商城网站基本环境
  17. Python解决线性规划问题
  18. Java 结构化数据处理开源库 SPL使用手册
  19. TRC丨艾美捷TRC a,a-二甲基-4-说明书
  20. 为什么我的小程序审核不通过?常见原因及解决方法

热门文章

  1. weblogic查看内存情况
  2. nginx 学习笔记(2) nginx新手入门
  3. redis java对象操作
  4. 如何在dreamwaver中连接数据库
  5. 把自己当成打工的,一辈子都是打工的!:周鸿祎
  6. 疫情下的硅谷区块链创业者
  7. 像疯狗一般,你就具备了向上的资格
  8. 几周内搞定Java的10个方法
  9. RocketMQ-初体验RocketMQ(10)-过滤消息_SQL92表达式筛选消息
  10. HTML内嵌式CSS背景图填充满无截断重复