第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Maven 多模塊構(gòu)建

在之前的章節(jié)中,我們已經(jīng)學習了關(guān)于 Maven 的大部分知識。從本節(jié)開始,我們會通過開發(fā)一個小型項目來更好的理解之前的概念。在這一節(jié)中,我們首先要做的就是用 Maven 來構(gòu)建一個包含多個模塊的項目。

1. Project 和 Module

提到多模塊項目構(gòu)建,我們首先要弄明白 project 和 module 這兩個概念。

a. 相同點:

  • project 和 module 都是 Maven 工程,有屬于自己的 pom.xml。

b. 不同點:

  • module 工程必須要有父項目,一般情況下,project 工程在多模塊項目中都是作為父項目存在的;
  • project 工程可以放到類似 tomcat 的容器中運行,而 module 工程則不能;

簡單總結(jié)一下,project 工程包含的范圍更廣,單模塊項目中作為項目整體,多模塊項目中作為父模塊存在。module 工程在多模塊項目中作為子工程存在。

2. 開始創(chuàng)建項目

2.1 創(chuàng)建 project 工程

這里,我們結(jié)合市面上比較常用的開發(fā)工具 idea 來進行演示,當然,其他的開發(fā)工具也能夠得到相同的效果。

剛剛,我們也了解到多模塊項目必須要有 project 工程作為父項目存在,那么首先,我們就需要創(chuàng)建一個 project 工程。

打開 idea,選擇 File -> New -> Project,在彈出的窗口左側(cè)選擇 Maven 并點擊 Next 按鈕。

在這里,需要填寫 project 的信息,包括 groupId,artifactId,version 信息,并點擊 Next 按鈕。

最后一步,只需要填寫項目名稱,然后點擊Finish按鈕即可。

由于是父項目,所以并不需要代碼,因此可以將 src 目錄直接刪掉。

至此,project 項目創(chuàng)建完成。

2.2 創(chuàng)建 module 工程

在創(chuàng)建好父工程之后,我們開始創(chuàng)建 module 工程。在父工程上點擊右鍵,選擇New -> Module。

我們會發(fā)現(xiàn)跟剛剛創(chuàng)建 project 工程的步驟是一樣的,只不過其中有些已經(jīng)不需要我們來填寫了,例如 groupId,version 等,這里是因為存在父工程,而子工程的這些元素節(jié)點都是繼承父工程的。所以我們只需要填寫子工程的 artifactId 即可。

這里我們分別創(chuàng)建 mall-account 工程,mall-commodity 工程,mall-order 工程,mall-delivery 工程,分別對應(yīng)商城系統(tǒng)的用戶模塊,商品模塊,訂單模塊以及物流模塊。

另外我們在單獨創(chuàng)建一個 mall-web 工程,主要的功能是作為各個模塊的整合并與前端頁面進行對接。

在創(chuàng)建 mall-web 工程的時候,需要注意的是,我們要選擇一個maven-archetype-webapp的模塊。然后點擊 Next 按鈕,進入下一步。

后續(xù)操作和其他模塊沒有太大區(qū)別,按照實際情況選擇和填寫即可。

現(xiàn)在,整個項目已經(jīng)初具雛形了,我們來看一下現(xiàn)在項目的結(jié)構(gòu)。

2.3 添加依賴

注意:mall 項目為一個實例項目,中間可能會存在某些不太合理的地方,我們這里更多的關(guān)注項目構(gòu)建過程。

  1. mall-account 項目為用戶項目,需要被 mall-order 項目、mall-delivery 項目和 mall-web 項目依賴;
  2. mall-order 項目為訂單項目,需要被 mall-delivery 項目和 mall-web 項目依賴;
  3. mall-commodity 項目為商品項目,需要被 mall-web 模塊依賴;
  4. mall-delivery 項目為物流項目,需要被 mall-web 項目依賴。

我們首先在父工程 mall-aggregate 的 pom.xml 文件中,添加 dependencyManagement 節(jié)點元素。

<properties>
    <junit.version>4.11</junit.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.mic.tech</groupId>
            <artifactId>mall-account</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.mic.tech</groupId>
            <artifactId>mall-commodity</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.mic.tech</groupId>
            <artifactId>mall-order</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.mic.tech</groupId>
            <artifactId>mall-delivery</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

