一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于maven中多個子模塊的構建順序

基于maven中多個子模塊的構建順序

2022-01-12 01:03落魄的小開發 Java教程

這篇文章主要介紹了maven中多個子模塊的構建順序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

maven多個子模塊的構建順序

在實際的項目開發中,為了更好的組織項目代碼,會采用分層架構的方式,這就會使用到maven的多模塊特性。

假設項目分為A、B、C、D四層,在父模塊的pom.xml中,一般這樣來對子模塊進行聚合

?
1
2
3
4
5
6
<modules>
    <module>A</module>
    <module>B</module>
    <module>C</module>
    <module>D</module>
</modules>

假設各個子模塊間,配置的相互依賴關系如下:

A 依賴 B
B 依賴 C
D 依賴 A

構建父模塊,我們能夠看到以下輸出:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] C
[INFO] B
[INFO] A
[INFO] D
[INFO]
[INFO] ------------------------------------------------------------------------

這是因為子模塊的構建順序受兩個因素影響

  • 1、父模塊中各子模塊的聲明次序
  • 2、子模塊間的依賴關系

實際的構建順序是這樣形成的

maven按照次序讀取pom,如果該pom沒有依賴其他子模塊,就構建該模塊,否則就構建其依賴的模塊,如果該依賴模塊還依賴于其他的模塊,那么就進一步構建依賴的依賴。

在示例中,A模塊依賴B,而B模塊又依賴C,因此要先構建C,再構建B,然后才能構建A。而D依賴的模塊A已經構建了,因此直接構建它。

模塊間的依賴關系會將反應堆(Reactor)構成一個有向非循環圖,各個模塊是該圖的節點,依賴關系構成了有向邊。這個圖不允許出現循環。如果A依賴B,B又依賴A,這樣就產生了循環依賴,Maven會報錯。

maven中的構建

1.什么是構建

構建并不是創建,創建一個工程并不等于構建一個項目。要了解構建的含義我們應該由淺入深的從 以下三個層面來看:

(1)純 Java 代碼 (編譯)

大家都知道,我們 Java 是一門編譯型語言,.java 擴展名的源文件需要編譯成.class 擴展名的字節碼 文件才能夠執行。所以編寫任何 Java 代碼想要執行的話就必須經過編譯得到對應的.class 文件。

(2)Web 工程 (部署)

當我們需要通過瀏覽器訪問 Java 程序時就必須將包含 Java 程序的 Web 工程編譯的結果“拿”到服務 器上的指定目錄下,并啟動服務器才行。這個“拿”的過程我們叫部署。我們可以將未編譯的 Web 工程比喻為一只生的雞,編譯好的 Web 工程是一只煮熟的雞,編譯部署 的過程就是將雞燉熟。

基于maven中多個子模塊的構建順序

注意: 開發過程中使用路徑或配置文件中配置的類路徑等都是以編譯結果的文件結構為標準。

(3)實際項目

在實際項目中整合第三方框架,Web 工程中除了 Java 程序和 JSP 頁面、圖片等靜態資源之外,還 包括第三方框架的 jar 包以及各種各樣的配置文件。所有這些資源都必須按照正確的目錄結構部署到服 務器上,項目才可以運行。

所以綜上所述:構建就是以我們編寫的 Java 代碼、框架配置文件、國際化等其他資源文件、JSP 頁 面和圖片等靜態資源作為“原材料”,去“生產”出一個可以運行的項目的過程。

2.構建過程的幾個主要環節

  • (1)清理:刪除以前的編譯結果,為重新編譯做好準備。
  • (2)編譯:將 Java 源程序編譯為字節碼文件。
  • (3)測試:針對項目中的關鍵點進行測試,確保項目在迭代開發過程中關鍵點的正確性。
  • (4)報告:在每一次測試后以標準的格式記錄和展示測試結果。
  • (5)打包:將一個包含諸多文件的工程封裝為一個壓縮文件用于安裝或部署。Java 工程對應 jar 包,Web 工程對應 war 包。
  • (6)安裝:在 Maven 環境下特指將打包的結果——jar 包或 war 包安裝到本地倉庫中。
  • (7)部署:將打包的結果部署到遠程倉庫或將 war 包部署到服務器上運行。

