最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

構建Maven多模塊項目的方法

 更新時間:2021年08月12日 11:23:00   作者:richest_qi  
這篇文章主要介紹了構建Maven多模塊項目的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

構建Maven多模塊項目

JavaWeb開發(fā)一般都會進行分層開發(fā),通常分為

  • model,模型層
  • dao,數據訪問層
  • service,業(yè)務邏輯層
  • web,表現層

分層后,各層職責明確,后期維護起來也會容易一些。接下來我們就是使用Maven來構建以上各層,即構建一個Maven多模塊項目,項目目錄結構如下所示。

在這里插入圖片描述

創(chuàng)建父模塊

執(zhí)行命令:mvn -B archetype:generate -DgroupId=com.jepcc.app -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4,得到一個新項目。

在這里插入圖片描述

接下來作如下處理:

  • 刪除src文件夾
  • 修改demo/pom.xml文件

<packaging>標簽在沒有指明的情況下默認是jar,這里將其修改為pom,表示模塊是一個可以被繼承的模塊。

在這里插入圖片描述 

創(chuàng)建子模塊:model層

進入demo目錄,執(zhí)行命令:mvn -B archetype:generate -DgroupId=com.jepcc.app -DartifactId=model -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4,在demo目錄下生成了model目錄,model目錄里包含了src目錄和pom.xml文件。

在這里插入圖片描述

且demo/pom.xml里自動新增了以下內容,

<modules>  
	<module>model</module>
</modules>

接下來做如下處理: 修改model/pom.xml文件

  • 刪除<groupId>com.jepcc.app</groupId><version>1.0-SNAPSHOT</version>
  • 因為groupId和version會繼承自父模塊的groupId和version。
  • 增加<packaging>jar</packaging>
  • 將打包方式設置為jar。

在這里插入圖片描述

創(chuàng)建子模塊:dao模塊

在demo目錄下,執(zhí)行命令:mvn -B archetype:generate -DgroupId=com.jepcc.app -DartifactId=dao -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4,在demo目錄下生成了dao目錄,dao目錄里包含了src目錄和pom.xml。

在這里插入圖片描述

且demo/pom.xml里自動新增了內容,如下,

<modules>  
	<module>model</module>
    <module>dao</module>
 </modules>

接下來做如下處理:

修改 dao/pom.xml

刪除<groupId>com.jepcc.app</groupId><version>1.0-SNAPSHOT</version>
因為groupId和version會繼承自父模塊的groupId和version。

增加<packaging>jar</packaging>
將打包方式設置為jar。增加依賴
增加對model模塊的依賴

<dependency>
  <groupId>com.jepcc.app</groupId>
  <artifactId>model</artifactId>
  <version>${project.version}</version>
</dependency>

在這里插入圖片描述

創(chuàng)建子模塊:service層

在demo目錄下,執(zhí)行命令:mvn -B archetype:generate -DgroupId=com.jepcc.app -DartifactId=service -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4,在demo目錄下生成service目錄,service目錄里包含src目錄和pom.xml文件。

在這里插入圖片描述

且demo/pom.xml文件自動新增內容,如下,

<modules>  
	<module>model</module>
    <module>dao</module>
    <module>service</module>
</modules>

接下來作如下處理:

修改 service/pom.xml

刪除<groupId>com.jepcc.app</groupId><version>1.0-SNAPSHOT</version>
因為groupId和version會繼承自父模塊的groupId和version。

增加<packaging>jar</packaging>
將打包方式設置為jar。

增加依賴
service 層依賴dao層和model層,但我們只需要添加dao層,因為dao模塊中已經添加了對model模塊的依賴。

<dependency>
  <groupId>com.jepcc.app</groupId>
  <artifactId>dao</artifactId>
  <version>${project.version}</version>
</dependency>

創(chuàng)建子模塊:web層

