tlias智能學習輔助系統--Maven高級-繼承

目錄

一、打包方式與應用場景

二、父子工程繼承關系

1. 父工程配置

2. 子工程配置

三、自定義屬性與引用屬性

1. 定義屬性

2. 在 dependencyManagement 中引用

3. 子工程中引用

四、dependencyManagement 與 dependencies 的區別

五、項目結構示例

六、小結


在實際開發中,尤其是 Spring Boot 多模塊項目,我們經常會用到 父工程 + 多個子工程 的結構,以統一管理依賴、版本、打包方式等配置。
本文將帶你一步步搞清楚:

  • 多模塊項目的打包方式(jar、war、pom)

  • 父子工程的繼承關系

  • 自定義屬性與引用屬性

  • 依賴管理(dependencyManagement vs dependencies)


一、打包方式與應用場景

Maven 項目的 <packaging> 決定了它的打包類型,不同類型適用場景不同:

打包方式說明場景
jar普通 Java 項目打成 jar 包Spring Boot 項目常用(內嵌 Tomcat 運行)
warWeb 應用打成 war 包部署到外部 Tomcat/Jetty 等服務器
pom聚合工程/父工程,不打包代碼用于統一管理依賴、插件和版本

提示:多模塊項目的父工程一般用 pom 打包。


二、父子工程繼承關系

1. 父工程配置

父工程使用 pom 打包方式,并可繼承 Spring Boot 官方的 spring-boot-starter-parent 作為基礎配置。

父工程 pom.xml 示例:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.10</version><relativePath/> <!-- 從倉庫查找,而不是本地路徑 -->
</parent><groupId>com.itheima</groupId>
<artifactId>tlias-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

2. 子工程配置

子工程需要通過 <parent> 標簽指定父工程信息,這樣可以繼承父工程的依賴和插件配置。

子工程 pom.xml 示例:

<parent><groupId>com.itheima</groupId><artifactId>tlias-parent</artifactId><version>1.0-SNAPSHOT</version><relativePath>../tlias-parent/pom.xml</relativePath>
</parent><groupId>com.itheima</groupId>
<artifactId>tlias-pojo</artifactId>
<version>1.0-SNAPSHOT</version>

注意:

  • 配置了 <parent> 后,groupId 可以省略(會繼承父工程的)。

  • relativePath 用于指定父工程 pom 的相對路徑(不寫會從倉庫中找)。


三、自定義屬性與引用屬性

在父工程中,我們可以用 <properties> 定義版本號等屬性,方便全局統一管理。

1. 定義屬性

<properties><lombok.version>1.18.30</lombok.version><jjwt.version>0.9.1</jjwt.version>
</properties>

2. 在 dependencyManagement 中引用

<dependencyManagement><dependencies><!-- JWT 令牌 --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency></dependencies>
</dependencyManagement>

3. 子工程中引用

<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency>
</dependencies>

優勢:

  • 集中管理版本號,方便升級

  • 保證所有模塊使用相同版本,避免沖突


四、dependencyManagement 與 dependencies 的區別

作用是否直接引入依賴是否統一管理版本子模塊是否需顯式聲明依賴
dependencies? 是? 否? 不需要
dependencyManagement? 否? 是? 需要顯式聲明依賴(無需指定版本)

總結:

  • dependencies:直接聲明依賴,項目立刻可以用。

  • dependencyManagement:只管理版本,不直接引入,子模塊需自己聲明依賴。


五、項目結構示例

tlias-parent  (父工程,packaging=pom)
│── tlias-pojo           (實體模塊)
│── tlias-utils          (工具模塊)
└── tlias-web-management (Web 模塊)
  • tlias-parent

    • 繼承 spring-boot-starter-parent

    • 定義公共依賴版本(properties)

    • 統一管理依賴版本(dependencyManagement)

  • tlias-pojo / tlias-utils / tlias-web-management

    • 繼承父工程

    • 按需添加依賴(無需指定版本)


六、小結

  1. 父工程packaging=pom,繼承 spring-boot-starter-parent,集中管理依賴版本。

  2. 子工程:通過 <parent> 繼承父工程,減少重復配置。

  3. 屬性管理:在父工程 <properties> 定義版本號,全局統一使用。

  4. 依賴管理

    • dependencies:直接引入依賴

    • dependencyManagement:只管理版本,不直接引入

  5. 優勢

    • 版本統一,減少沖突

    • 配置集中,維護方便

    • 模塊化清晰,便于協作

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

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

相關文章