3.自動化構建

其實上述環節我們在 Eclipse 中都可以找到對應的操作,只是不太標準。那么既然 IDE 已經可以進 行構建了我們為什么還要使用 Maven 這樣的構建工具呢?

我們來看一個小故事了解一下:

這是陽光明媚的一天。托馬斯向往常一樣早早的來到了公司,沖好一杯咖啡,進入了自己的郵箱——很 不幸,QA 小組發來了一封郵件,報告了他昨天提交的模塊的測試結果——有 BUG。“好吧,反正也不是第一 次”,托馬斯搖搖頭,進入 IDE,運行自己的程序,編譯、打包、部署到服務器上,然后按照郵件中的操作 路徑進行測試。“嗯,沒錯,這個地方確實有問題”,托馬斯說道。于是托馬斯開始嘗試修復這個 BUG,當他 差不多有眉目的時候已經到了午飯時間。 下午繼續工作。BUG 很快被修正了,接著托馬斯對模塊重新進行了編譯、打包、部署,測試之后確認沒 有問題了,回復了 QA 小組的郵件。 一天就這樣過去了,明媚的陽光化作了美麗的晚霞,托馬斯卻覺得生活并不像晚霞那樣美好啊。

讓我們來梳理一下托馬斯這一天中的工作內容

基于maven中多個子模塊的構建順序

從中我們發現,托馬斯的很大一部分時間花在了“編譯、打包、部署、測試”這些程式化的工作上 面,而真正需要由“人”的智慧實現的分析問題和編碼卻只占了很少一部分。

基于maven中多個子模塊的構建順序

能否將這些程式化的工作交給機器自動完成呢?——當然可以!這就是自動化構建。

基于maven中多個子模塊的構建順序

此時 Maven 的意義就體現出來了,它可以自動的從構建過程的起點一直執行到終點:

基于maven中多個子模塊的構建順序

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/erfu6081/article/details/103282682

延伸 · 閱讀

精彩推薦
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
主站蜘蛛池模板: 国产视频中文字幕 | 免费一级特黄特色大片在线 | ange venus与黑人 | 国产成人99精品免费观看 | 色一情一乱一伦 | 亚洲成人黄色网址 | 韩国三级在线观看 完整版 韩国三级视频网站 | 国产免费丝袜调教视频 | 久久亚洲国产成人影院 | 韩国理论片最新第一页 | 日韩成a人片在线观看日本 日韩不卡一区二区 | 亚洲无线一二三区2021 | 国产日本免费 | 特黄级 | 亚洲日本中文字幕天堂网 | v视界影院成片 | 四虎最新免费观看网址 | 大陆男男gayxxxxvideo | 美女被爆 | freese×video性欧美丝袜 | 国产麻豆流白浆在线观看 | 九九精品国产兔费观看久久 | 国产免费小视频 | 亚洲精品国产成人中文 | 91东航翘臀女神在线播放 | 四虎精品影视 | 国产高清久久 | 国产精品午夜性视频网站 | 天天白天天谢天天啦 | 亚洲va在线va天堂va偷拍 | 亚洲天堂h | 亚洲国产精品ⅴa在线观看 亚洲国产高清一区二区三区 | 欧美亚洲一区二区三区在线 | 乌克兰xxxxx| 欧美日韩中文字幕在线视频 | 精品久久成人免费第三区 | 99re8在线精品视频免费播放 | 亚洲色图第一页 | 欧美日韩国产一区二区三区伦 | 亚洲欧美日韩综合一区久久 | 亚洲福利一区二区 |