簡介
Maven多模塊項(xiàng)目,適用于一些比較大的項(xiàng)目,通過合理的模塊拆分哭懈,實(shí)現(xiàn)代碼的復(fù)用灾馒,便于維護(hù)和管理。尤其是一些開源框架遣总,也是采用多模塊的方式睬罗,提供插件集成,用戶可以根據(jù)需要配置指定的模塊旭斥。
簡單多模塊搭建
多模塊項(xiàng)目說簡單點(diǎn)可以理解為項(xiàng)目間的繼承容达。首先搭建一個(gè)簡單的多模塊項(xiàng)目結(jié)構(gòu),我用的idea創(chuàng)建項(xiàng)目垂券。既然是繼承我們先創(chuàng)建整個(gè)項(xiàng)目結(jié)構(gòu)的父項(xiàng)目花盐,創(chuàng)建的過程注意一點(diǎn),因?yàn)槭褂玫氖莍dea所以父項(xiàng)目創(chuàng)建為project菇爪。因?yàn)槭歉疙?xiàng)目所以src等文件夾都可以刪掉了 看起來項(xiàng)目更干凈一些算芯,我們只需要父項(xiàng)目的pom文件來進(jìn)行依賴配置。父項(xiàng)目pom文件如下:
<groupId>com.xs.personal</groupId>
<artifactId>loginServer</artifactId>
<packaging>pom</packaging>
<version>1.0.1</version>
<name>loginServer</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.2.5.RELEASE</spring.version>
<login.version>1.0.1</login.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${spring.version}</version>
</dependency>
.......................
</dependencies>
</dependencyManagement>
注意父項(xiàng)目的打包方式配置成pom方式凳宙。maven打包方式配置為pom打包就是什么都不會(huì)生成熙揍。
dependencyManagement 配置用來配置聲明子項(xiàng)目可能用到的依賴 如果子項(xiàng)目用到了某個(gè)依賴可以不需要配置版本號(hào) 而使用父項(xiàng)目聲明好的 方便各個(gè)子項(xiàng)目的依賴管理。當(dāng)然如果子項(xiàng)目配置了版本號(hào)則會(huì)使用子項(xiàng)目配置的版本號(hào)氏涩。
父項(xiàng)目創(chuàng)建好了 届囚,接下來創(chuàng)建子項(xiàng)目。在剛剛建立的父項(xiàng)目上創(chuàng)建module是尖。我創(chuàng)建了三個(gè)module意系,創(chuàng)建完后如下:
創(chuàng)建完會(huì)發(fā)現(xiàn)父項(xiàng)目的pom文件中多出了部分配置
<modules>
<module>loginServer-web</module>
<module>loginServer-api</module>
<module>loginServer-mapper</module>
<module>loginServer-service</module>
</modules>
這樣簡單的父子項(xiàng)目結(jié)構(gòu)就建好了,但是只有結(jié)構(gòu)是不夠的饺汹,各個(gè)項(xiàng)目間還需要建立依賴互相調(diào)用蛔添。首先在父項(xiàng)目pom文件中加入這些依賴
<dependencyManagement>
<dependencies>
<!--子項(xiàng)目依賴-->
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-web</artifactId>
<version>${login.version}</version>
</dependency>
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-api</artifactId>
<version>${login.version}</version>
</dependency>
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-service</artifactId>
<version>${login.version}</version>
</dependency>
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-mapper</artifactId>
<version>${login.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
在子項(xiàng)目的依賴只需要使用父項(xiàng)目聲明的依賴就可以了,比如web子項(xiàng)目需要依賴service子項(xiàng)目只需要在web子項(xiàng)目的pom文件加入如下依賴就可以了:
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-service</artifactId>
</dependency>
這樣整個(gè)簡單多模塊項(xiàng)目結(jié)構(gòu)就搭建和依賴好了首繁。
實(shí)際項(xiàng)目完整版多模塊項(xiàng)目結(jié)構(gòu)依賴
在實(shí)際項(xiàng)目中作郭,只是簡單的多項(xiàng)目依賴并不能滿足工作需要弦疮,比如我上面建立的登錄模塊現(xiàn)在用dubbo做分布式服務(wù),我要新建立一個(gè)提供登錄服務(wù)的項(xiàng)目胁塞⊙褂铮可能還需要兩個(gè)項(xiàng)目不在一臺(tái)服務(wù)器。實(shí)際項(xiàng)目中這樣不同的項(xiàng)目可能會(huì)有10幾個(gè)编检。辦法當(dāng)然是有的胎食。
創(chuàng)建多個(gè)簡單多模塊結(jié)構(gòu)每個(gè)結(jié)構(gòu)中的父項(xiàng)目可能是登錄模塊項(xiàng)目,登錄服務(wù)項(xiàng)目等等允懂。接下來我們再單獨(dú)創(chuàng)建一個(gè)父項(xiàng)目作為所有結(jié)構(gòu)中的爺爺項(xiàng)目,這樣每組子項(xiàng)目依賴父項(xiàng)目粥航,所有父項(xiàng)目依賴爺爺項(xiàng)目,這樣不同的模塊就依賴起來了生百。
但是跨服務(wù)器的問題怎么解決呢递雀。創(chuàng)建完?duì)敔旐?xiàng)目后我們install這個(gè)爺爺項(xiàng)目,就像下圖一樣:
然后到我們的maven本地倉庫中就可以找到爺爺項(xiàng)目依賴包了蚀浆,文件目錄是groupId+artifactId+版本號(hào)然后我們可以看到下圖的文件:
這就是最關(guān)鍵的文件了 接下來把這個(gè)文件傳到maven服務(wù)器上,各個(gè)父項(xiàng)目只需要在pom中j加入下面的配置就可以像依賴jar包一樣依賴這個(gè)爺爺項(xiàng)目了市俊,這樣整個(gè)完整的多項(xiàng)目模塊就創(chuàng)建依賴好了。
<parent>
<artifactId>loginServer</artifactId>
<groupId>com.xs.personal</groupId>
<version>1.0.1</version>
</parent>
轉(zhuǎn)載自:https://blog.csdn.net/xs925048899/article/details/79748707