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

Maven 多模塊構(gòu)建

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

1. Project 和 Module

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

a. 相同點(diǎn):

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

b. 不同點(diǎn):

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

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

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

2.1 創(chuàng)建 project 工程

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

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

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

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

最后一步,只需要填寫項(xiàng)目名稱,然后點(diǎn)擊Finish按鈕即可。

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

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

2.2 創(chuàng)建 module 工程

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

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

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

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

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

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

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

2.3 添加依賴

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

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

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

<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ù)子項(xiàng)目之間的依賴關(guān)系,添加對應(yīng)的依賴。在添加完依賴之后,我們可以使用之前安裝過的 Maven Helper 插件來生成整個工程的依賴關(guān)系圖。

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

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

2.4 運(yùn)行這個項(xiàng)目

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

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

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

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

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

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

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

有了之前章節(jié)的鋪墊,項(xiàng)目構(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 工程的搭建,運(yùn)行,構(gòu)建的整個過程,本節(jié)中并沒有太多新的內(nèi)容,都是基于之前章節(jié)的內(nèi)容,進(jìn)行整合,后續(xù)的章節(jié)也會使用這個示例項(xiàng)目來進(jìn)行講解。