Maven高級——分模塊設計與開發

目錄

?編輯

分模塊設計與開發

拆分策略

繼承與聚合

版本鎖定

聚合

作用

實現

Maven中繼承與聚合的聯系與區別?

聯系

區別

私服


分模塊設計與開發

將一個大項目拆分成若干個子模塊,方便項目的管理維護,擴展,也方便模塊間的相互引用,資源共享

拆分策略

策略一:按照功能模塊拆分,比如:公共組件、商品模塊、搜索模塊、購物車模塊、訂單模塊等。

策略二:按拆分,比如:公共組件、實體類、控制層、業務層、數據訪問層。

策略三:按照功能模塊 + 層拆分。

繼承與聚合

繼承描述的是兩個工程間的關系,與java中的繼承相似,子工程可以繼承父工程中的配置信息,常見于依賴關系的繼承。

第一步:創建父工程,設置打包方式為pom,并繼承spring-boot-starter-parent

第二步,在子工程中配置繼承關系

在子工程中通過parent標簽來設置繼承關系,來指定當前這個子工程要繼承我們所創建的這個父工程,要指定父工程的坐標,通過relativePath來指定父工程的相對路徑,那如果你不指定,默認的是從本地倉庫或者遠程倉庫來查找,一旦設置了繼承關系,這個組織的名字也會從父工程商繼承下來,所以子工程中配置的groupId是可以省略的

第三步,在父工程中配置各個工程的共有依賴

在子工程中,配置了繼承關系后,坐標中的groupId是可以省略的,因為會自動繼承父工程。

若父子工程都配置了同一個依賴的不同版本,以子工程為準

版本鎖定

在maven中,可以在父工程的pom文件中通過<dependencyManagement>來同意管理依賴版本

<dependencies>是直接依賴,在父工程配置了依賴,子工程會直接繼承下來

<dependencyManagement>是統一管理依賴版本,不會直接依賴,還需要在子工程中引入所需依賴(無需指定版本)

聚合

將多個模塊組織成一個整體,同時進行項目的構建

聚合工程師一個不具有業務功能的“空”工程,有且僅有一個pom文件。tlias-parent既可以作為父工程,也可以作為聚合工程,通常來說父工程和聚合工程都是同一個工程,

作用

聚合的作用就是快速構建項目,在構建項目的過程中,我們是不需要考慮工程間的依賴關系的,我們直接在這個聚合工程上進行操作就可以了,比如我們要安裝,我們直接在聚合工程上安裝,那么下面的這些個子模塊都會全部的進行安裝

實現

在Maven中可以通過<modules>設置當前聚合工程所包含的子模塊名稱

Maven在執行聚合操作時,會自動的根據模塊之間的依賴關系來設置構建的順序,與我們在聚合工程中所配置的這個模塊的順序是沒有關系的

如果我們配置好了聚合關系之后,指定了這個聚合工程要聚合哪些模塊之后,在右側的Maven面板中只會展示這個tlias-parent,緊接著將它展開才會看到他里面聚合的其他模塊

接下來我們要進行操作的時候就可以直接在聚合工程里進行操作,0比如要進行clean清理,就直接在聚合工程中進行清理

Maven中繼承與聚合的聯系與區別?

聯系

都屬于設計型模塊,打包方式都位pom,不用寫任何的Java代碼,常將兩種關系制作到同一個pom文件中

區別

繼承可以用來簡化依賴的配置,我們可以將子工程上公共的這部分依賴統一的抽取到父工程中,所以可以簡化依賴的配置,也可以管理依賴的版本,而在配置繼承關系的時候,它不是在父工程商配置,而是在子工程中配置他們之間的繼承關系,這是繼承

對于聚合來說,它的作用是為了快速構建項目,而不用去處理繁瑣的模塊之間的依賴關系,而對于這一層聚合關系來說,而它是在父工程上來配置當前這個聚合工程要聚合哪些模塊的

私服

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

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

相關文章

線程池的七個參數設計源于對高并發場景下資源管理、系統穩定性與性能平衡的深刻洞察

