IDEA使用Maven創(chuàng)建父與子多模塊項目的圖文教程
引言
在 IntelliJ IDEA 中使用 Maven 創(chuàng)建父與子多模塊項目是一個常見的開發(fā)實踐,有助于更好地組織和管理代碼。在多模塊項目中,可以將公共的代碼、資源或配置抽離到獨立的模塊中,然后在其他模塊中直接引用。這樣可以避免代碼重復(fù),提高代碼的重用性。
父模塊可以統(tǒng)一管理依賴的版本和配置,子模塊則繼承這些配置。這樣不僅簡化了依賴管理,還確保了項目中所有模塊使用的依賴版本一致,減少了因版本不一致導(dǎo)致的沖突和錯誤。多模塊項目允許將項目按照功能或業(yè)務(wù)進(jìn)行分割,每個模塊都有自己的職責(zé)和功能。這使得項目結(jié)構(gòu)更加清晰易懂,方便開發(fā)者進(jìn)行模塊化管理。
1、創(chuàng)建父工程
(1)使用 IDEA 新建父工程。
(2)刪除父工程下多余的文件和文件夾。
2、創(chuàng)建子模塊
(1)右鍵父工程,選擇“新建”,然后選擇“新模塊”。
(2)創(chuàng)建子模塊。
分別創(chuàng)建3個子模塊:
com-pjb-proudct:商品模塊。
com-pjb-order:訂單模塊。
com-pjb-member:會員模塊。
注意:子模塊的組名(包名)必須與父工程的一致。
(3)繼續(xù)創(chuàng)建其余的子模塊
3、父工程的 Maven 配置
(1)設(shè)置父工程的包為 pom(必須)。
<!-- 設(shè)置父工程的包為 pom --> <packaging>pom</packaging>
(2)關(guān)聯(lián)子模塊。
<!-- 關(guān)聯(lián)子模塊--> <modules> <module>com-pjb-proudct</module> <module>com-pjb-order</module> <module>com-pjb-member</module> </modules>
(3)設(shè)置 <dependencyManagement> 節(jié)點。
Maven 中的 <dependencyManagement>節(jié)點,用于父工程POM中定義依賴的版本和配置,而不實際引入這些依賴。它提供了一種集中管理和控制項目中所有模塊或子項目所使用的依賴項版本的方式。
通過 <dependencyManagement> 節(jié)點,可以在父POM中統(tǒng)一聲明依賴項的版本,子模塊在引用這些依賴時無需再顯式指定版本號,從而確保所有子模塊使用的都是同一版本的依賴。
在父 POM 的 <dependencyManagement> 部分,使用 <dependencies> 元素包裹一系列的 <dependency> 元素,每個 <dependency> 元素指定一個依賴項的 groupId、artifactId 和 version。
<properties> <spring.boot.version>2.4.2</spring.boot.version> <lombok.version>1.18.28</lombok.version> </properties> <!-- <dependencyManagement>節(jié)點:用于父工程POM中定義依賴的版本和配置,而不實際引入這些依賴--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring.boot.version}</version> </dependency> <!-- Lombok 依賴 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> </dependencies> </dependencyManagement>
(4)完整的父工程 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- SpringBoot 的依賴--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.2</version> <relativePath/> </parent> <groupId>com.pjb</groupId> <artifactId>MultiModule</artifactId> <version>1.0.0</version> <name>MultiModule</name> <description>MultiModule</description> <!-- 設(shè)置父工程的包為 pom --> <packaging>pom</packaging> <!-- 關(guān)聯(lián)子模塊--> <modules> <module>com-pjb-proudct</module> <module>com-pjb-order</module> <module>com-pjb-member</module> </modules> <properties> <spring.boot.version>2.4.2</spring.boot.version> <lombok.version>1.18.28</lombok.version> </properties> <!-- <dependencyManagement>節(jié)點:用于父工程POM中定義依賴的版本和配置,而不實際引入這些依賴--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring.boot.version}</version> </dependency> <!-- Lombok 依賴 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
4、子模塊的 Maven 配置
(1)<parent> 節(jié)點引用父工程的依賴。
<!-- 步驟1:不再直接使用SpringBoot依賴,而是引用父工程的依賴--> <parent> <groupId>com.pjb</groupId> <artifactId>MultiModule</artifactId> <version>1.0.0</version> </parent>
(2)設(shè)置子模塊的包為 jar(必須)。
<!-- 步驟2:設(shè)置子模塊的包為 jar --> <packaging>jar</packaging>
(3)完整的子模塊 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 步驟1:不再直接使用SpringBoot依賴,而是引用父工程的依賴--> <parent> <groupId>com.pjb</groupId> <artifactId>MultiModule</artifactId> <version>1.0.0</version> <relativePath>../pom.xml</relativePath> </parent> <!-- 步驟2:設(shè)置子模塊的包為 jar--> <packaging>jar</packaging> <!-- 注意:groupId 必須與父工程一致 --> <groupId>com.pjb</groupId> <artifactId>Proudct</artifactId> <version>1.0.0</version> <name>com-pjb-proudct</name> <description>com-pjb-proudct</description> <!-- 子模塊在引用這些依賴時無需再顯式指定版本號,從而確保所有子模塊使用的都是父工程同一版本的依賴 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Lombok 依賴 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!-- 注意:必須加上如下配置,否則打包會報錯 --> <configuration> <classifier>exec</classifier> </configuration> </plugin> </plugins> </build> </project>
5、啟動服務(wù)
啟動子模塊,測試運行結(jié)果。
啟動成功。
以上就是IDEA使用Maven創(chuàng)建父與子多模塊項目的圖文教程的詳細(xì)內(nèi)容,更多關(guān)于IDEA Maven創(chuàng)建父與子項目的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring MVC使用jstl 標(biāo)簽c:forEach 遍歷輸出雙層嵌套List的數(shù)據(jù)方式
這篇文章主要介紹了Spring MVC使用jstl 標(biāo)簽c:forEach 遍歷輸出雙層嵌套List的數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08盤點SpringBoot中@Async注解的遇到的坑點及解決辦法
SpringBoot是一個流行的Java開發(fā)框架,在異步編程方面,Spring Boot提供了@Async注解,它能夠讓方法異步執(zhí)行,然而,在使用@Async注解時,有一些潛在的坑需要注意,本文將深入探討Spring Boot中使用@Async注解時可能遇到的8大坑點,并提供相應(yīng)的解決方案2024-03-03老生常談Java中instanceof關(guān)鍵字的理解
java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。這篇文章主要介紹了老生常談Java中instanceof關(guān)鍵字的理解,需要的朋友可以參考下2018-10-10eclipse/intellij idea 查看java源碼和注釋方法
下面小編就為大家?guī)硪黄猠clipse/intellij idea 查看java源碼和注釋方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05SparkSQL中的JSON內(nèi)置函數(shù)全解析
你是否曾經(jīng)為處理JSON數(shù)據(jù)而頭疼?SparkSQL為我們提供了強(qiáng)大的內(nèi)置JSON函數(shù),讓JSON處理變得輕而易舉,本文將帶你深入了解這些函數(shù),感興趣的朋友一起看看吧2024-08-08Java實現(xiàn)PDF轉(zhuǎn)Word的示例代碼(無水印無頁數(shù)限制)
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)PDF轉(zhuǎn)Word文件的效果,并可以無水印、無頁數(shù)限制。文中的示例代碼講解詳細(xì),需要的可以參考一下2022-05-05Struts2 文件上傳進(jìn)度條的實現(xiàn)實例代碼
本篇文章主要介紹了Struts2 文件上傳進(jìn)度條的實現(xiàn)實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05