一、Maven项目的继承
- 继承一般出现在类与类之间的关系中,但是在项目中也存在着这样的继承关系。我们知道在创建一个maven项目的时候,需要给项目配置需要的依赖,maven的继承主要是为了统一依赖的版本。
- 在父项目 pom.xml 中需要统一的依赖用 <dependencyManagement> 标签。
- 父项目 pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>nz.study</groupId> <artifactId>Days42MavenParent</artifactId> <!--指定当前项目为父项目--> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>MavenSon01</module> <module>MavenSon02</module> <module>MavenSon03</module> <module>MavenSon04Parent</module> </modules> <dependencyManagement> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
- 继承的子项目中的pom.xml文件需要添加的依赖需要与母项目中<dependencyManagement>的依赖对应,可以不用写依赖的版本,子项目也可以选择需要的版本,这样的操作类似于继承里的重写。
- 子项目pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--指定父项目--> <parent> <artifactId>Days42MavenParent</artifactId> <groupId>nz.study</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>MavenSon01</artifactId> <!--引入需要的依赖--> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> </project>
二、Maven项目的聚合
聚合在java 中是在A对象功能完整需要另外B对象来实现,所以A类中有着B类对象的引用,但是A对象的生命周期结束,B对象依然可以存在,简而言之就两个对象的生命周期不同。当然在maven中,聚合又是为了解决另外一个问题而存在的一种机制。通常我们的项目都是都模块的,而每个模块又是一个 maven项目,所以每次开发完了编译都需要一个一个模块的去执行,这就违背了maven的自动化理念。
Maven聚合实现SSM:将之前项目中的每个部分进行模块化处理,分成独立的子项目,子项目之间又会存在着引用的关系.
项目的内容与之前相比,没有什么的新的内容,主要是将Pojo、Dao、Service、Web划分成各个子项目,在母项目中创建子项目,子项目中存在着一写引用关系,需要在<dependency>标签中添加依赖。Dao依赖Pojo与数据库交互,Service依赖Dao进行数据传输,Web依赖Service进行数据处理。