然后,依次在各個子工程中,根據(jù)子項目之間的依賴關(guān)系,添加對應(yīng)的依賴。在添加完依賴之后,我們可以使用之前安裝過的 Maven Helper 插件來生成整個工程的依賴關(guān)系圖。

生成之后的依賴關(guān)系圖如下:

從這個圖中,我們可以清楚看到目前 mall 工程各個模塊直接的依賴關(guān)系。在實際的開發(fā)過程中,可以根據(jù)生成的依賴關(guān)系圖來判斷是否存在某些沒必要引入的依賴,進行依賴優(yōu)化。

2.4 運行這個項目

在項目創(chuàng)建好之后,我們就來運行這個項目。在 idea 中點擊Add Configuration按鈕。

在彈出的界面點擊小+號,然后選擇 Tomcat Server -> Local。

在 Tomcat Server 界面的 Deployment 頁簽,點擊小+號,選擇Artifact… ,并在彈出的窗口中,選擇mallweb:war exploded,并在Application context中輸入/index ,最后點擊OK按鈕。

點擊Add Configuration 旁邊的三角形按鈕,啟動項目,項目啟動后控制臺會輸出如下日志產(chǎn)生。

項目啟動成功后,我們在瀏覽器中輸入地址http://localhost:8080/index/,可以看到項目的歡迎頁面。

至此,我們的項目已經(jīng)創(chuàng)建并啟動完成。

3. 構(gòu)建這個項目

有了之前章節(jié)的鋪墊,項目構(gòu)建就變得非常容易了。

我們將目錄切換到 mall-aggregate 目錄下,執(zhí)行 mvn clean install 命令,就可以得到如下執(zhí)行結(jié)果。

[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.mic.tech:mall-web:war:1.0.0-SNAPSHOT
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: junit:junit:jar -> duplicate declaration of version (?) @ line 46, column 17
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] mall-aggregate                                                     [pom]
[INFO] mall-account                                                       [jar]
[INFO] mall-commodity                                                     [jar]
[INFO] mall-order                                                         [jar]
[INFO] mall-delivery                                                      [jar]
[INFO] mall-web Maven Webapp                                              [war]
[INFO]
[INFO] --------------------< com.mic.tech:mall-aggregate >---------------------
[INFO] Building mall-aggregate 1.0.0-SNAPSHOT                             [1/6]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] ...
[INFO] ---------------------< com.mic.tech:mall-account >----------------------
[INFO] Building mall-account 1.0.0-SNAPSHOT                               [2/6]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ...
[INFO] --------------------< com.mic.tech:mall-commodity >---------------------
[INFO] Building mall-commodity 1.0.0-SNAPSHOT                             [3/6]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ...
[INFO] ----------------------< com.mic.tech:mall-order >-----------------------
[INFO] Building mall-order 1.0.0-SNAPSHOT                                 [4/6]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ...
[INFO] ---------------------< com.mic.tech:mall-delivery >---------------------
[INFO] Building mall-delivery 1.0.0-SNAPSHOT                              [5/6]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ...
[INFO] -----------------------< com.mic.tech:mall-web >------------------------
[INFO] Building mall-web Maven Webapp 1.0.0-SNAPSHOT                      [6/6]
[INFO] --------------------------------[ war ]---------------------------------
[INFO] ...
[INFO] Building war: D:\code\mall-aggregate\mall-web\target\mall-web.war
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for mall-aggregate 1.0.0-SNAPSHOT:
[INFO]
[INFO] mall-aggregate ..................................... SUCCESS [  0.897 s]
[INFO] mall-account ....................................... SUCCESS [  2.173 s]
[INFO] mall-commodity ..................................... SUCCESS [  0.191 s]
[INFO] mall-order ......................................... SUCCESS [  0.192 s]
[INFO] mall-delivery ...................................... SUCCESS [  0.148 s]
[INFO] mall-web Maven Webapp .............................. SUCCESS [  3.331 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  7.154 s
[INFO] Finished at: 2020-05-09T22:55:42+08:00
[INFO] ------------------------------------------------------------------------

4. 小結(jié)

在本章節(jié)中,我們完成了 mall 工程的搭建,運行,構(gòu)建的整個過程,本節(jié)中并沒有太多新的內(nèi)容,都是基于之前章節(jié)的內(nèi)容,進行整合,后續(xù)的章節(jié)也會使用這個示例項目來進行講解。