亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Maven Scope 取值范圍小結(jié)

 更新時(shí)間:2024年05月07日 10:16:10   作者:老貓喜歡今日爬山  
在Maven項(xiàng)目的pom.xml文件中,通常會(huì)給dependency設(shè)置scope屬性,本文主要介紹了Maven Scope 取值范圍,具有一定的參考價(jià)值,感興趣的可以了解一下

在Maven項(xiàng)目的pom.xml文件中,通常會(huì)給dependency設(shè)置scope屬性,規(guī)定依賴jar包的使用范圍。

scope有以下5個(gè)取值:

1、compile(默認(rèn)值)

  • 被依賴項(xiàng)目需要參與到當(dāng)前項(xiàng)目的編譯。
  • 適用于所有階段:測(cè)試,打包,運(yùn)行。

2、provided:

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

3、test

  • 含義:表示被依賴項(xiàng)目?jī)H僅參與測(cè)試相關(guān)的工作
  • 適用階段:適用于測(cè)試階段的編譯、運(yùn)行,項(xiàng)目打包時(shí)不會(huì)加入
  • 適用場(chǎng)景:如junit

4、runtime

  • 適用階段:運(yùn)行、測(cè)試,編譯階段不適用
  • 適用場(chǎng)景:例如,在編譯的時(shí)候我們不需要 JDBC API 的 jar 包,而在運(yùn)行的時(shí)候我們才需要 JDBC 驅(qū)動(dòng)包。

5、system

  • system 元素與 provided 元素類似,但是被依賴項(xiàng)不會(huì)從 maven 倉(cāng)庫(kù)中查找,而是從本地系統(tǒng)中獲取,systemPath 元素用于制定本地系統(tǒng)中 jar 文件的路徑

6、import

它只使用在<dependencyManagement>中,表示從其它的pom中導(dǎo)入dependency的配置,例如 (B項(xiàng)目導(dǎo)入A項(xiàng)目中的包配置):
想必大家在做SpringBoot應(yīng)用的時(shí)候,都會(huì)有如下代碼:

<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會(huì)包含大量的依賴。如果你想把這些依賴分類以更清晰的管理,那就不可能了,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就會(huì)非常干凈,由專門的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了。

到此這篇關(guān)于Maven Scope 取值范圍的文章就介紹到這了,更多相關(guān)Maven Scope 取值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot項(xiàng)目集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本控制的詳細(xì)教程

    SpringBoot項(xiàng)目集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本控制的詳細(xì)教程

    這篇文章主要介紹了SpringBoot項(xiàng)目集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本控制,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法示例

    Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法,涉及java高斯消元法處理矩陣運(yùn)算解多項(xiàng)式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Java中的位運(yùn)算符全解

    Java中的位運(yùn)算符全解

    這篇文章主要為大家詳細(xì)介紹了Java中的位運(yùn)算符,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java數(shù)據(jù)類型的規(guī)則

    Java數(shù)據(jù)類型的規(guī)則

    這篇文章主要介紹了Java數(shù)據(jù)類型的規(guī)則的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • 詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換

    詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換

    這篇文章主要介紹了詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • springboot使用IDEA遠(yuǎn)程Debug

    springboot使用IDEA遠(yuǎn)程Debug

    項(xiàng)目上線之后,如果日志打印的很模糊或者業(yè)務(wù)邏輯比較復(fù)雜,有時(shí)候無法定位具體的錯(cuò)誤原因,因此可以通過IDEA遠(yuǎn)程代理進(jìn)行Debug,本文就來介紹一下如何使用
    2021-06-06
  • java面試常見模式問題---單例模式

    java面試常見模式問題---單例模式

    單例模式(Singleton Pattern)是 Java 中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式
    2021-06-06
  • 分析JVM的執(zhí)行子系統(tǒng)

    分析JVM的執(zhí)行子系統(tǒng)

    本文主要介紹了JVM執(zhí)行子系統(tǒng)。了解虛擬機(jī)是如何執(zhí)行程序的, 虛擬機(jī)怎樣運(yùn)行一個(gè)Class文件的概念模型, 可以更好的理解怎樣寫出優(yōu)秀的代碼
    2021-06-06
  • MyBatis insert語句返回主鍵和selectKey標(biāo)簽方式

    MyBatis insert語句返回主鍵和selectKey標(biāo)簽方式

    這篇文章主要介紹了MyBatis insert語句返回主鍵和selectKey標(biāo)簽方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot攔截器實(shí)現(xiàn)對(duì)404和500等錯(cuò)誤的攔截

    SpringBoot攔截器實(shí)現(xiàn)對(duì)404和500等錯(cuò)誤的攔截

    本篇文章主要介紹了SpringBoot攔截器實(shí)現(xiàn)對(duì)404和500等錯(cuò)誤的攔截,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04

最新評(píng)論