【JavaWeb后端學習筆記】Maven項目管理

Maven

  • 1、分模塊設計
  • 2、Maven繼承
    • 2.1 繼承關系
    • 2.2 版本鎖定
  • 3、Maven聚合
  • 4、聚合與繼承的關系

1、分模塊設計

如果一個項目中含有大量的功能模塊。可以考慮將這些功能分模塊設計,逐一進行開發。例如將公共類可以定義在一個項目中,將通用工具類也放在一個項目中,其他業務模塊需要使用這些類或者工具,只需要在pom文件中引入它們的依賴坐標。

<dependencies><dependency><groupId>組織ID</groupId><artifactId>項目</artifactId><version>版本</version></dependency>...<dependency><groupId>組織ID</groupId><artifactId>項目</artifactId><version>版本</version></dependency>
</dependencies>

2、Maven繼承

2.1 繼承關系

在一個大型項目中,子模塊非常多,如果這些子模塊都需要一個共同的依賴,那么可以給這些子模塊的父工程的pom文件中加入這項依賴,子模塊中就不需要再加這個依賴了。這是因為子模塊繼承了父工程的pom文件中的依賴。

Maven繼承的作用就是簡化依賴配置,統一管理依賴;

指定繼承關系,需要在子工程的pom文件中加入

<parent><!-- 父工程坐標 2.3.3--><groupId>組織ID</groupId><artifactId>項目</artifactId><version>版本</version><relativePath>父工程pom文件相對路徑</relativePath>
</parent>

父工程需要指定打包方式為pom。在父工程pom文件中加:

<packaging>pom</packaging>

注意,如果父工程與子工程都引入了同一個依賴的不同版本,以子工程的為準。

2.2 版本鎖定

在Maven中,可以在父工程的pom文件中通過dependencyManagement標簽來統一管理依賴版本。

例如在一個大型項目中,有部分子模塊引入了同一個依賴,當要改變依賴版本時,則需要在所有子模塊中查找是否引入了這個依賴,這個過程相當繁瑣。這時就可以通過Maven的版本鎖定來解決這個問題。

子模塊引入依賴時不指定版本,只需指定groupId和artifactId。把版本交給父工程管理。
在父工程中使用dependencyManagement標簽管理版本:

<dependencyManagement><dependencies><dependency><groupId>組織ID</groupId><artifactId>項目</artifactId><version>指定版本</version> </dependency>...</dependencies>
</dependencyManagement>

dependencyManagement標簽只會管理依賴版本,不會直接把依賴加入進來。

自定義屬性與屬性引用
自定義屬性與屬性引用方便集中統一管理依賴版本。
通過properties標簽自定義屬性:

<!-- 自定義屬性 -->
<properties><jjwt.version>0.9.1</jjwt.version><lombok.version>1.18.24</lombok.version>
</properties>

通過${…}引用屬性:

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jwtt.version}</version> 
</dependency>

3、Maven聚合

在分模塊開發時,如果需要打包一個項目,那么這個項目依賴的其他子項目需要先安裝在Maven本地,父工程也需要安裝在本地,再對此項目進行打包操作。這個操作比較復雜。所以Maven聚合實現一鍵構建,一鍵打包,一鍵運行。

聚合,也就是將多個模塊組織成一個整體,同時進行項目構建。

聚合工程:一個不具有業務功能的“空”工程(有且僅有一個pom文件)。一般父工程會同時起到聚合工程的作用。
聚合工程的作用就是快速構建項目,無需根據依賴關系手動構建,直接在聚合工程上構建即可。

Maven中通過modules標簽設置當前聚合工程所包含的子模塊名稱。

<!--- 聚合 --->
<modules><module> 子模塊相對路徑 </module><module>../prj_utils</module><module>../prj_common</module>...
</modules>

4、聚合與繼承的關系

  1. 作用:
    • 聚合用于快速構建項目
    • 繼承用于簡化依賴配置,統一管理依賴
  2. 相同點 :
    • 聚合與繼承的pom.xml文件打包方式均為pom,可以將兩種關系制作到同一個pom文件中。
    • 聚合與繼承均屬于設計型模塊,并無實際的模塊內容
  3. 不同點:
    • 聚合是在聚合工程中配置關系,聚合可以感知到參與聚合的模塊有哪些
    • 繼承是在子模塊中配置關系,父模塊無法感知哪些子模塊繼承了自己

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

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

