业务背景
-
实际开发中一个大的项目由若干子模块(子项目)组成,各模块之间存在相互依赖,各模块又可能依赖其他第三方模块
- 为了便于项目开发和管理,适应分布式开发框架,多模块管理显得尤为重要
-
业务背景图示
maven多模块管理:方式1
创建父工程
-
如何实现多模块管理:顶级工程管理子级工程(也即:父工程管理子工程)
- pom是项目对象模型,该文件可以被子项目继承
- maven多模块管理,其实就是让子项目的pom文件继承父工程的pom文件
- pom是项目对象模型,该文件可以被子项目继承
-
maven父工程必须遵循以下两点要求
- packaging标签的文本内容必须设置为pom
- 把src目录删掉
- 父工程里其实不写代码(负责管理)
-
父工程pom文件图示:
创建java子工程
-
创建一个新的maven模块
- 选择maven的java框架
- 创建时选定parent
-
< groupId >和< version > 与父模块一致
-
子项目的pom文件继承自父项目的pom文件
-
子项目的pom文件图示:
创建web子工程
- 创建一个新的maven模块
- 选择maven的web框架
- 创建时选定parent
- 操作步骤几乎和创建maven的java项目一样
子工程上升为父工程
- 只要遵循成为父项目的2点要求,就可以作为其他项目的父项目
- packaging标签的文本内容必须设置为pom
- 把src目录删掉
- 一般开发中,设置两级,即:父模块 ----> 管理 ----> 子模块,不设置较多的层级
maven项目设置为子模块
- 完成认领操作
- 在待设置为子项目的maven项目的pom文件中,添加parent标签
- 指明父项目的坐标 + 父项目pom文件的相对路径
- 在待设置为子项目的maven项目的pom文件中,添加parent标签
maven父工程与依赖
父工程添加依赖
- 父工程添加需要的依赖
- 各个子工程不需要再添加依赖,无条件继承父工程里的依赖
- 不足:子项目中出现依赖冗余
父工程管理依赖
-
为了避免依赖冗余,父工程需要加强对依赖的管理
-
依赖管理示例
<!-- 加强对依赖的管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement>
-
-
子项目在pom文件中申请父项目pom文件中的依赖
-
依赖版本号继承自父工程,由父工程限制
- 若子工程声明了自己依赖的版本号,就近原则
-
声明示例
<!-- 声明需要的依赖 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies>
-
-
可以发现父工程最后管理的核心就是依赖的版本号
-
可以将需要管理的版本号单独拿出来管理
- 通过定义maven全局变量的形式来管理
-
自定义格式的要求:依赖的项目名称.version
-
配置示例
<!-- 属性配置 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!-- 依赖版本控制 --> <junit.version>4.13.2</junit.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement>
-
maven多模块管理:方式2
创建父工程
- 直接创建一个maven的新项目
- 按照maven父工程的要求,修改pom文件和项目结构
创建java子工程
- 将新的maven子工程,添加到目标父工程里面
- 选择java框架
- 此时jave子项目在父项目目录下
创建web子工程
- 将新的maven子工程,添加到父工程里面
- 选则web框架
- 和创建java子项目的操作几乎相同
子工程上升为父工程
- 遵循maven父工程的2点要求即可
- 查询子模块和实际在< modules >标签里显示的子模块的区别
- 查询时:查询所有后代
- 标签里:只显示子模块(隔代的不显示)
maven父工程与依赖(与方式1操作方式相同)
父工程添加依赖
父工程管理依赖
maven多模块管理:方式3
- 方式1和方式2的混合
相关文章
暂无评论...