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

Maven中dependencyManagement管理項(xiàng)目依賴項(xiàng)

 更新時(shí)間:2024年01月07日 11:17:15   作者:全棧夢(mèng)想家  
在開發(fā)?Java?項(xiàng)目時(shí),管理和協(xié)調(diào)依賴項(xiàng)的版本號(hào)是一項(xiàng)重要而繁瑣的任務(wù),本文主要介紹了Maven中dependencyManagement管理項(xiàng)目依賴項(xiàng),具有一定的參考價(jià)值,感興趣的可以了解一下

介紹

在開發(fā) Java 項(xiàng)目時(shí),管理和協(xié)調(diào)依賴項(xiàng)的版本號(hào)是一項(xiàng)重要而繁瑣的任務(wù)。

而 Maven 提供了 <dependencyManagement> 元素,用于定義項(xiàng)目中所有依賴項(xiàng)的版本。它允許您指定項(xiàng)目中每個(gè)依賴項(xiàng)的版本號(hào),而無(wú)需在每個(gè)模塊的 <dependencies> 部分中重復(fù)指定版本號(hào)。

本文將介紹 dependencyManagement 的作用,并演示如何在 Maven 項(xiàng)目中使用它來(lái)管理依賴項(xiàng)版本。

使用dependencyManagement可以統(tǒng)一管理項(xiàng)目中依賴包的版本號(hào),當(dāng)需要變更版本號(hào)時(shí)只需在父pom中修改即可;如果某個(gè)子項(xiàng)目需要指定一個(gè)特殊的版本號(hào)時(shí),只需要在自己項(xiàng)目的pom.xml中顯示聲明一個(gè)版本號(hào)即可,此時(shí)子項(xiàng)目會(huì)使用自己聲明的版本號(hào),而不繼承父項(xiàng)目的版本號(hào)

下面是一個(gè)簡(jiǎn)單的示例,說(shuō)明了如何在 Maven 項(xiàng)目中使用它

首先在項(xiàng)目的父 pom.xml 文件中添加如下配置:

<project>
	...
	<properties>
		<swagger.version>3.0.0</swagger.version>
	</properties>
   
	<dependencyManagement>
		<dependencies>
			<!--swagger3-->
			<dependency>
			    <groupId>io.springfox</groupId>
			    <artifactId>springfox-boot-starter</artifactId>
			    <version>${swagger.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
	...
</project>

然后,在其他 Maven 子模塊的 pom.xml 文件中,只需聲明依賴項(xiàng)的 groupId 和 artifactId,而無(wú)需重復(fù)指定版本號(hào):

<dependencies>
	<dependency>
		<groupId>io.springfox</groupId>
		<artifactId>springfox-boot-starter</artifactId>
		</dependency>
</dependencies>

子模塊將從父級(jí)項(xiàng)目中繼承定義的版本號(hào),確保項(xiàng)目中所有使用的依賴項(xiàng)版本一致。

dependencyManagement與dependencies的區(qū)別

dependencies相對(duì)于dependencyManagement,所有聲明在dependencies里的依賴都會(huì)自動(dòng)引入,并默認(rèn)被所有的子項(xiàng)目繼承
dependencyManagement里只是聲明依賴,并不會(huì)自動(dòng)引入,因此子項(xiàng)目需要顯示聲明依賴。在子項(xiàng)目中聲明了依賴項(xiàng),且沒有指定具體版本,才會(huì)從父項(xiàng)目中繼承該項(xiàng),并且version和scope都讀取自父pom;另外如果子項(xiàng)目中指定了版本號(hào),則會(huì)使用子項(xiàng)目中指定的版本
??注意:一個(gè)無(wú)子工程的獨(dú)立工程中如果使用dependencyManagement,那么它自己的pom.xml文件引入的依賴也可以不指定版本

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.ume.qa</groupId>
    <artifactId>SpringCloudGateway</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>3.0.1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>3.0.3</version>
        </dependency>
        <!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>spring-cloud-context</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-cloud-commons</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-cloud-starter</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

        <!--fegin組件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>3.0.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-cloud-commons</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-cloud-starter</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Feign Client for loadBalancing -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
            <version>3.0.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-cloud-commons</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-cloud-context</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.4.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

總結(jié)

使用 dependencyManagement 元素可以簡(jiǎn)化依賴項(xiàng)版本的管理,減少重復(fù)和錯(cuò)誤的聲明。通過(guò)將版本號(hào)集中在一個(gè)地方進(jìn)行管理,確保項(xiàng)目中所有使用的依賴項(xiàng)的版本保持一致性。這不僅提高了開發(fā)效率,還能減少因依賴項(xiàng)版本不一致導(dǎo)致的問(wèn)題。因此,在開發(fā) Java 項(xiàng)目時(shí),我們應(yīng)該充分利用它來(lái)更好地管理項(xiàng)目的依賴項(xiàng)版本

到此這篇關(guān)于Maven中dependencyManagement管理項(xiàng)目依賴項(xiàng)的文章就介紹到這了,更多相關(guān)Maven dependencyManagement管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java合并PDF文檔的三種常用方式總結(jié)

    Java合并PDF文檔的三種常用方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java合并PDF文檔的三種常用方式,文中介紹的方式分別是Apache?PDFBox、Spire.PDF(IceBlue)和iText?PDF,每種方式都有其對(duì)應(yīng)的pom.xml代碼示例,,要的朋友可以參考下
    2024-12-12
  • java 字符串截取的實(shí)例詳解

    java 字符串截取的實(shí)例詳解

    這篇文章主要介紹了java 字符串截取的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java中final關(guān)鍵字和final的四種用法實(shí)例

    Java中final關(guān)鍵字和final的四種用法實(shí)例

    final關(guān)鍵字代表最終的、不可改變的,下面這篇文章主要給大家介紹了關(guān)于Java中final關(guān)鍵字和final的四種用法實(shí)例,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • SpringBoot集成Redis—使用RedisRepositories詳解

    SpringBoot集成Redis—使用RedisRepositories詳解

    這篇文章主要介紹了SpringBoot集成Redis—使用RedisRepositories詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java Spring JdbcTemplate基本使用詳解

    Java Spring JdbcTemplate基本使用詳解

    JDBC已經(jīng)能夠滿足大部分用戶最基本的需求,但是在使用JDBC時(shí),必須自己來(lái)管理數(shù)據(jù)庫(kù)資源如:獲取PreparedStatement,設(shè)置SQL語(yǔ)句參數(shù),關(guān)閉連接等步驟
    2021-10-10
  • 詳解JAVA 內(nèi)存管理

    詳解JAVA 內(nèi)存管理

    這篇文章主要介紹了JAVA 內(nèi)存管理的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • springboot3.X版本集成mybatis遇到的問(wèn)題及解決

    springboot3.X版本集成mybatis遇到的問(wèn)題及解決

    在將SpringBoot3.X版本與MyBatis集成時(shí),直接參考基于SpringBoot2.X的配置方法會(huì)導(dǎo)致各種報(bào)錯(cuò),尤其是無(wú)法注入mapper的bean問(wèn)題,這主要是因?yàn)镾pringBoot3.X版本需要搭配MyBatis3.0.3及以上版本才能正常工作,通過(guò)更新maven配置至MyBatis3.0.3版本,可以解決這一問(wèn)題
    2024-09-09
  • Java SpringMVC數(shù)據(jù)響應(yīng)超詳細(xì)講解

    Java SpringMVC數(shù)據(jù)響應(yīng)超詳細(xì)講解

    Spring?MVC?是?Spring?提供的一個(gè)基于?MVC?設(shè)計(jì)模式的輕量級(jí)?Web?開發(fā)框架,本質(zhì)上相當(dāng)于?Servlet,Spring?MVC?角色劃分清晰,分工明細(xì),本章來(lái)講解SpringMVC數(shù)據(jù)響應(yīng)
    2022-04-04
  • Classloader隔離技術(shù)在業(yè)務(wù)監(jiān)控中的應(yīng)用詳解

    Classloader隔離技術(shù)在業(yè)務(wù)監(jiān)控中的應(yīng)用詳解

    這篇文章主要為大家介紹了Classloader隔離技術(shù)在業(yè)務(wù)監(jiān)控中的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • SpringMVC 接收前端傳遞的參數(shù)四種方式小結(jié)

    SpringMVC 接收前端傳遞的參數(shù)四種方式小結(jié)

    這篇文章主要介紹了SpringMVC 接收前端傳遞的參數(shù)四種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評(píng)論