在demo目錄下執(zhí)行命令:mvn -B archetype:generate -DgroupId=com.jepcc.app -DartifactId=web -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4,在demo目錄下生成web目錄,web目錄包含src目錄和pom.xml。web/src/main/webapp/WEB-INF目錄下生成了web.xml。
web/src/main/webapp目錄下生成了簡單的index.jsp,如下,

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

在這里插入圖片描述

且demo/pom.xml自動新增內容,如下,

<modules>  
	<module>model</module>
    <module>dao</module>
    <module>service</module>
    <module>web</module>
</modules>

接下來作如下處理:

  • 修改 web/pom.xml
  • 刪除<groupId>com.jepcc.app</groupId><version>1.0-SNAPSHOT</version>
  • 因為groupId和version會繼承自父模塊的groupId和version。
  • 增加依賴
  • service 層依賴dao層和model層,但我們只需要添加dao層,因為dao模塊中已經添加了對model模塊的依賴。
<dependency>
  <groupId>com.jepcc.app</groupId>
  <artifactId>service</artifactId>
  <version>${project.version}</version>
</dependency>

注意哈,web層的打包方式是war!!!

編譯運行項目

web模塊添加jetty插件
經過以上過程,相關模塊全部創(chuàng)建完成,怎么運行起來呢?由于最終運行的是web模塊,所以我們對該模塊添加jetty支持,方便測試運行,修改web模塊的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>demo</artifactId>
    <groupId>com.jepcc.app</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>


  <artifactId>web</artifactId>
  <packaging>war</packaging>

  <name>web Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.jepcc.app</groupId>
      <artifactId>service</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>web</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
<!--        配置Jetty插件-->
        <plugin>
          <groupId>org.mortbay.jetty</groupId>
          <artifactId>maven-jetty-plugin</artifactId>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

進入demo目錄,執(zhí)行命令mvn clean install,完成模塊構建。

在這里插入圖片描述

構建完成后,web目錄下多出了target目錄,里面包含web.war。

在這里插入圖片描述

進入web目錄,執(zhí)行命令:mvn jetty:run,啟動jetty。

在這里插入圖片描述

打開瀏覽器訪問網址:http://localhost:8080/web/

在這里插入圖片描述 

Maven相關特性

每個子模塊都有自己的pom.xml文件,這就意味著每個子模塊都有可以添加自己的依賴,這就可能造成一個相同的依賴每個模塊都要添加一次,而且添加的版本可能不一致,這會造成項目混亂、導致運行時的各種問題。
所以,就應該有個父模塊去統(tǒng)一管理所有的jar包,其他子模塊去引用父模塊就好了,子模塊就不需要重復去定義依賴。

父模塊的配置

父模塊有兩個特點:

  • 父模塊中沒有代碼,只有pom.xml文件,用來管理所有依賴及共同配置
  • 父模塊pom.xml中的<packaging>標簽必須設置為pom
<groupId>com.jepcc.app</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

父模塊聚合子模塊

父模塊在pom.xml中通過<modules><module>聲明需要聚合的子模塊。

<modules>
  <module>model</module>
  <module>dao</module>
  <module>service</module>
  <module>web</module>
</modules>

父模塊統(tǒng)一管理依賴包

父模塊的pom.xml通過<dependencyManagement>來統(tǒng)一管理所有jar包及其版本,這樣子模塊要引用一個依賴時,就不需要在自己的pom.xml里顯式列出版本號。因為Maven會沿著父子層次往上走,直到找到擁有dependencyManagement標簽的模塊,最終確定依賴包對應的版本,并完成加載。
使用<dependencyManagement>來統(tǒng)一管理依賴的版本號,可以確保各個依賴的版本是一致的。
關于<dependencyManagement><dependencies>,二者有如下區(qū)別:

  • 對于<dependencyManagement>,只是在父模塊中聲明依賴,而不實現引入,因此子模塊需要顯式聲明所需要的依賴,否則子模塊是不會從父模塊中繼承下來的。
  • 當子模塊顯式聲明依賴且沒有指定版本,子模塊會從父模塊中繼承依賴;當子模塊顯式聲明依賴且指定版本號,Maven會使用子模塊中的指定版本。
  • 對于<dependencies>,即使子模塊中不寫依賴,子模塊依然會從父模塊中繼承所有依賴。