?? 一、核心參數設計目標與解決的問題 參數設計目標解決的核心問題典型取值策略corePoolSize&#xff08;核心線程數&#xff09;維持常備線程資源避免頻繁創建/銷毀線程的開銷&#xff0c;提高響應速度CPU密集型&#xff1a;N_cpu 1 IO密集型&#xff1a;2 N_cpu maximum…

少樣本學習在計算機視覺中的應用:原理、挑戰與最新突破

在深度學習的黃金時代&#xff0c;大量標注數據似乎成了算法性能的前提。然而在許多現實場景中&#xff0c;如醫療圖像分析、工業缺陷檢測、遙感識別、甚至個性化視覺服務中&#xff0c;高質量、成規模的標注數據往往昂貴、稀缺&#xff0c;甚至難以獲得。這種場景正是**少樣本…

github在線圖床

github做的圖床&#xff0c;原理是利用github API實現的在線上傳&#xff0c;就一個頁面&#xff0c;css和js都是集成在頁面&#xff0c;相關信息保存在瀏覽器緩存中&#xff0c;配置一下即可使用 效果演示&#xff1a; github在線圖床 打開網站填寫下列信息 github用戶名&a…

css-多條記錄,自動換行與自動并行布局及gap兼容

實現這樣的內容布局&#xff0c;當一段文案長度超過當前行的時候自動占據一行&#xff0c;其他相近的不超過一行自動放在一行間隔隔開 關鍵實現原理&#xff1a; 彈性布局容器&#xff1a; .history-container {display: flex;flex-wrap: wrap;gap: 12px; }使用flex-wrap: wr…

Redis 哨兵模式部署--docker版本

redis sentinel 簡介 Redis Sentinel 是 Redis 官方提供的高可用&#xff08;HA&#xff09;解決方案&#xff0c;用于監控主從架構中的故障并自動完成故障轉移。當主節點&#xff08;Master&#xff09;宕機時&#xff0c;Sentinel 能自動選舉新的主節點&#xff0c;通知從節…

Java線程中的守護線程

Java線程中的守護線程在Java中&#xff0c;守護線程&#xff08;Daemon Thread&#xff09;是一種特殊類型的線程&#xff0c;它在后臺運行&#xff0c;主要用于支持其他線程&#xff08;如用戶線程&#xff09;的工作。守護線程不會阻止JVM&#xff08;Java虛擬機&#xff09;…

Flink-狀態恢復-isRestore分析

isRestored 方法返回值依賴 restoredCheckpointId 是否為空&#xff1a;restoredCheckpointId 在算子狀態句柄&#xff08;StreamOperatorStateHandler&#xff09;中從 StreamOperatorStateContext 獲取并賦值給 StateInitializationContext&#xff08;該 context 就是 initi…

rk3128 emmc顯示剩余容量為0

機器emmc 容量顯示異常&#xff0c;顯示剩余容量為0&#xff0c;這時候做了一個讓 系統不檢測GPP分區部分的操作&#xff0c;此問題才得以解決&#xff0c;如下&#xff1a; system/vold/DirectVolume.cpp -33,6 33,8 #include "VolumeManager.h"#include "Re…

WebAssembly國際化多語種支持

icu linux數據裁剪 先linux編譯出所有的工具 mkdir build && cd build ../configure --prefix=$(pwd)/build_wasm/install --enable-static --disable-shared --with-data-packaging=static --enable-tools=yes --enable-extras=yes --e…

Ubuntu 安裝 etcd 與 etcd-cpp-apiv3

目錄 安裝 etcd 安裝 etcd-cpp-apiv3 安裝 etcd sudo apt update sudo apt install etcd-server sudo apt install -y etcd-client 在 /etc/default/etcd 配置文件中配置&#xff0c;下面示例是單個服務器內進程之間交換信息且只有一個etcd節點。 #節點名稱&#xff0c;默認為…

Spring Boot 集成 GeoTools 詳解

目錄 一、概述二、集成優勢三、集成步驟四、使用場景五、案例&#xff1a;周邊設施查詢系統六、注意事項七、總結 一、概述 什么是 Spring Boot&#xff1f; Spring Boot 是由 Pivotal 團隊開發的基于 Spring 框架的快速開發工具&#xff0c;它通過自動配置、起步依賴等特性簡…

