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

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

等待生成pom文件,注意修改打包方式為pom,修改pom文件如下:(由于pom文件較長,只給出部分,獲取所有,請關(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>
<!--集中定義依賴版本號-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.12</junit.version>
...(省略)
</properties>
<dependencyManagement>
<dependencies>
<!-- 時間操作組件 -->
<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)建公共工具類
首先,公共工具類是繼承自父項目common-parent的。
需要注意的一點是一點,為了項目看起來為分模塊的形式(類似在eclipse中開發(fā)),在創(chuàng)建common-utils中有一步需要注意:
下一步特別注意,這一步會影響目錄結(jié)構(gòu),

同樣注意項目的打包方式為jar,和父項目有所不同。
<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>
<!-- 時間操作組件 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
...(省略)
</dependencies>
</project>
三. 創(chuàng)建開發(fā)項目
創(chuàng)建開發(fā)項目taotao-manager,其創(chuàng)建步驟同上,同樣是繼承common-parent,同樣修改其pom文件,詳細如下:
<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ā)項目子模塊
創(chuàng)建taotao-manager-pojo,mapper,service,web等子模塊,詳細如下:
右鍵點擊taotao-manager,選擇New,Module,
這一步注意,與創(chuàng)建common-utils時不同,是將其子模塊添加到taotao-manager目錄下的:
maven的相關(guān)配置,保持默認:
注意子模塊所在目錄就好:

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

修改子模塊的pom文件
子模塊pojo,mapper,service的打包方式全為jar,只有web子模塊打包為war包。
pojo子模塊,pom.xml詳細如下:
<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詳細如下:
<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詳細如下:
<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詳細如下:
<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>
五. 運行項目
創(chuàng)建index.jsp
至此,項目創(chuàng)建已經(jīng)完成,我們可以在taotao-manager-web的webapp目錄下創(chuàng)建index.jsp,詳情如下:

使用tomcat插件
我們使用maven的tomcat插件來運行項目,在此之前,確保在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運行web項目
(1) 添加新配置


(2) 點擊運行,或者點擊旁邊的debug

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

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

通過瀏覽器訪問:

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