子模塊在pom.xml中聲明父模塊

子模塊在自己的pom.xml中通過<parent>聲明父模塊。

<parent>
  <artifactId>demo</artifactId>
  <groupId>com.jepcc.app</groupId>
  <version>1.0-SNAPSHOT</version>
</parent>

參考文章

使用Maven構建多模塊項目

到此這篇關于構建Maven多模塊項目的方法的文章就介紹到這了,更多相關Maven多模塊項目內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java查看本機端口是否被占用源碼

    Java查看本機端口是否被占用源碼

    這篇文章主要介紹了Java查看本機端口是否被占用的主要原理,并結合具體實例給出了操作方法,需要的朋友可以參考下
    2017-09-09
  • java 中遍歷取值異常(Hashtable Enumerator)解決辦法

    java 中遍歷取值異常(Hashtable Enumerator)解決辦法

    這篇文章主要介紹了java 中遍歷取值異常(Hashtable Enumerator)解決辦法的相關資料,用迭代器取值時拋出的異常:java.util.NoSuchElementException: Hashtable Enumerator ,需要的朋友可以參考下
    2017-08-08
  • Springboot異常錯誤處理解決方案詳解

    Springboot異常錯誤處理解決方案詳解

    這篇文章主要介紹了Springboot異常錯誤處理解決方案詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 基于Spring + Spring MVC + Mybatis 高性能web構建實例詳解

    基于Spring + Spring MVC + Mybatis 高性能web構建實例詳解

    這篇文章主要介紹了基于Spring + Spring MVC + Mybatis 高性能web構建實例詳解,需要的朋友可以參考下
    2017-04-04
  • Spring AOP注解失效的坑及JDK動態(tài)代理

    Spring AOP注解失效的坑及JDK動態(tài)代理

    這篇文章主要介紹了Spring AOP注解失效的坑及JDK動態(tài)代理,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java基礎之ArrayList的擴容機制

    Java基礎之ArrayList的擴容機制

    這篇文章主要介紹了Java基礎之ArrayList的擴容機制,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Java三目運算符用法舉例

    Java三目運算符用法舉例

    三目運算符是我們經常在代碼中使用的,這篇文章主要給大家介紹了關于Java三目運算符用法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Mybatis-Plus自動填充更新操作相關字段的實現

    Mybatis-Plus自動填充更新操作相關字段的實現

    這篇文章主要介紹了Mybatis-Plus自動填充更新操作相關字段的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Spring集成Redis詳解代碼示例

    Spring集成Redis詳解代碼示例

    這篇文章主要介紹了Spring集成Redis詳解代碼示例,介紹了Eclipse工程結構,POM依賴,Spring配置,Redis配置信息以及Java代碼等相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java排序算法之SleepSort排序示例

    Java排序算法之SleepSort排序示例

    這篇文章主要介紹了Java排序算法之SleepSort排序,結合實例形式分析了SleepSort排序的實現步驟與相關操作技巧,需要的朋友可以參考下
    2017-01-01

最新評論

鸡东县| 临夏县| 治多县| 祁阳县| 木里| 东乌珠穆沁旗| 龙陵县| 临猗县| 永川市| 璧山县| 昭平县| 陕西省| 天津市| 镇雄县| 星子县| 洛南县| 永寿县| 通化县| 谷城县| 安达市| 高淳县| 金秀| 桂东县| 阿尔山市| 舒兰市| 桓仁| 浑源县| 济宁市| 昆明市| 合水县| 颍上县| 邯郸县| 教育| 长泰县| 南投县| 南丹县| 汝州市| 萨嘎县| 武城县| 平利县| 南岸区|