基于maven使用IDEA創(chuàng)建多模塊項(xiàng)目
鑒于最近學(xué)習(xí)一個(gè)分布式項(xiàng)目的開發(fā),講一下關(guān)于使用IntelliJ IDEA基于Maven創(chuàng)建多模塊項(xiàng)目的實(shí)際開發(fā),可能有不合適的地方,但是項(xiàng)目是可以跑通的,也請(qǐng)有不足之處,都提出來(lái),一起討論下。
一. 項(xiàng)目工程目錄
首先展示一下,最終整個(gè)項(xiàng)目的工程目錄:

簡(jiǎn)單介紹一下目錄結(jié)構(gòu):
common-parent為所有項(xiàng)目的父項(xiàng)目,主要用來(lái)管理所有項(xiàng)目使用的jar包及其版本。
common-utils為公共的工具類項(xiàng)目,繼承父項(xiàng)目,它會(huì)被打成jar包供其它項(xiàng)目使用。
taotao-manager為我們自己的項(xiàng)目,繼承與我們的父項(xiàng)目。
taotao-manager-pojo為我們自己項(xiàng)目的一個(gè)子模塊,依賴與taotao-manager,打成jar包
taotao-manager-mapper為我們自己項(xiàng)目的一個(gè)子模塊,依賴與taotao-manager-pojo,打成jar包
taotao-manager-service為我們自己項(xiàng)目的一個(gè)子模塊,依賴與taotao-manager-mapper,打成jar包
taotao-manager-web為我們自己項(xiàng)目的一個(gè)子模塊,依賴與taotao-manager-service,打成war包
二. 創(chuàng)建父工程
下面為具體操作:
1. 首先打開IntelliJ IDEA,按下面步驟來(lái):
或者第一次打開IDEA,
2. 來(lái)到創(chuàng)建目錄,選擇Empty project,next
3. 來(lái)到New Project頁(yè)面,填寫project name,選擇Project location,點(diǎn)Finish
等待IDEA加載完成,進(jìn)行下一步
4. 選擇File–>New–>Module,進(jìn)入New Module頁(yè)面:
5. 在New Module頁(yè)面,按如下步驟操作:
6. 填寫組織名稱和項(xiàng)目名稱,以及版本號(hào)
7. 配置本地maven目錄及maven倉(cāng)庫(kù)配置文件
8. 創(chuàng)建父工程最后一步,給Module取名,及選擇工作目錄,選擇完成

等待生成pom文件,注意修改打包方式為pom,修改pom文件如下:(由于pom文件較長(zhǎng),只給出部分,獲取所有,請(qǐng)關(guān)注github)
<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>cn.william</groupId>
<artifactId>common-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging><!--修改打包方式-->
<name>common-parent</name>
<url>http://maven.apache.org</url>
<!--集中定義依賴版本號(hào)-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.12</junit.version>
...(省略)
</properties>
<dependencyManagement>
<dependencies>
<!-- 時(shí)間操作組件 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda-time.version}</version>
</dependency>
...(省略)
</dependencyManagement>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 資源文件拷貝插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- java編譯插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
三. 創(chuàng)建公共工具類
首先,公共工具類是繼承自父項(xiàng)目common-parent的。
需要注意的一點(diǎn)是一點(diǎn),為了項(xiàng)目看起來(lái)為分模塊的形式(類似在eclipse中開發(fā)),在創(chuàng)建common-utils中有一步需要注意:
下一步特別注意,這一步會(huì)影響目錄結(jié)構(gòu),

