Maven的聚合工程與繼承

目錄

一、為什么需要使用Maven工程

二、聚合工程的結構

三、聚合工程實現步驟?

四、父工程統一管理版本

五、編譯打包


? ? ? ? 大家好,我是jstart千語。想著平時開發項目似乎都是用maven來管理的,并且大多都是聚合工程。而且在maven的聚合工程中,通常與maven繼承一起使用。有時候可能會把這兩者混淆,所以在這里做一些總結吧。


一、為什么需要使用Maven工程

1、統一依賴和版本

  • 不同模塊可能都要用相同的第三方庫(如 Spring、MyBatis 等),如果在各自 pom.xml 中單獨聲明,版本管理非常混亂。

  • 父 POM 通過 <dependencyManagement> 集中聲明依賴版本,子模塊直接引用即可,實現“統一升級一次、全項目生效”。

2、集中構建與發布

  • 多模塊聚合后,只需在父工程執行一次 mvn clean install,即可編譯、測試、打包所有子模塊。

  • 集中發布時,Maven 會自動按照模塊間的依賴順序來部署,避免手動一個一個打包。

3、復用公共代碼

  • 將通用工具、常量、DTO 等抽離到 common 或類似模塊中,避免在每個服務里重復實現。

  • 不同服務只需依賴同一個公共模塊,既減少重復,又便于統一更新維護。

4、支持靈活的環境配置

  • 父 POM 可以定義多套 Profile(如 devtestprod),根據激活的 Profile 加載不同的資源或插件配置。

  • 各子模塊通過繼承父配置,實現環境切換無需改各自代碼。

二、聚合工程的結構

my-project/

├── pom.xml ? ? ? ? ? ? ? ? ? ? ← 聚合父 POM(packaging = pom)

├── common/ ? ? ? ? ? ? ? ? ? ? ← 通用工具模塊
│ ? └── pom.xml

├── service-a/ ? ? ? ? ? ? ? ? ?← 服務 A 模塊
│ ? └── pom.xml

├── service-b/ ? ? ? ? ? ? ? ? ?← 服務 B 模塊
│ ? └── pom.xml

└── web-app/ ? ? ? ? ? ? ? ? ? ?← Web 前端或 Spring Boot 模塊
? ? └── pom.xml
?

說明:
聚合工程:?
頂層pom.xml所在的模塊不包含業務的空工程(只有一個pom.xml文件)

作用:可以將多個編組通過聚合實現對所包含的模塊進行同步構建。并且,某個模塊發生變化時,其他模塊若是與這個模塊關聯,就要同步更新,此時可以用聚合工程來批量解決。


三、聚合工程實現步驟?

(1)創建一個新的模塊:父工程(管理工程),將其打包方式設置為 pom


(2)在父工程下新建模塊


?(3)idea自動識別、并添加了相關信息

?


(4)至此,其實一個聚合工程就完成了。我們再多new幾個模塊試試



四、父工程統一管理版本

在父工程中的 dependencyManagement 標簽里引入依賴,這樣表示標簽下面都是可選依賴,子模塊可以按需要引入,并且不需要再指定版本。如:

    <dependencyManagement><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.32</version></dependency></dependencies></dependencyManagement>

并且,在父工程可以引入一些pom文件,用來統一指定框架使用的版本,減少版本沖突?

如:指定springboot相關的依賴都進行統一的版本控制,子模塊引入springboot相關的依賴時,都不需要引入版本號了

<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.4.2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>


并且,還可以在父工程統一更換遠程倉庫:

<repositories><repository><id>central</id>    <!--表示要替換中央倉庫--><name>aliyun maven</name> <!--對該倉庫的描述,非必須--><url>https://maven.aliyun.com/repository/central</url> <!--倉庫地址--><layout>default</layout> <!--遵循 Maven 的標準目錄結構:g a v 形式--><releases><enabled>true</enabled> <!-- 表示允許從該倉庫獲取發布版本(releases版本)--></releases><snapshots><enabled>true</enabled> <!--表示允許從該倉庫獲取快照版本(snapshots版本)--></snapshots></repository></repositories>



五、編譯打包

將maven打包成jar文件

    <artifactId>demo-starter</artifactId><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>

    <build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.0.RELEASE</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903053.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903053.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903053.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端職業發展:如何規劃前端工程師的成長路徑?