把 AI 押進“小黑屋”——基于 LLM 的隱私對話沙盒設計與落地

標簽&#xff1a;隱私計算、可信執行環境、LLM、沙盒、內存加密、TEE、SGX、Gramine ---- 1. 背景&#xff1a;甲方爸爸一句話&#xff0c;“數據不能出機房” 我們給某三甲醫院做智能問診助手&#xff0c;模型 70 B、知識庫 300 GB。 甲方只給了兩條鐵律&#xff1a; 1. 患者…

Java 大視界 -- Java 大數據在智能教育學習效果評估指標體系構建與精準評估中的應用(394)

Java 大視界 -- Java 大數據在智能教育學習效果評估指標體系構建與精準評估中的應用&#xff08;394&#xff09;引言&#xff1a;正文&#xff1a;一、傳統學習評估的 “數字陷阱”&#xff1a;看不全、說不清、跟不上1.1 評估維度的 “單行道”1.1.1 分數掩蓋的 “學習真相”…

Dubbo 3.x源碼(33)—Dubbo Consumer接收服務調用響應

基于Dubbo 3.1&#xff0c;詳細介紹了Dubbo Consumer接收服務調用響應 此前我們學習了Dubbo Provider處理服務調用請求的流程&#xff0c;現在我們來學習Dubbo Consumer接收服務調用響應流程。 實際上接收請求和接收響應同屬于接收消息&#xff0c;它們的流程的很多步驟是一樣…

棧和隊列:數據結構中的基礎與應用?

棧和隊列&#xff1a;數據結構中的基礎與應用在計算機科學的領域中&#xff0c;數據結構猶如大廈的基石&#xff0c;支撐著各類復雜軟件系統的構建。而棧和隊列作為兩種基礎且重要的數據結構&#xff0c;以其獨特的特性和廣泛的應用&#xff0c;在程序設計的舞臺上扮演著不可或…

服務端配置 CORS解決跨域問題的原理

服務端配置 CORS&#xff08;跨域資源共享&#xff09;的原理本質是 瀏覽器與服務器之間的安全協商機制。其核心在于服務器通過特定的 HTTP 響應頭聲明允許哪些外部源&#xff08;Origin&#xff09;訪問資源&#xff0c;瀏覽器根據這些響應頭決定是否放行跨域請求。以下是詳細…

Unity筆記(五)知識補充——場景切換、退出游戲、鼠標隱藏鎖定、隨機數、委托

寫在前面&#xff1a;寫本系列(自用)的目的是回顧已經學過的知識、記錄新學習的知識或是記錄心得理解&#xff0c;方便自己以后快速復習&#xff0c;減少遺忘。主要是C#代碼部分。十七、場景切換和退出游戲1、場景切換場景切換使用方法&#xff1a; SceneManager.LoadScene()&a…

用 Spring 思維快速上手 DDD——以 Kratos 為例的分層解讀

用 Spring 思維理解 DDD —— 以 Kratos 為參照 ? 在此前的學習工作中&#xff0c;使用的開發框架一直都是 SpringBoot&#xff0c;對 MVC 架構幾乎是肌肉記憶&#xff1a;Controller 接請求&#xff0c;Service 寫業務邏輯&#xff0c;Mapper 操作數據庫&#xff0c;這套套路…

docspace|Linux|使用docker完全離線化部署onlyoffice之docspace文檔協作系統(全網首發)

一、 前言 書接上回&#xff0c;Linux|實用工具|onlyoffice workspace使用docker快速部署&#xff08;離線和定制化部署&#xff09;-CSDN博客&#xff0c;如果是小公司或者比如某個項目組內部使用&#xff0c;那么&#xff0c;使用docspace這個文檔協同系統是非常合適的&…

【教程】如何高效提取胡蘿卜塊根形態和顏色特征?

胡蘿卜是全球不可或缺的健康食材和重要的經濟作物&#xff0c; 從田間到餐桌&#xff0c;從鮮食到深加工&#xff0c;胡蘿卜在現代人的飲食和健康中扮演著極其重要的角色&#xff0c;通過量化塊根形態和色澤均勻性&#xff0c;可實現對高產優質胡蘿卜品種的快速篩選。工具/材料…

Python初學者筆記第二十四期 -- (面向對象編程)

第33節課 面向對象編程 1. 面向對象編程基礎 1.1 什么是面向對象編程面向過程&#xff1a;執行者 耗時 費力 結果也不一定完美 面向對象&#xff1a;指揮者 省時 省力 結果比較完美面向對象編程(Object-Oriented Programming, OOP)是一種編程范式&#xff0c;它使用"對象&…

