詳解使用Maven構(gòu)建多模塊項(xiàng)目(圖文)
Maven多模塊項(xiàng)目,適用于一些比較大的項(xiàng)目,通過(guò)合理的模塊拆分,實(shí)現(xiàn)代碼的復(fù)用,便于維護(hù)和管理。尤其是一些開(kāi)源框架,也是采用多模塊的方式,提供插件集成,用戶可以根據(jù)需要配置指定的模塊。
項(xiàng)目結(jié)構(gòu)如下:
test-hd-parent (父級(jí))
---pom.xml
---test-hd-api (第三方接口層)
----pom.xml
---test-hd-foundation (基礎(chǔ)工具層)
----pom.xml
---test-hd-resource (資源層)
----pom.xml
---test-hd-service (邏輯業(yè)務(wù)層)
----pom.xml
---test-hd-modules (web層)
----pom.xml
---test-hd-www (web模塊1)
----pom.xml
---test-hd-admin (web模塊2)
----pom.xml
創(chuàng)建一個(gè)父maven工程
新建一個(gè)maven項(xiàng)目,選擇存儲(chǔ)位置,并選擇創(chuàng)建一個(gè)簡(jiǎn)單的maven工程


輸入Group Id、Artifact Id、Packaging,packaging選擇pom包
生成父工程,pom.xml如下
刪除工程中的src 目錄
創(chuàng)建子模塊
右擊父工程名---》New---》Project,然后選擇新建一個(gè)maven module工程

設(shè)置子工程名以及父工程,再設(shè)置快速創(chuàng)建模式

得到子工程(test-hd-api,第三方接口層),設(shè)置編譯的jdk

同理設(shè)置,子模塊:test-hd-foundation(基礎(chǔ)工具層)、test-hd-resource(資源層) 、test-hd-service(邏輯業(yè)務(wù)層)
新建test-hd-modules (web層),選擇創(chuàng)建一個(gè)a simple project,輸入Group Id、Artifact Id、Packaging,packaging選擇pom包

創(chuàng)建web子模塊
web子模塊在建在test-hd-modules (web層)里面,右擊test-hd-modules 工程名---》New---》Project,然后選擇新建一個(gè)maven module工程,設(shè)置子工程名以及父工程,選擇新建web項(xiàng)目
配置maven web項(xiàng)目,參照:【Maven】Eclipse 使用Maven創(chuàng)建Java Web項(xiàng)目
同理可以配置其他的web子模塊 test-hd-admin(web模塊2)
配置個(gè)模塊的依賴
在parent項(xiàng)目pom.xml中建立依賴管理(dependencyManagement)
<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>com.hd</groupId>
<artifactId>test-hd-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>test-hd-api</module>
<module>test-hd-service</module>
<module>test-hd-resource</module>
<module>test-hd-foundation</module>
<module>test-hd-modules</module>
</modules>
<!-- maven依賴 -->
<dependencyManagement>
<dependencies>
<!-- hd -->
<dependency>
<groupId>com.hd</groupId>
<artifactId>test-hd-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hd</groupId>
<artifactId>test-hd-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hd</groupId>
<artifactId>test-hd-resource</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hd</groupId>
<artifactId>test-hd-foundation</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
test-hd-foundation中的依賴
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.hd</groupId>
<artifactId>test-hd-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>test-hd-foundation</artifactId>
<dependencies>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- define the project compile level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
test-hd-api中的依賴關(guān)系
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.hd</groupId>
<artifactId>test-hd-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>test-hd-api</artifactId>
<dependencies>
<dependency>
<groupId>com.hd</groupId>
<artifactId>test-hd-foundation</artifactId>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- define the project compile level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
<finalName>test-hd-api</finalName>
</build>
</project>
test-hd-resource中的依賴關(guān)系
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.hd</groupId>
<artifactId>test-hd-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>test-hd-resource</artifactId>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- define the project compile level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
test-hd-service中的依賴關(guān)系
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.hd</groupId>
<artifactId>test-hd-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>test-hd-service</artifactId>
<dependencies>
<dependency>
<groupId>com.hd</groupId>
<artifactId>test-hd-foundation</artifactId>
</dependency>
<dependency>
<groupId>com.hd</groupId>
<artifactId>test-hd-api</artifactId>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- define the project compile level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
<finalName>test-hd-service</finalName>
</build>
</project>
test-hd-module中的依賴關(guān)系
<?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> <parent> <groupId>com.hd</groupId> <artifactId>test-hd-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>test-hd-modules</artifactId> <packaging>pom</packaging> <modules> <module>test-hd-www</module> <module>test-hd-admin</module> </modules> <dependencies> <dependency> <groupId>com.hd</groupId> <artifactId>test-hd-foundation</artifactId> </dependency> <dependency> <groupId>com.hd</groupId> <artifactId>test-hd-service</artifactId> </dependency> <dependency> <groupId>com.hd</groupId> <artifactId>test-hd-api</artifactId> </dependency> <dependency> <groupId>com.hd</groupId> <artifactId>test-hd-resource</artifactId> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> </project>
test-hd-www中的依賴關(guān)系
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.hd</groupId>
<artifactId>test-hd-modules</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>test-hd-www</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<!-- define the project compile level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
<finalName>test-hd-www</finalName>
</build>
</project>
最后使用maven-update整個(gè)工程,右擊父工程名--》Maven--》Update Project
打包和發(fā)布
打包,右擊父工程名 test-hd-parent---->Run As--->Maven Install

打包web子工程,右擊工程名test-hd-www--->Run As ---> Maven Build...---> Goals: clean package--->Run

右擊工程名test-hd-www,進(jìn)行刷新,找到war包,放到tomcat的webapps中,啟動(dòng)tomcat,即可訪問(wèn)工程http://localhost:8080/test-hd-www

可以去tomcat下面webapps》test-hd-www》WEB-INF》lib中,看到引用的jar包
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的信號(hào)量Semaphore詳細(xì)解讀
這篇文章主要介紹了Java中的信號(hào)量Semaphore詳細(xì)解讀,Java信號(hào)量機(jī)制可以用來(lái)保證線程互斥,創(chuàng)建Semaphore對(duì)象傳入一個(gè)整形參數(shù),類似于公共資源,需要的朋友可以參考下2023-11-11
Java結(jié)構(gòu)型設(shè)計(jì)模式中建造者模式示例詳解
建造者模式,是一種對(duì)象構(gòu)建模式 它可以將復(fù)雜對(duì)象的建造過(guò)程抽象出來(lái),使這個(gè)抽象過(guò)程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)的對(duì)象。本文將通過(guò)示例講解建造者模式,需要的可以參考一下2022-09-09
java 使用簡(jiǎn)單的demo實(shí)例告訴你優(yōu)化算法的強(qiáng)大
本篇文章介紹了,在java中使用簡(jiǎn)單的demo實(shí)例告訴你優(yōu)化算法的強(qiáng)大。需要的朋友參考下2013-05-05
spring cloud feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用服務(wù)傳輸文件的方法
這篇文章主要介紹了spring cloud feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用服務(wù)傳輸文件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
基于SpringBoot構(gòu)建電商秒殺項(xiàng)目代碼實(shí)例
這篇文章主要介紹了基于SpringBoot構(gòu)建電商秒殺項(xiàng)目代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
詳解java如何處理各種批量數(shù)據(jù)入庫(kù)
這篇文章主要為大家詳細(xì)介紹了java如何使用BlockingQueue處理各種批量數(shù)據(jù)入庫(kù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11