前端職業發展:如何規劃前端工程師的成長路徑? 大家好,我是全棧老李。今天咱們聊聊前端工程師的職業發展路徑,這個話題看似簡單,實則暗藏玄機。就像打游戲升級一樣,你得知道下一關是什么,才能提前準備裝備和技能點。 前端之路 一般我們從一個新手到大神,普遍需要經過…

【星海出品】分布式存儲數據庫etcd

etcd 數據庫由 CoreOS 公司創建。 https://github.com/etcd-io/etcd api信息 https://etcd.io/docs/v3.5/dev-guide/api_reference_v3/ etcdctl --help etcd 最初由 CoreOS 公司開發&#xff0c;作為其核心項目之一。 CoreOS 成立于 2013 年&#xff0c;專注于容器化技術&#…

2025新版修復蛇年運勢測試風水起名系統源碼

2025新版修復蛇年運勢測試風水起名系統源碼 通過網盤分享的文件&#xff1a;2025xbfsysweb.rar 鏈接: https://pan.baidu.com/s/1r1MOkJJJMj9s9nQX_GzI3Q 提取碼: 9weh 備用下載地址&#xff1a;http://pan.1234f.com:5212/s/JK1uw

Vue3 Pinia

一、Pinia 核心概念 Pinia 是 Vue3 官方推薦的狀態管理庫&#xff0c;相比 Vuex 4&#xff0c;具有以下優勢&#xff1a; 更簡潔的 API&#xff08;移除 mutations&#xff09; 完整的 TypeScript 支持 支持組合式 API 自動代碼分割 輕量級&#xff08;僅 1KB&#xff09;…

音視頻小白系統入門課-4

本系列筆記為博主學習李超老師課程的課堂筆記&#xff0c;僅供參閱 往期課程筆記傳送門&#xff1a; 音視頻小白系統入門筆記-0音視頻小白系統入門筆記-1音視頻小白系統入門筆記-2音視頻小白系統入門筆記-3 將mp4文件轉換為yuv文件 ffmpeg -i demo.mp4 # 輸入文件-an …

6.2 內容生成與營銷:個性化內容創作與營銷策略優化

隨著消費者對個性化體驗的需求日益增長&#xff0c;傳統的內容創作與營銷方式已難以滿足市場競爭的需要。基于大語言模型&#xff08;LLM&#xff09;與智能代理&#xff08;Agent&#xff09;的技術為企業提供了全新的解決方案&#xff0c;能夠實現高效、精準、規模化的內容生…

kafka課后總結

Kafka是由LinkedIn開發的分布式發布 - 訂閱消息系統&#xff0c;具備高吞吐量、低延遲、可擴展性、持久性、可靠性、容錯性和高并發等特性。其主要角色包括Broker、Topic、Partition、Producer、Consumer、Consumer Group、replica、leader、follower和controller。消息系統中存…

DataStreamAPI實踐原理——計算模型

引入 通過前面我們對于Flink的理解&#xff0c;我們知道它吸收了 Dataflow 的理念&#xff0c;以及此前已有的流處理系統&#xff08;如 S4、Storm、MillWheel&#xff09;的經驗&#xff0c;實現了批流一體化的高效數據處理&#xff0c;并且通過靈活的窗口機制、事件時間與水…

項目筆記1:通用 Service的常見方法

通用 Service 通常封裝了常見的業務邏輯操作&#xff0c;以提高代碼的復用性和可維護性。不同的框架和業務場景下&#xff0c;通用 Service 的方法會有所差異&#xff0c;但一般都會包含一些基本的增刪改查&#xff08;CRUD&#xff09;操作&#xff0c;以下為你詳細介紹&#…

阿里云99機器總是宕機,實測還是磁盤性能差

阿里云99計劃總是宕機&#xff0c;經過反復排查&#xff0c;最終確認還是磁盤性能差。 阿里云99機器使用的磁盤類型是Entry云盤40GiB (2120 IOPS) 按照官方的一些數據&#xff0c;這個磁盤最小iops是1800最大是6000,實際使用中發現&#xff0c;這個6000值很虛&#xff0c;這個…

Fedora 43 計劃移除所有 GNOME X11 相關軟件包