同樣注意項(xiàng)目的打包方式為jar,和父項(xiàng)目有所不同。
<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>common-parent</artifactId>
<groupId>cn.william</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../common-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>common-utils</artifactId>
<packaging>jar</packaging><!-- 打成jar包 -->
<name>common-utils</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- jar包的依賴 -->
<dependencies>
<!-- 時(shí)間操作組件 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
...(省略)
</dependencies>
</project>
三. 創(chuàng)建開發(fā)項(xiàng)目
創(chuàng)建開發(fā)項(xiàng)目taotao-manager,其創(chuàng)建步驟同上,同樣是繼承common-parent,同樣修改其pom文件,詳細(xì)如下:
<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>common-parent</artifactId>
<groupId>cn.william</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../common-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>taotao-manager</artifactId>
<packaging>pom</packaging>
<name>taotao-manager</name>
<url>http://maven.apache.org</url>
<modules>
<module>taotao-manager-pojo</module>
<module>taotao-manager-mapper</module>
<module>taotao-manager-service</module>
<module>taotao-manager-web</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 依賴管理 -->
<dependencies>
<dependency>
<groupId>cn.william</groupId>
<artifactId>common-utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<!-- 配置插件 -->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
四. 創(chuàng)建開發(fā)項(xiàng)目子模塊
創(chuàng)建taotao-manager-pojo,mapper,service,web等子模塊,詳細(xì)如下:
右鍵點(diǎn)擊taotao-manager,選擇New,Module,
這一步注意,與創(chuàng)建common-utils時(shí)不同,是將其子模塊添加到taotao-manager目錄下的:
maven的相關(guān)配置,保持默認(rèn):
注意子模塊所在目錄就好:

創(chuàng)建taotao-manager下其它子模塊
上面說(shuō)的時(shí)創(chuàng)建taotao-manager-pojo子模塊,另外三個(gè)子模塊的創(chuàng)建方式與其類似,有一點(diǎn)不同時(shí),在創(chuàng)建taotao-manager-web子模塊時(shí),maven項(xiàng)目的類型選擇如下:

修改子模塊的pom文件
子模塊pojo,mapper,service的打包方式全為jar,只有web子模塊打包為war包。
pojo子模塊,pom.xml詳細(xì)如下:
<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>taotao-manager</artifactId>
<groupId>cn.william</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>taotao-manager-pojo</artifactId>
<packaging>jar</packaging>
<name>taotao-manager-pojo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
mapper子模塊依賴與pojo子模塊,pom.xml詳細(xì)如下:
<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>taotao-manager</artifactId>
<groupId>cn.william</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>taotao-manager-mapper</artifactId>
<packaging>jar</packaging>
<name>taotao-manager-mapper</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 依賴與pojo子模塊 -->
<dependency>
<groupId>cn.william</groupId>
<artifactId>taotao-manager-pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
</dependencies>
</project>
service子模塊依賴與mapper子模塊,pom.xml詳細(xì)如下:
<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>taotao-manager</artifactId>
<groupId>cn.william</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>taotao-manager-service</artifactId>
<packaging>jar</packaging>
<name>taotao-manager-service</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 依賴與mapper子模塊 -->
<dependency>
<groupId>cn.william</groupId>
<artifactId>taotao-manager-mapper</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
...(省略)
</dependencies>
</project>
web子模塊依賴與service子模塊,pom.xml詳細(xì)如下:
<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/maven-v4_0_0.xsd">
<parent>
<artifactId>taotao-manager</artifactId>
<groupId>cn.william</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>taotao-manager-web</artifactId>
<packaging>war</packaging><!--打成war包-->
<name>taotao-manager-web Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- 依賴于service -->
<dependency>
<groupId>cn.william</groupId>
<artifactId>taotao-manager-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
...(省略)
</dependencies>
<build>
<finalName>taotao-manager-web</finalName>
</build>
</project>
五. 運(yùn)行項(xiàng)目
創(chuàng)建index.jsp
至此,項(xiàng)目創(chuàng)建已經(jīng)完成,我們可以在taotao-manager-web的webapp目錄下創(chuàng)建index.jsp,詳情如下:

使用tomcat插件
我們使用maven的tomcat插件來(lái)運(yùn)行項(xiàng)目,在此之前,確保在taotao-manager的pom文件中配置了tomcat的插件:
...(省略)
<build>
<!-- 配置插件 -->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
...(省略)
配置Maven Tomcat Plugin運(yùn)行web項(xiàng)目
(1) 添加新配置