基礎知識:mysql-connector-j依賴

mysql-connector-j 是 MySQL 官方提供的 Java 數據庫連接驅動&#xff08;JDBC Driver&#xff09;&#xff0c;用于在 Java 應用程序中連接和操作 MySQL 數據庫。它是 MySQL 8.0 版本之后的標準驅動名稱&#xff0c;替代了舊的 mysql-connector-java。 一、新舊版本對比 驅動…

vscode remote-ssh 拓展免密訪問 linux虛擬機

前置步驟&#xff0c;在linux安裝好ssh并且win可以使用密碼登錄linux sudo apt install openssh-server -y 在win上檢查密鑰是否存在 檢查公鑰和私鑰cat ~/.ssh/id_rsa.pubcat ~/.ssh/id_rsa 如果不存在&#xff0c;重新生成 ssh-keygen -t rsa -b 4096 重新執行 cat ~/.ssh/…

動手學深度學習-學習筆記【二】(基礎知識)

文章目錄 1、概述2、課程學習2.1、深度學習介紹2.2、安裝2.3、數據操作2.4、數據預處理2.5、線性代數2.6、微積分2.7、自動微分2.8、概率2.8.1、基本概率論2.8.2、處理多個隨機變量2.8.3、期望和方差 2.9、查閱文檔 1、概述 本篇博客用來記錄我學習深度學習的學習筆記&#xf…

瑞盟MS4554N/MS4554N1雙向電平轉換器重新定義混合電壓系統連接

在電子設備的“心臟”——電路系統里&#xff0c;不同功能模塊常因性能需求差異&#xff0c;采用差異化的供電電壓&#xff1a;傳感器用1.8V低功耗運行&#xff0c;主控芯片選3.3V高效處理&#xff0c;傳統接口保留5V穩定傳輸……當這些“電壓孤島”需要互聯時&#xff0c;一個…

二叉樹題解——驗證二叉搜索樹【LeetCode】后序遍歷

98. 驗證二叉搜索樹 一、算法邏輯&#xff08;逐步通順講解每一步思路&#xff09; 這段算法使用了一種遞歸的思路&#xff1a; 每個節點返回它所在子樹的 最小值和最大值&#xff0c;并在返回的過程中檢查 BST 的合法性。 ? 1?? 定義遞歸函數 dfs(node)&#xff0c;其含…

Flink-Source算子點位提交問題(Earliest)

背景 最近在做 Flink 任務數據源切換時遇到 offset 消費問題&#xff0c;遂寫篇文章記錄下來。 切換時只修改了 source 算子的 topic&#xff0c;uid 等其他信息保持不變&#xff1a; 發布時&#xff0c;發現算子的消費者點位重置為earliest&#xff0c;導致消息積壓。消息積…

如何錄制帶備注的演示文稿(LaTex Beamer + Pympress)

參考文獻&#xff1a; Pympress 官網Avidemux 官網Audacity 官網FFmpeg 官網2025年度25大視頻剪輯軟件推薦2025最新音頻降噪軟件盤點&#xff0c;從入門到專業的6個高效工具如何用一段音頻替換mp4視頻格式的原有音頻&#xff1f;免費簡單易用的視頻剪切編輯工具—AvidemuxFFmp…

VS Code 的 Copilot Chat 擴展程序

安裝與啟用 Copilot Chat 擴展 在 VS Code 中打開擴展市場&#xff08;快捷鍵 CtrlShiftX 或點擊左側活動欄的擴展圖標&#xff09;。搜索“GitHub Copilot Chat”&#xff0c;點擊安裝。安裝完成后需登錄 GitHub 賬戶并授權 Copilot 權限。確保已訂閱 GitHub Copilot 服務&am…

bash 腳本比較 100 個程序運行時間,精確到毫秒,腳本

腳本如下&#xff1a; #!/bin/bash# 設置測試次數 NUM_TESTS100 # 設置要測試的程序路徑 PROGRAM"./your_program" # 替換為你的程序路徑 # 設置程序參數&#xff08;如果沒有參數則留空&#xff09; ARGS"" # 例如: "input.txt output.txt"#…