一偿凭、Maven項(xiàng)目的繼承
- 繼承一般出現(xiàn)在類與類之間的關(guān)系中婶熬,但是在項(xiàng)目中也存在著這樣的繼承關(guān)系。我們知道在創(chuàng)建一個maven項(xiàng)目的時候量窘,需要給項(xiàng)目配置需要的依賴雇寇,maven的繼承主要是為了統(tǒng)一依賴的版本。
- 在父項(xiàng)目 pom.xml 中需要統(tǒng)一的依賴用 <dependencyManagement> 標(biāo)簽蚌铜。
- 父項(xiàng)目 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> <!--指定當(dāng)前項(xiàng)目為父項(xiàng)目--> <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>
- 繼承的子項(xiàng)目中的pom.xml文件需要添加的依賴需要與母項(xiàng)目中<dependencyManagement>的依賴對應(yīng),可以不用寫依賴的版本冬殃,子項(xiàng)目也可以選擇需要的版本囚痴,這樣的操作類似于繼承里的重寫。
- 子項(xiàng)目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"> <!--指定父項(xiàng)目--> <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項(xiàng)目的聚合
聚合在java 中是在A對象功能完整需要另外B對象來實(shí)現(xiàn)渡讼,所以A類中有著B類對象的引用,但是A對象的生命周期結(jié)束耳璧,B對象依然可以存在成箫,簡而言之就兩個對象的生命周期不同。當(dāng)然在maven中旨枯,聚合又是為了解決另外一個問題而存在的一種機(jī)制蹬昌。通常我們的項(xiàng)目都是都模塊的,而每個模塊又是一個 maven項(xiàng)目攀隔,所以每次開發(fā)完了編譯都需要一個一個模塊的去執(zhí)行皂贩,這就違背了maven的自動化理念栖榨。
Maven聚合實(shí)現(xiàn)SSM:將之前項(xiàng)目中的每個部分進(jìn)行模塊化處理,分成獨(dú)立的子項(xiàng)目,子項(xiàng)目之間又會存在著引用的關(guān)系.
項(xiàng)目的內(nèi)容與之前相比,沒有什么的新的內(nèi)容明刷,主要是將Pojo婴栽、Dao、Service辈末、Web劃分成各個子項(xiàng)目愚争,在母項(xiàng)目中創(chuàng)建子項(xiàng)目,子項(xiàng)目中存在著一寫引用關(guān)系挤聘,需要在<dependency>標(biāo)簽中添加依賴轰枝。Dao依賴Pojo與數(shù)據(jù)庫交互,Service依賴Dao進(jìn)行數(shù)據(jù)傳輸组去,Web依賴Service進(jìn)行數(shù)據(jù)處理鞍陨。