Go 語言 里 `var`、`make`、`new`、`:=` 的區別

把 Go 語言 里 var、make、new、: 的區別徹底梳理一下。1?? var 作用&#xff1a;聲明變量&#xff08;可以帶初始值&#xff0c;也可以不帶&#xff09;。語法&#xff1a; var a int // 聲明整型變量&#xff0c;默認值為 0 var b string // 默認值 ""…

計算機網絡---IP(互聯網協議)

一、IP協議概述 互聯網協議&#xff08;Internet Protocol&#xff0c;IP&#xff09;是TCP/IP協議族的核心成員&#xff0c;位于OSI模型的網絡層&#xff08;第三層&#xff09;&#xff0c;負責將數據包從源主機傳輸到目標主機。它是一種無連接、不可靠的協議&#xff0c;提供…

DataFun聯合開源AllData社區和開源Gravitino社區將在8月9日相聚數據治理峰會論壇

&#x1f525;&#x1f525; AllData大數據產品是可定義數據中臺&#xff0c;以數據平臺為底座&#xff0c;以數據中臺為橋梁&#xff0c;以機器學習平臺為中層框架&#xff0c;以大模型應用為上游產品&#xff0c;提供全鏈路數字化解決方案。 ?杭州奧零數據科技官網&#xff…

【工具】通用文檔轉換器 推薦 Markdown 轉為 Word 或者 Pdf格式 可以批量或者通過代碼調用

【工具】通用文檔轉換器 推薦 可以批量或者通過代碼調用 通用文檔轉換器 https://github.com/jgm/pandoc/ Pandoc - index 下載地址 https://github.com/jgm/pandoc/releases 使用方法: 比如 Markdown 轉為 Word 或者 Pdf格式 pandoc -s MANUAL.txt -o example29.docx …

【UEFI系列】Super IO

文章目錄一、什么是Super IO二、Super IO的作用常見廠商三、邏輯設備控制如何訪問SIO邏輯設備的配置寄存器具體配置數值四、硬件監控&#xff08;hardware monitor&#xff09;一、什么是Super IO Super Input/Output超級輸入輸出控制器。 通過LPC&#xff08;low pin count&a…

飛算 JavaAI 2.0.0 測評:自然語言編程如何顛覆傳統開發?

一、前言 在AI技術高速發展的今天&#xff0c;編程方式正在經歷一場革命。傳統的“手寫代碼”模式逐漸被AI輔助開發取代&#xff0c;而飛算JavaAI 2.0.0的推出&#xff0c;更是讓自然語言編程成為現實。 作為一名長期使用Java開發的程序員&#xff0c;我決定深度體驗飛算Java…

Dubbo + zk 微服務

一、安裝zk注冊中心 win版本&#xff1a;windows環境下安裝zookeeper教程詳解&#xff08;單機版&#xff09;-CSDN博客 linux版本&#xff1a; 二、服務提供方搭建 引入dubbo和zk依賴 提供接口 使用注解方式實現接口級注冊到zk&#xff0c;而springcloud是將服務注冊到注冊…

聆思duomotai_ap sdk適配dooiRobot

一、說明 1、duomotai_ap介紹 duomotai_ap是一個針對多模態開發板&#xff08;如 CSK6-MIX 開發板&#xff09;的大模型 AI 開發套件 SDK&#xff0c;主要用于開發語音、視覺等多模態 AI 應用。 2、dooiRobot介紹 基于Doly 機器人的經典外觀設計&#xff0c;采用聆思CSK6011A…

Photoshop軟件打開WebP文件格的操作教程

Photoshop軟件打開WebP文件格的操作教程&#xff0c;好吧&#xff0c;這是英文原版&#xff1a; Photoshop 23.2 原生支持 WebP 格式&#xff0c;無需插件即可打開、編輯和保存 WebP 文件。用戶可通過“文件 > 另存為副本”選擇 WebP 格式&#xff0c;調整無損/有損壓縮及質…

【數據結構】——順序表鏈表(超詳細解析!!!)

目錄一. 前言二. 順序表1. 順序表的特點2. 代碼實現三. 鏈表1. 單向鏈表代碼實現2.雙向鏈表代碼實現四. 順序表與鏈表的區別總結一. 前言 順序表和鏈表是最基礎的兩種線性表實現方式。它們各有特點&#xff0c;適用于不同的應用場景。本文將詳細介紹這兩種數據結構的實現原理、…