(2) 點(diǎn)擊運(yùn)行,或者點(diǎn)擊旁邊的debug

(3) 出項(xiàng)錯(cuò)誤
出現(xiàn)錯(cuò)誤,可能是common-parent和common-utils沒(méi)有安裝到本地倉(cāng)庫(kù),出現(xiàn)的錯(cuò)誤是找不到common-utils的jar包,那就需要我們安裝一下。

等待將jar包安裝到本地倉(cāng)庫(kù),稍微有點(diǎn)慢可能,耐心等。。。
安裝完成之后,再次運(yùn)行,出現(xiàn)下面的信息,證明運(yùn)行成功:

通過(guò)瀏覽器訪問(wèn):

至此,我們的項(xiàng)目環(huán)境搭建成功,接下來(lái)就是實(shí)際的項(xiàng)目開發(fā)了。
聲明:
① 關(guān)于上面代碼中出現(xiàn)的省略的部分,是由于內(nèi)容偏長(zhǎng),所以省略,想要查看完成項(xiàng)目,請(qǐng)查看本人的github,地址:
https://github.com/williamHappy/tao-shopping-mall
② 關(guān)于上面有任何不足之處,敬請(qǐng)各位諒解,畢竟本人技術(shù)有限,也在學(xué)習(xí)階段,也可以給出合理意見(jiàn),共同改進(jìn)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Maven創(chuàng)建和管理多模塊項(xiàng)目的詳細(xì)步驟
- maven多模塊項(xiàng)目依賴管理與依賴?yán)^承詳解
- 利用IDEA工具修改Maven多模塊項(xiàng)目標(biāo)識(shí)包名全過(guò)程記錄
- 使用maven-assembly-plugin如何打包多模塊項(xiàng)目
- SpringBoot+Maven 多模塊項(xiàng)目的構(gòu)建、運(yùn)行、打包實(shí)戰(zhàn)
- IntelliJ IDEA創(chuàng)建maven多模塊項(xiàng)目(圖文教程)
- 使用Maven進(jìn)行多模塊項(xiàng)目管理的操作步驟
相關(guān)文章
springboot整合spring-retry的實(shí)現(xiàn)示例
本文將結(jié)合實(shí)例代碼,介紹springboot整合spring-retry的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
SpringBoot中使用Flyway進(jìn)行數(shù)據(jù)庫(kù)遷移的詳細(xì)流程
本文介紹了如何在Spring Boot項(xiàng)目中使用Flyway進(jìn)行數(shù)據(jù)庫(kù)遷移,Flyway通過(guò)SQL腳本管理數(shù)據(jù)庫(kù)變更,支持自動(dòng)執(zhí)行和版本控制,避免了手動(dòng)執(zhí)行SQL腳本的錯(cuò)誤和維護(hù)困難,需要的朋友可以參考下2025-02-02
Spring?Boot?使用觀察者模式實(shí)現(xiàn)實(shí)時(shí)庫(kù)存管理的步驟
在現(xiàn)代軟件開發(fā)中,實(shí)時(shí)數(shù)據(jù)處理非常關(guān)鍵,本文提供了一個(gè)使用SpringBoot和觀察者模式開發(fā)實(shí)時(shí)庫(kù)存管理系統(tǒng)的詳細(xì)教程,步驟包括創(chuàng)建項(xiàng)目、定義實(shí)體類、實(shí)現(xiàn)觀察者模式、集成Spring框架、創(chuàng)建RESTful?API端點(diǎn)和測(cè)試應(yīng)用等,這將有助于開發(fā)者構(gòu)建能夠即時(shí)響應(yīng)庫(kù)存變化的系統(tǒng)2024-09-09
SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例,通過(guò)重定向、路徑匹配、反向代理和直接調(diào)用Controller層接口等方法來(lái)實(shí)現(xiàn),感興趣的可以了解一下2025-01-01

