最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot父子工程POM依賴關(guān)系舉例詳解

 更新時(shí)間:2025年08月06日 11:33:56   作者:TracyCoder123  
這篇文章主要介紹了Spring?Boot父子工程POM依賴關(guān)系的相關(guān)資料,Spring Boot父子工程通過(guò)Maven繼承機(jī)制實(shí)現(xiàn)統(tǒng)一版本、依賴和插件管理,模塊化開發(fā)與代碼復(fù)用,提升項(xiàng)目可維護(hù)性與效率,需要的朋友可以參考下

1. 父子工程概述

Spring Boot 父子工程是一種多模塊項(xiàng)目結(jié)構(gòu),通過(guò) Maven 的繼承機(jī)制來(lái)管理依賴關(guān)系。這種結(jié)構(gòu)具有以下優(yōu)勢(shì):

  • 統(tǒng)一版本管理:所有子模塊使用相同的依賴版本
  • 代碼復(fù)用:公共代碼可以提取到獨(dú)立模塊
  • 模塊化開發(fā):不同功能模塊獨(dú)立開發(fā)和維護(hù)
  • 依賴隔離:避免循環(huán)依賴,明確模塊職責(zé)

2. 項(xiàng)目結(jié)構(gòu)

spring-boot-parent/
├── parent-pom.xml          # 父工程POM
├── common/                 # 公共工具模塊
│   └── pom.xml
├── api/                    # API接口模塊
│   └── pom.xml
├── service/                # 業(yè)務(wù)服務(wù)模塊
│   └── pom.xml
└── web/                    # Web應(yīng)用啟動(dòng)模塊
    └── pom.xml

3. 父工程 POM 詳解

3.1 基本信息配置

<groupId>com.example</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>  <!-- 關(guān)鍵:父工程必須是pom類型 -->

3.2 子模塊聲明

<modules>
    <module>common</module>
    <module>api</module>
    <module>service</module>
    <module>web</module>
</modules>

3.3 版本統(tǒng)一管理

<properties>
    <spring-boot.version>3.2.0</spring-boot.version>
    <spring-cloud.version>2023.0.0</spring-cloud.version>
    <mysql.version>8.0.33</mysql.version>
    <!-- 其他版本號(hào)... -->
</properties>

3.4 依賴管理 (dependencyManagement)

重要概念dependencyManagement 不會(huì)直接引入依賴,只是管理版本號(hào)。

<dependencyManagement>
    <dependencies>
        <!-- Spring Boot 依賴管理 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>  <!-- 導(dǎo)入Spring Boot的依賴管理 -->
        </dependency>
        
        <!-- 自定義依賴版本管理 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        
        <!-- 內(nèi)部模塊依賴管理 -->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

3.5 公共依賴 (dependencies)

所有子模塊都會(huì)繼承這些依賴:

<dependencies>
    <!-- 所有子模塊都會(huì)自動(dòng)包含這些依賴 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

3.6 插件管理 (pluginManagement)

<build>
    <pluginManagement>
        <plugins>
            <!-- Spring Boot Maven Plugin -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

4. 子模塊 POM 詳解

4.1 繼承父工程

<parent>
    <groupId>com.example</groupId>
    <artifactId>spring-boot-parent</artifactId>
    <version>1.0.0</version>
    <relativePath>../parent-pom.xml</relativePath>
</parent>

4.2 模塊特有依賴

<dependencies>
    <!-- 依賴其他子模塊 -->
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>common</artifactId>
        <!-- 不需要指定版本,由父工程管理 -->
    </dependency>
    
    <!-- 依賴外部庫(kù) -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!-- 不需要指定版本,由父工程管理 -->
    </dependency>
</dependencies>

5. 依賴關(guān)系層次

5.1 依賴傳遞關(guān)系

web (啟動(dòng)模塊)
├── service (業(yè)務(wù)服務(wù))
│   ├── api (API接口)
│   │   └── common (公共工具)
│   └── common (公共工具)
└── common (公共工具)

5.2 各模塊職責(zé)

模塊職責(zé)主要依賴
common公共工具類、常量、異常hutool、fastjson、validation
apiAPI接口定義、DTOcommon、swagger
service業(yè)務(wù)邏輯、數(shù)據(jù)訪問(wèn)api、common、mybatis、redis
web應(yīng)用啟動(dòng)、控制器service、actuator、devtools

6. 關(guān)鍵概念解析

6.1 dependencyManagement vs dependencies

  • dependencyManagement:版本管理,不引入依賴
  • dependencies:實(shí)際引入依賴
<!-- 父工程:只管理版本 -->
<dependencyManagement>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
</dependencyManagement>

<!-- 子模塊:實(shí)際引入依賴 -->
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!-- 版本由父工程管理 -->
    </dependency>
</dependencies>

6.2 繼承機(jī)制

子模塊自動(dòng)繼承父工程的:

  • 公共依賴
  • 版本管理
  • 插件配置
  • 屬性定義

6.3 依賴作用域 (Scope)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>  <!-- 僅測(cè)試時(shí)使用 -->
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>  <!-- 不會(huì)傳遞給依賴方 -->
</dependency>

7. 最佳實(shí)踐

7.1 版本管理

  • 所有版本號(hào)統(tǒng)一在父工程 properties 中定義
  • 使用 ${property.name} 引用版本號(hào)
  • 定期更新依賴版本

7.2 模塊劃分

  • 按功能職責(zé)劃分模塊
  • 避免循環(huán)依賴
  • 保持模塊獨(dú)立性

7.3 依賴管理

  • 公共依賴放在父工程
  • 模塊特有依賴放在子模塊
  • 合理使用依賴作用域

7.4 構(gòu)建配置

  • 只有啟動(dòng)模塊配置 spring-boot-maven-plugin
  • 統(tǒng)一編譯和測(cè)試插件版本
  • 配置合適的打包策略

