maven 项目之间的关系
-
问题:
-
一:项目 B 只需要引用项目 A 的部分功能,全部引入的话效率不高
-
二:不同项目之间使用相同的资源坐标,造成资源修改麻烦
-
-
解决
- 一:把一个 maven 项目拆分成 n 个 maven 项目,本来是把所有的功能都放在一个 maven 项目中,现在每个 maven 项目实现一个 小功能。这样在物理视图中,一个项目的功能代码被拆分到 n 个项目中完成,逻辑上还是一个项目。maven 打包时会打成 n 个包,根据需求调用就行了
- 二:把不同项目使用的相同的资源坐标放到一个配置文件中
-
实现 — 依赖关系、继承关系、聚合关系
依赖关系
-
项目 A 和项目 B 在同一个工作空间(同一个目录)中,项目 B 可以调用项目 A 的 全部资源(代码和引入的 jar 包),无需将项目 A 打包放到本地仓库中。但 如果项目需要在服务器(例:tomcat)上运行,就需要打包了
-
打包要根据依赖关系的顺序依次打包,A —> B —> C,打包顺序:C ,B,A
-
项目 A 和 项目 B 是两个独立的项目,项目 B 需要依赖项目 A 才能完成功能,它们各自实现一个功能
-
使用
项目 A 的 pom.xml
<groupId>com.kuang</groupId> <artifactId>kuang</artifactId> <version>1.0-SNAPSHOT</version>
项目 B 的 pom.xml
<dependencies> <dependency> <groupId>com.kuang</groupId> <artifactId>kuang</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
继承关系
-
maven 项目中的继承关系指的是第三方资源的继承,例如项目 B 继承项目 A ,则项目 A 中有项目 B 的所有 第三方资源
-
继承关系中的项目是互相独立的
-
子项目中使用 parent 标签
<parent> <groupId>com.kuang</groupId> <artifactId>kuang</artifactId> <version>1.0-SNAPSHOT</version> </parent>
-
把父项目改为 pom 类型
<packaging>pom</packaging>
聚合关系
-
将一个项目拆分成多个子项目来完成功能
-
多个子项目共同完成一个功能
-
使用流程
-
创建一个 maven 父项目,类型为 pom
-
在父项目下创建子项目,根据 MVC 框架,分别创建 pojo、mapper、service、controller 四个子项目,前三个类型为 jar 类型,controller 为 war 类型
<modules> <module>01_pojo</module> <module>02_mapper</module> <module>03_service</module> <module>04_controller</module> </modules>
-
由于每个项目使用的第三方资源不一样,如果直接继承父项目的资源,会影响项目效率。所以,使用 dependencyManagement 标签,被此标签管理的资源,不会直接被子项目继承,需要子项目单独地声明从父项目中继承地资源。子项目在引用资源的时候不需要声明资源的 version
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring-webmvc}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api.verison}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector.version}</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>${mybatis-plus.version}</version> </dependency> </dependencies> </dependencyManagement>
<dependencies> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> </dependency> </dependencies>
-
运行 web 项目的时候,要先在父项目中 install ,然后在有 tomcat 插件的子项目中运行
-