相關文章

HarmonyOS-高級(四)

文章目錄 應用開發安全應用DFX能力介紹HiLog使用指導HiAppEvent &#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f916;HarmonyOS專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2024年12月11日11點18分 應用開發安全 應用隱私保護 隱私聲明彈窗的作…

網絡安全法-網絡運行安全

第三章 網絡運行安全 第一節 一般規定 第二十一條 國家實行網絡安全等級保護制度。網絡運營者應當按照網絡安全等級保護制度的要求&#xff0c;履行下列安全保護義務&#xff0c;保障網絡免受干擾、破壞或者未經授權的訪問&#xff0c;防止網絡數據泄露或者被竊取、篡改&…

論文閱讀:Statistical Comparisons of Classifiers over Multiple Data Sets

論文地址&#xff1a;Statistical Comparisons of Classifiers over Multiple Data Sets (acm.org) 前面在機器學習之Friedman檢驗-CSDN博客 中提到了Friedman檢驗&#xff0c;這里將對這個方法的論文進行詳細的閱讀&#xff0c;以了解其原理。 摘要 盡管用于在單個數據集上比…

【Unity技巧】Unity項目中哪些文件不用管理(.gitignore)

Unity的項目編譯后一般都比較大&#xff0c;動轍幾個G。這里面一般我們只需要把Assets, Packages, ProjectSettings這三個文件夾進行源代碼管理就可以&#xff0c;其他文件就可以通過下面的.gitignore來忽略掉。 .gitignore文件的內容如下&#xff1a; # 將此 .gitignore 文件…

練9:進制轉換

歡迎大家訂閱【藍橋杯Python每日一練】 專欄&#xff0c;開啟你的 Python數據結構與算法 學習之旅&#xff01; 文章目錄 1 進制轉換2 例題分析 1 進制轉換 ①任意制轉為十進制 【示例】 ②十進制轉為任意制 【法一】 【法二】 2 例題分析 題目地址&#xff1a;https:/…

C語言:指針詳解續

一、字符指針變量 我們知道有種指針類型為字符指針(char*)。 #include <stdio.h> int main() {char ch w;char* pch &ch;printf("%c\n", *pch);return 0; } 其實它還有一種使用方式。 #include <stdio.h> int main() {char* pstr "hello…

HarmonyOS-高級(一)

文章目錄 一次開發、多端部署自由流轉 &#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f916;HarmonyOS專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2024年12月09日12點19分 一次開發、多端部署 布局能力 自適應布局 拉伸能力均分能力占比能力縮放…

[DEBUG] pytorch 加速安裝兼容cuda12.6版本(Torch CUDA is not available )

如何使用鏡像源快速安裝兼容 CUDA 12.6 的 PyTorch 在使用 PyTorch 時&#xff0c;有時會遇到 CUDA 版本不兼容的問題。對于 CUDA 12.6&#xff0c;PyTorch 目前尚未直接支持&#xff0c;但可以通過安裝 cu118 版本來兼容。由于 PyTorch 官網下載速度較慢&#xff0c;我們可以…

云計算IaaS-PaaS-SaaS三種服務模式轉至元數據結尾

在當今數字化時代&#xff0c;云計算已經成為推動企業創新與發展的核心力量。而云計算的模型主要有三種&#xff1a;IAAS、PAAS 和 SAAS&#xff0c;它們各自在云計算的龐大體系中扮演著獨特且關鍵的角色&#xff0c;恰似一座大廈的不同樓層&#xff0c;共同構建起強大而靈活的…

【Excel學習記錄】02-單元格格式設置

1.單元格格式工具美化表格 單元格格式位置 選中單元格&#xff0c;右鍵→設置單元格格式 合并居中 跨越合并 字體類型、大小、顏色、填充底紋、邊框 斜線 軟回車&#xff1a;alt enter 格式刷 2.單元格數字格式 格式不影響數值&#xff0c;只是展示形式 日期本質也是數…