8. 常見問(wèn)題

8.1 依賴沖突

  • 使用 mvn dependency:tree 查看依賴樹
  • 在父工程中排除沖突依賴
  • 使用 exclusions 標(biāo)簽排除傳遞依賴

8.2 版本不一致

  • 檢查父工程版本管理是否完整
  • 確保子模塊正確繼承父工程
  • 驗(yàn)證 relativePath 配置是否正確

8.3 構(gòu)建失敗

  • 檢查模塊依賴關(guān)系是否正確
  • 驗(yàn)證插件配置是否兼容
  • 確認(rèn) Java 版本設(shè)置一致

9. 總結(jié)

Spring Boot 父子工程通過(guò) Maven 的繼承機(jī)制實(shí)現(xiàn)了:

  • 統(tǒng)一管理:版本、依賴、插件統(tǒng)一管理
  • 模塊化:功能模塊獨(dú)立開發(fā)和維護(hù)
  • 復(fù)用性:公共代碼和配置復(fù)用
  • 可維護(hù)性:清晰的依賴關(guān)系和模塊職責(zé)

這種結(jié)構(gòu)特別適合中大型項(xiàng)目的開發(fā)和維護(hù),能夠有效提高開發(fā)效率和代碼質(zhì)量。

到此這篇關(guān)于Spring Boot父子工程POM依賴關(guān)系的文章就介紹到這了,更多相關(guān)SpringBoot父子工程POM依賴關(guān)系內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于HTTP協(xié)議實(shí)現(xiàn)簡(jiǎn)單RPC框架的方法詳解

    基于HTTP協(xié)議實(shí)現(xiàn)簡(jiǎn)單RPC框架的方法詳解

    RPC全名(Remote?Procedure?Call),翻譯過(guò)來(lái)就是遠(yuǎn)程過(guò)程調(diào)用,本文將為大家介紹如何基于HTTP協(xié)議實(shí)現(xiàn)簡(jiǎn)單RPC框架,感興趣的小伙伴可以了解一下
    2023-06-06
  • Spring 單元測(cè)試中如何進(jìn)行 mock的實(shí)現(xiàn)

    Spring 單元測(cè)試中如何進(jìn)行 mock的實(shí)現(xiàn)

    這篇文章主要介紹了Spring 單元測(cè)試中如何進(jìn)行 mock的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 云IDE:Eclipse Che:Eclipse下一代IDE(推薦)

    云IDE:Eclipse Che:Eclipse下一代IDE(推薦)

    這篇文章主要介紹了云IDE:Eclipse Che:Eclipse下一代IDE,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java對(duì)數(shù)器驗(yàn)證算法詳解

    Java對(duì)數(shù)器驗(yàn)證算法詳解

    這篇文章主要介紹了Java對(duì)數(shù)器驗(yàn)證算法,Java對(duì)數(shù)函數(shù)的計(jì)算方法非常有問(wèn)題,然而在API中卻有驚人的誤差。但是假如運(yùn)用了以下的方法,用Java處理數(shù)字所碰到的小麻煩就可以輕而易舉的解決了
    2023-04-04
  • Java開發(fā)人員最常犯的10個(gè)錯(cuò)誤

    Java開發(fā)人員最常犯的10個(gè)錯(cuò)誤

    這篇文章主要介紹了Java開發(fā)人員最常犯的10個(gè)錯(cuò)誤,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例

    MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例

    這篇文章主要介紹了MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • Java實(shí)現(xiàn)常用加密算法SM3的方式及測(cè)試代碼

    Java實(shí)現(xiàn)常用加密算法SM3的方式及測(cè)試代碼

    這篇文章介紹了SM3算法在Java中的實(shí)現(xiàn)方式,SM3算法是一種密碼散列函數(shù)標(biāo)準(zhǔn),主要用于商用密碼應(yīng)用中的數(shù)字簽名和驗(yàn)證、消息認(rèn)證碼生成和驗(yàn)證、隨機(jī)數(shù)生成等,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Mybatis之@MapKey的實(shí)現(xiàn)

    Mybatis之@MapKey的實(shí)現(xiàn)

    本文介紹了Mybatis中@MapKey注解的使用場(chǎng)景與效果,包含使用@MapKey和不使用@MapKey注解的區(qū)別,然后通過(guò)源碼解析產(chǎn)生各種結(jié)果的原因,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-09-09
  • 解決Spring Cloud Feign 請(qǐng)求時(shí)附帶請(qǐng)求頭的問(wèn)題

    解決Spring Cloud Feign 請(qǐng)求時(shí)附帶請(qǐng)求頭的問(wèn)題

    這篇文章主要介紹了解決Spring Cloud Feign 請(qǐng)求時(shí)附帶請(qǐng)求頭的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Springboot?maven項(xiàng)目配置文件覆蓋問(wèn)題的處理

    Springboot?maven項(xiàng)目配置文件覆蓋問(wèn)題的處理

    這篇文章主要介紹了Springboot?maven項(xiàng)目配置文件覆蓋問(wèn)題的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評(píng)論

崇义县| 葫芦岛市| 巴塘县| 历史| 曲阳县| 祁门县| 汉中市| 桃源县| 郁南县| 蒲江县| 临颍县| 隆回县| 平原县| 洞口县| 滁州市| 南汇区| 建阳市| 苗栗市| 昌吉市| 陇南市| 卓尼县| 青冈县| 洮南市| 盖州市| 大同市| 土默特左旗| 公主岭市| 阿坝| 井研县| 石楼县| 左贡县| 古田县| 象州县| 安康市| 平舆县| 阜平县| 漳州市| 湟源县| 文成县| 亳州市| 仪陇县|