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

Maven依賴中scope的含義

 更新時(shí)間:2023年01月15日 14:47:34   作者:ThinkStu  
本文主要介紹了Maven依賴中scope的含義,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

scope元素的作用:控制 dependency 元素的使用范圍。通俗的講,就是控制 jar 包在哪些范圍被加載和使用。

scope具體含義如下:

compile(默認(rèn))
含義:compile 是默認(rèn)值,如果沒有指定 scope 值,該元素的默認(rèn)值為 compile。被依賴項(xiàng)目需要參與到當(dāng)前項(xiàng)目的編譯,測試,打包,運(yùn)行等階段。打包的時(shí)候通常會包含被依賴項(xiàng)目。

provided
含義:被依賴項(xiàng)目理論上可以參與編譯、測試、運(yùn)行等階段,相當(dāng)于compile,但是再打包階段做了exclude的動(dòng)作。
適用場景:例如, 如果我們在開發(fā)一個(gè)web 應(yīng)用,在編譯時(shí)我們需要依賴 servlet-api.jar,但是在運(yùn)行時(shí)我們不需要該 jar 包,因?yàn)檫@個(gè) jar 包已由應(yīng)用服務(wù)器提供,此時(shí)我們需要使用 provided 進(jìn)行范圍修飾。

runtime
含義:表示被依賴項(xiàng)目無需參與項(xiàng)目的編譯,但是會參與到項(xiàng)目的測試和運(yùn)行。與compile相比,被依賴項(xiàng)目無需參與項(xiàng)目的編譯。
適用場景:例如,在編譯的時(shí)候我們不需要 JDBC API 的 jar 包,而在運(yùn)行的時(shí)候我們才需要 JDBC 驅(qū)動(dòng)包。

test
含義: 表示被依賴項(xiàng)目僅僅參與測試相關(guān)的工作,包括測試代碼的編譯,執(zhí)行。
適用場景:例如,Junit 測試。

system
含義:system 元素與 provided 元素類似,但是被依賴項(xiàng)不會從 maven 倉庫中查找,而是從本地系統(tǒng)中獲取,systemPath 元素用于制定本地系統(tǒng)中 jar 文件的路徑。例如:

<dependency>
    <groupId>org.open</groupId>
    <artifactId>open-core</artifactId>
    <version>1.5</version>
    <scope>system</scope>
    <systemPath>${basedir}/WebContent/WEB-INF/lib/open-core.jar</systemPath>
</dependency>

import
它只使用在<dependencyManagement>中,表示從其它的pom中導(dǎo)入dependency的配置,例如 (B項(xiàng)目導(dǎo)入A項(xiàng)目中的包配置):

想必大家在做SpringBoot應(yīng)用的時(shí)候,都會有如下代碼:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
</parent>

繼承一個(gè)父模塊,然后再引入相應(yīng)的依賴。
假如說,我不想繼承,或者我想繼承多個(gè),怎么做?

我們知道Maven的繼承和Java的繼承一樣,是無法實(shí)現(xiàn)多重繼承的,如果10個(gè)、20個(gè)甚至更多模塊繼承自同一個(gè)模塊,那么按照我們之前的做法,這個(gè)父模塊的dependencyManagement會包含大量的依賴。如果你想把這些依賴分類以更清晰的管理,那就不可能了,import scope依賴能解決這個(gè)問題。你可以把dependencyManagement放到單獨(dú)的專門用來管理依賴的pom中,然后在需要使用依賴的模塊中通過import scope依賴,就可以引入dependencyManagement。例如可以寫這樣一個(gè)用于依賴管理的pom:

<project>
? ? <modelVersion>4.0.0</modelVersion>
? ? <groupId>com.test.sample</groupId>
? ? <artifactId>base-parent1</artifactId>
? ? <packaging>pom</packaging>
? ? <version>1.0.0-SNAPSHOT</version>
? ? <dependencyManagement>
? ? ? ? <dependencies>
? ? ? ? ? ? <dependency>
? ? ? ? ? ? ? ? <groupId>junit</groupId>
? ? ? ? ? ? ? ? <artifactid>junit</artifactId>
? ? ? ? ? ? ? ? <version>4.8.2</version>
? ? ? ? ? ? </dependency>
? ? ? ? ? ? <dependency>
? ? ? ? ? ? ? ? <groupId>log4j</groupId>
? ? ? ? ? ? ? ? <artifactid>log4j</artifactId>
? ? ? ? ? ? ? ? <version>1.2.16</version>
? ? ? ? ? ? </dependency>
? ? ? ? </dependencies>
? ? </dependencyManagement>
</project>

然后我就可以通過非繼承的方式來引入這段依賴管理配置

<dependencyManagement>
? ? <dependencies>
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>com.test.sample</groupId>
? ? ? ? ? ? <artifactid>base-parent1</artifactId>
? ? ? ? ? ? <version>1.0.0-SNAPSHOT</version>
? ? ? ? ? ? <type>pom</type>
? ? ? ? ? ? <scope>import</scope>
? ? ? ? </dependency>
? ? </dependencies>
</dependencyManagement>
?
<dependency>
? ? <groupId>junit</groupId>
? ? <artifactid>junit</artifactId>
</dependency>
<dependency>
? ? <groupId>log4j</groupId>
? ? <artifactid>log4j</artifactId>
</dependency>