【嵌入式系統】第4章 嵌入式最小系統,供電電路,時鐘電路,復位電路,程序下載電路

關注作者了解更多 我的其他CSDN專欄 過程控制系統 工程測試技術 虛擬儀器技術 可編程控制器 工業現場總線 數字圖像處理 智能控制 傳感器技術 嵌入式系統 復變函數與積分變換 單片機原理 線性代數 大學物理 熱工與工程流體力學 數字信號處理 光電融合集成電路…

期權懂|交易個股期權需要注意哪些風險?

期權小懂每日分享期權知識&#xff0c;幫助期權新手及時有效地掌握即市趨勢與新資訊&#xff01; 交易個股期權需要注意哪些風險&#xff1f; 一、交易個股期權需要注意合約到期風險&#xff1a; 需關注到期日&#xff0c;及時平倉或行權&#xff0c;避免合約作廢。二、交易個…

MVC配置文件配置及位置

配置文件位置 默認位置 WEB-INF目錄下&#xff1a;-servlet.xml 指定位置 在web.xml中配置 DispatcherServlet中的contextConfigLocation屬性可以指定配置文件位置 確保配置文件存在于類路徑&#xff08;Resources&#xff09;下 web.xml <?xml version"1.0" …

可視化邏輯表達式編輯器

優質博文&#xff1a;IT-BLOG-CN 一、QueryBuilder介紹 QueryBuilder 是一個用于創建查詢和過濾器的 UI 組件。 QueryBuilder的特點 1、支持的輸入屬性豐富&#xff0c;常見的 字符串&#xff0c;整數&#xff0c;浮點數&#xff0c;布爾類型&#xff0c;日期類型&#xff0…

若依將數據庫更改為SQLite

文章目錄 1. 添加依賴項2. 更新配置文件 application-druid.yml2.1. 配置數據源2.2. 配置連接驗證 3. 更新 MybatisPlusConfig4. 解決 mapper 中使用 sysdate() 的問題4.1. 修改 BaseEntity4.2. 修改 Mapper 5. 更新 YML 配置 正文開始&#xff1a; 前提條件&#xff1a;在您的…

OCP開閉原則

什么是OCP&#xff1f; OCP是軟件七大開發原則當中最基本的一個原則&#xff1a;開閉原則 對什么開&#xff1f;對擴展開放。 對什么閉&#xff1f;對修改關閉。 OCP原則是最核心的&#xff0c;最基本的&#xff0c;其他的六個原則都是為這個原則服務的。 OCP開閉原則的核心是…

Linux下mysql環境的搭建

1.mysql的下載 去MySQL官網下載mysql的linux壓縮包 MySQL :: Download MySQL Community Server 如果下載慢請到網盤中自行下載 通過網盤分享的文件&#xff1a;mysql-8.0.40-1.el7.x86_64.rpm-bundle.tar 鏈接: https://pan.baidu.com/s/1vUJ-VuTwer1nLPT-haQCqw?pwd6342 提…

基于Qwen2-VL模型針對LaTeX OCR任務進行微調訓練 - 多圖推理

基于Qwen2-VL模型針對LaTeX OCR任務進行微調訓練 - 多圖推理 flyfish 基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_LoRA配置如何寫 基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_單圖推理 基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_原模型_單圖推理 基于Q…

圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序,GUI界面。附詳細的運行說明。

圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序&#xff0c;GUI界面。附詳細的運行說明。 目錄 圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序&#xff0c;GUI界面。附詳細的運行說明。預測效果基本介紹程序設計參考資料 預測效果 基本介紹 Matlab基…

設置IMX6ULL開發板的網卡IP的兩種方法(臨時生效和永久有效兩種方法)

設置開發板網卡的IP&#xff0c;有兩種方法。 方法一&#xff1a;臨時生效 第一種方式是臨時設置&#xff0c;只有本次有效&#xff0c;重啟后又要重新設&#xff0c;命令為&#xff1a; ifconfig eth0 192.168.5.9設置成功后可以使用ifconfig命令來查看已設置的 IP 地址。 …