欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1. 父子工程概述

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

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

2. 項目結(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)用啟動模塊
    └── 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>
    <!-- 其他版本號... -->
</properties>

3.4 依賴管理 (dependencyManagement)

重要概念dependencyManagement 不會直接引入依賴,只是管理版本號。

<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)

所有子模塊都會繼承這些依賴:

<dependencies>
    <!-- 所有子模塊都會自動包含這些依賴 -->
    <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>
    
    <!-- 依賴外部庫 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!-- 不需要指定版本,由父工程管理 -->
    </dependency>
</dependencies>

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

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

web (啟動模塊)
├── 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ù)訪問api、common、mybatis、redis
web應(yīng)用啟動、控制器service、actuator、devtools

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

6.1 dependencyManagement vs dependencies

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

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

6.2 繼承機(jī)制

子模塊自動繼承父工程的:

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

6.3 依賴作用域 (Scope)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>  <!-- 僅測試時使用 -->
</dependency>

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

7. 最佳實踐

7.1 版本管理

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

7.2 模塊劃分

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

7.3 依賴管理

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

7.4 構(gòu)建配置

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

8. 常見問題

8.1 依賴沖突

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

8.2 版本不一致

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

8.3 構(gòu)建失敗

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

9. 總結(jié)

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

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

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

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

相關(guān)文章

  • springboot 整合 seata的配置過程

    springboot 整合 seata的配置過程

    本文給大家介紹springboot 整合 seata的配置過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • JavaMail入門教程之創(chuàng)建郵件(2)

    JavaMail入門教程之創(chuàng)建郵件(2)

    這篇文章主要介紹了JavaMail入門教程之創(chuàng)建郵件的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • java中通過網(wǎng)卡名稱獲取IP地址

    java中通過網(wǎng)卡名稱獲取IP地址

    java中通過網(wǎng)卡名稱獲取IP地址,需要的朋友可以參考一下
    2013-04-04
  • Java多態(tài)中動態(tài)綁定原理解析

    Java多態(tài)中動態(tài)綁定原理解析

    這篇文章主要介紹了Java多態(tài)中動態(tài)綁定原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot 任務(wù)調(diào)度動態(tài)設(shè)置方式(不用重啟服務(wù))

    SpringBoot 任務(wù)調(diào)度動態(tài)設(shè)置方式(不用重啟服務(wù))

    這篇文章主要介紹了SpringBoot 任務(wù)調(diào)度 動態(tài)設(shè)置方式(不用重啟服務(wù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java1.7全網(wǎng)最深入HashMap源碼解析

    Java1.7全網(wǎng)最深入HashMap源碼解析

    HashMap 是一個散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。HashMap 實現(xiàn)了 Map 接口,根據(jù)鍵的 HashCode 值存儲數(shù)據(jù),具有很快的訪問速度,最多允許一條記錄的鍵為 nul
    2021-11-11
  • SpringBoot實現(xiàn)重試機(jī)制的四種方案

    SpringBoot實現(xiàn)重試機(jī)制的四種方案

    在分布式系統(tǒng)和微服務(wù)架構(gòu)中,服務(wù)調(diào)用失敗是不可避免的現(xiàn)象,網(wǎng)絡(luò)不穩(wěn)定、服務(wù)過載、臨時故障等因素都可能導(dǎo)致調(diào)用失敗,重試機(jī)制作為一種處理臨時性故障的解決方案,能夠有效提高系統(tǒng)的可用性,需要的朋友可以參考下
    2025-04-04
  • SpringBoot自定義注解之實現(xiàn)AOP切面日志詳解

    SpringBoot自定義注解之實現(xiàn)AOP切面日志詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot自定義注解之實現(xiàn)AOP切面統(tǒng)一打印出入?yún)⑷罩荆闹惺纠a介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • java 中的亂碼問題匯總及解決方案

    java 中的亂碼問題匯總及解決方案

    這篇文章主要介紹了java 中的亂碼問題匯總相關(guān)資料,并附解決方案,出現(xiàn)亂碼問題有編碼與解碼,字節(jié)流與字符流出現(xiàn)亂碼,等其他情況,需要的朋友可以參考下
    2016-11-11
  • JAVA并發(fā)中VOLATILE關(guān)鍵字的神奇之處詳解

    JAVA并發(fā)中VOLATILE關(guān)鍵字的神奇之處詳解

    這篇文章主要給大家介紹了關(guān)于JAVA并發(fā)中VOLATILE關(guān)鍵字的神奇之處的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評論