注意:import scope只能用在dependencyManagement里面

這樣,父模塊的pom就會非常干凈,由專門的packaging為pom來管理依賴,也契合的面向?qū)ο笤O(shè)計(jì)中的單一職責(zé)原則。此外,我們還能夠創(chuàng)建多個(gè)這樣的依賴管理pom,以更細(xì)化的方式管理依賴。這種做法與面向?qū)ο笤O(shè)計(jì)中使用組合而非繼承也有點(diǎn)相似的味道。

那么,如何用這個(gè)方法來解決SpringBoot的那個(gè)繼承問題呢?

配置如下:

<dependencyManagement>
? ? <dependencies>
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.springframework.boot</groupId>
? ? ? ? ? ? <artifactId>spring-boot-dependencies</artifactId>
? ? ? ? ? ? <version>1.3.3.RELEASE</version>
? ? ? ? ? ? <type>pom</type>
? ? ? ? ? ? <scope>import</scope>
? ? ? ? </dependency>
? ? </dependencies>
</dependencyManagement>
?
<dependencies>
? ? <dependency>
? ? ? ? <groupId>org.springframework.boot</groupId>
? ? ? ? <artifactId>spring-boot-starter-web</artifactId>
? ? </dependency>
</dependencies>

這樣配置的話,自己的項(xiàng)目里面就不需要繼承SpringBoot的module了,而可以繼承自己項(xiàng)目的module了。

scope的依賴傳遞

A–>B–>C。當(dāng)前項(xiàng)目為A,A依賴于B,B依賴于C。知道B在A項(xiàng)目中的scope,那么怎么知道C在A中的scope呢?答案是:
當(dāng)C是test或者provided時(shí),C直接被丟棄,A不依賴C;
否則A依賴C,C的scope繼承于B的scope。

下面是一張nexus畫的圖。

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

相關(guān)文章

  • Java版微信公眾號支付開發(fā)全過程

    Java版微信公眾號支付開發(fā)全過程

    這篇文章主要介紹了Java版微信公眾號支付開發(fā)全過程,本文通過實(shí)例相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Java控制語句之if、switch語句

    Java控制語句之if、switch語句

    這篇文章主要介紹了Java控制語句之if、switch語句的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Cookie在Java中的使用

    Cookie在Java中的使用

    Cookie又稱“小甜餅”,類型為“小型文本文件”,指某些網(wǎng)站為了辨別用戶身份而儲存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過加密)。由用戶客戶端計(jì)算機(jī)暫時(shí)或永久保存的信息。本文將講解Cookie在Java中的使用,感興趣的朋友可以了解下
    2021-05-05
  • Java Iterator迭代器_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java Iterator迭代器_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    迭代器是一種模式,它可以使得對于序列類型的數(shù)據(jù)結(jié)構(gòu)的遍歷行為與被遍歷的對象分離,接下來通過本文給大家分享Java Iterator迭代器_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理,需要的朋友參考下吧
    2017-05-05
  • java如何實(shí)現(xiàn)post請求webservice服務(wù)端

    java如何實(shí)現(xiàn)post請求webservice服務(wù)端

    這篇文章主要介紹了java如何實(shí)現(xiàn)post請求webservice服務(wù)端,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java實(shí)現(xiàn)二分法的完整代碼

    java實(shí)現(xiàn)二分法的完整代碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)二分法的完整代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 使用java批量寫入環(huán)境變量的實(shí)現(xiàn)

    使用java批量寫入環(huán)境變量的實(shí)現(xiàn)

    本文主要介紹了使用java批量寫入環(huán)境變量,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 詳解shrio的認(rèn)證(登錄)過程

    詳解shrio的認(rèn)證(登錄)過程

    這篇文章主要介紹了shrio的認(rèn)證(登錄)過程,幫助大家更好的理解和使用shrio框架,感興趣的朋友可以了解下
    2021-02-02
  • Java網(wǎng)絡(luò)通信中ServerSocket的設(shè)計(jì)優(yōu)化方案

    Java網(wǎng)絡(luò)通信中ServerSocket的設(shè)計(jì)優(yōu)化方案

    今天小編就為大家分享一篇關(guān)于Java網(wǎng)絡(luò)通信中ServerSocket的設(shè)計(jì)優(yōu)化方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Mybatis-plus:${ew.sqlselect}用法說明

    Mybatis-plus:${ew.sqlselect}用法說明

    這篇文章主要介紹了Mybatis-plus:${ew.sqlselect}用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

阜新| 罗山县| 伊川县| 无棣县| 连州市| 长寿区| 绥江县| 邵东县| 郴州市| 东宁县| 盱眙县| 晋州市| 博湖县| 上林县| 海林市| 海原县| 隆回县| 黄骅市| 安宁市| 友谊县| 台东县| 西乌| 汉寿县| 新巴尔虎左旗| 高唐县| 长治县| 富宁县| 祁阳县| 墨江| 行唐县| 顺昌县| 万载县| 临西县| 吕梁市| 恩施市| 体育| 河南省| 昌宁县| 盱眙县| 云龙县| 依安县|