Fedora 43 計劃移除所有 GNOME X11 相關軟件包&#xff0c;這是 Fedora 項目團隊為全面擁抱 Wayland 所做的重要決策。以下是關于此計劃的詳細介紹&#xff1a; 提案內容&#xff1a;4 月 23 日&#xff0c;Neal Gompa 提交提案&#xff0c;建議從 Fedora 軟件倉庫中移除所有 G…

魔幻預言手游》:職業介紹!

在《魔幻預言》手游中&#xff0c;共有武玄、魔魅、劍仙三大核心職業&#xff0c;各具特色且定位鮮明&#xff0c;以下為具體介紹&#xff1a; 一、武玄&#xff08;戰士&#xff09; 核心定位&#xff1a;近戰物理輸出與團隊增益擔當&#xff0c;兼具控制與防御能力。 戰斗風…

精益數據分析(27/126):剖析用戶價值與商業模式拼圖

精益數據分析&#xff08;27/126&#xff09;&#xff1a;剖析用戶價值與商業模式拼圖 在創業和數據分析的領域中&#xff0c;每一次深入學習都是一次成長的契機。今天&#xff0c;我們繼續秉持共同進步的理念&#xff0c;深入研讀《精益數據分析》&#xff0c;剖析用戶價值的…

【SwitchyOmega安裝教程】

目錄 一、插件安裝 1. 下載安裝文件 2. 打開瀏覽器擴展安裝頁面 3. 安裝插件 二、界面詳情 三、配置信息 3.1 設置IP 1、查看IP地址信息 2、批量測試IP是否有效 3、點擊擴展程序&#xff0c;選擇 Proxy SwitchyOmega 4、 點擊選項進行配置 5、配置頁面 一、插件安裝 1…

矯平機終極指南:特殊材料處理、工藝鏈協同與全球供應鏈管理

一、特殊材料矯平&#xff1a;挑戰與創新解決方案 1. 高溫合金&#xff08;如Inconel 718&#xff09;處理 技術難點&#xff1a; 屈服強度高達1100 MPa&#xff0c;傳統矯平力不足 高溫下易氧化&#xff0c;需惰性氣體保護環境 解決方案&#xff1a; 采用雙伺服電機驅動&a…

反事實——AI與思維模型【82】

一、定義 反事實思維模型是一種心理認知模型,它指的是人們在頭腦中對已經發生的事件進行否定,然后構建出一種可能性假設的思維活動。簡單來說,就是思考“如果當時……,那么就會……”的情景。這種思維方式讓我們能夠超越現實的限制,設想不同的可能性和結果,從而對過去的…

Nginx:支持 HTTPS

文章目錄 Nginx 開啟 ssl 以支持 HTTPS1 生成本地證書2 開啟 ssl 以支持 HTTPS3 將 https 的請求轉發給 http 最終的 nginx.conf 如下 Nginx 開啟 ssl 以支持 HTTPS [!IMPORTANT] 在下文中&#xff0c;將采用如下定義。 HTTP端口&#xff1a; 80 HTTPS端口&#xff1a; 443 服務…

[計算機科學#2]:從繼電器到晶體管的電子計算機發展史(龐然大物的進化)

【核知坊】&#xff1a;釋放青春想象&#xff0c;碼動全新視野。 我們希望使用精簡的信息傳達知識的骨架&#xff0c;啟發創造者開啟創造之路&#xff01;&#xff01;&#xff01; 內容摘要&#xff1a;本文講述了20世紀初至1950年代計算機技術的發展歷程…

【ESP32S3】Cache 框圖和操作

ESP32-S3 采用雙核共享 ICache (指令緩存) 和 DCache &#xff08;數據緩存&#xff09; 結構&#xff0c;如下圖所示。以便當 CPU 的指令總線和數據總線同時發起請求時&#xff0c;也可以迅速響應&#xff1a; Cache 的存儲空間與內部存儲空間可以復用。具體為 Internal SRAM0…

wireshark從HEX轉儲導入使用方法

官方資料: https://www.wireshark.org/docs/wsug_html_chunked/ChIOImportSection.html 方法1&#xff1a; 文本文件&#xff0c;純內容導入: ff ff ff ff ff ff 00 00 00 00 5f 0f 08 06 00 01 08 00 06 04 00 01 00 00 00 00 5f 0f 64 01 60 10 00 00 00 00 00 00 64 01 01…