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

Java如何通過(guò)Maven管理項(xiàng)目依賴

 更新時(shí)間:2020年10月12日 11:23:17   作者:David  
這篇文章主要介紹了Java如何通過(guò)Maven管理項(xiàng)目依賴,幫助大家更好的理解和使用maven,感興趣的朋友可以了解下

項(xiàng)目的依賴

Java最大的一個(gè)優(yōu)勢(shì)之一應(yīng)該是整個(gè)生態(tài)中無(wú)數(shù)的框架和API,我們創(chuàng)建實(shí)際的項(xiàng)目不可避免的都需要用到這些框架和API,而它們通常都是以JAR包的形式提供。我們之前在編譯項(xiàng)目的時(shí)候,需要在classpath上存放依賴的JAR包。而且這些外部的JAR包還會(huì)有其他依賴。我們需要遞歸地一個(gè)個(gè)去下載所有這些外部依賴,并且要確保下載的版本都是正確的,當(dāng)項(xiàng)目越來(lái)越復(fù)雜的時(shí)候,這是極其麻煩的事情,比如碰到JAR Hell的問(wèn)題。

Maven現(xiàn)在來(lái)拯救我們了,Maven可以自動(dòng)幫我們做依賴管理,我們需要做的就是在POM文件里指定依賴JAR包的名稱、版本號(hào),Maven會(huì)自動(dòng)下載,遞歸地去下載所有依賴,我們可以從具體的依賴添加工作解放出來(lái)了。

通過(guò)Maven定義依賴

之前的例子是一個(gè)完全自包含的項(xiàng)目,不需要額外的包依賴,因?yàn)樗鼘?shí)在太簡(jiǎn)單了。我們來(lái)讓這個(gè)例子稍微復(fù)雜一點(diǎn),在打印"Hello World!"的時(shí)候同時(shí)打印出日期和時(shí)間,我們希望使用Joda提供的時(shí)間庫(kù)來(lái)讓幫助我們簡(jiǎn)化時(shí)間相關(guān)的處理代碼:

package com.tianmaying.mavendemo;

import org.joda.time.LocalTime;

public class HelloWorld {
  public static void main(String[] args) {
    LocalTime currentTime = new LocalTime();
    System.out.println("The current local time is: " + currentTime);
    NewComer newComer = new NewComer();
    System.out.println(newComer.sayHello());
  }
}

我們使用Joda Time包提供的LocalTime類來(lái)獲取和打印當(dāng)前時(shí)間。

這時(shí)如果我們執(zhí)行mvn compile將會(huì)報(bào)出編譯錯(cuò)誤。需要將 Joda Time這個(gè)庫(kù)添加到我們的POM依賴中:

  <dependencies>

    ...

    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.2</version>
    </dependency>
  </dependencies>

上面這段XML定義了這個(gè)項(xiàng)目的依賴。在<depency>元素中,包含三個(gè)子元素:

  • <groupId> 類似于項(xiàng)目所屬的組織,所依賴的包也屬于某一個(gè)組織
  • <artifactId> 依賴包的名稱
  • <version> 依賴包的版本

依賴還有一個(gè)范圍(scope)的屬性,有三種取值:

  • compile表示這個(gè)依賴在編譯時(shí)應(yīng)該存在,這是scope的默認(rèn)值
  • provided表示這個(gè)依賴不僅在編譯時(shí)需要,同時(shí)應(yīng)該在運(yùn)行時(shí)也存在,比如Java Servlet API的依賴
  • test表示依賴在編譯和測(cè)試時(shí)需要,但是運(yùn)行時(shí)不要求存在,比如JUnit的依賴,運(yùn)行時(shí)是不需要的

此時(shí)運(yùn)行mvn compile或者mvn package,Maven應(yīng)該可以解析到Joda庫(kù),并將其從中央倉(cāng)庫(kù)下載,構(gòu)建成功啦!

Maven倉(cāng)庫(kù)

Maven倉(cāng)庫(kù)可以認(rèn)為是基于Maven的一個(gè)構(gòu)件(主要時(shí)Jar包)管理工具,你可以從里面找構(gòu)件,也可以往里面增加構(gòu)件。如果你用過(guò)Ant就會(huì)知道,通過(guò)Ant來(lái)管理項(xiàng)目時(shí),我們一般都需要一個(gè)lib文件夾,各種依賴的Jar包都會(huì)放進(jìn)去,而且為了協(xié)作的一致性,通常還需要放到代碼版本管理系統(tǒng)中?,F(xiàn)在輕松簡(jiǎn)單了,基于基于依賴的信息,Maven就可以自動(dòng)地以遞歸的方式下載所有的依賴,直到整個(gè)依賴樹(shù)都下載完畢并放到你的本地倉(cāng)庫(kù)中。Maven倉(cāng)庫(kù)本質(zhì)上存儲(chǔ)了Jar包和元數(shù)據(jù)信息,通過(guò)原信息能夠準(zhǔn)確定位到Jar包,從而能夠獲取和修改。

Maven有三種類型的倉(cāng)庫(kù):

  • 本地倉(cāng)庫(kù):本地倉(cāng)庫(kù)默認(rèn)在用戶目錄下,包含了下載的所有依賴
  • 中央倉(cāng)庫(kù):中央倉(cāng)庫(kù)由Maven自己提供的,本地倉(cāng)庫(kù)中的沒(méi)有依賴默認(rèn)都會(huì)去中央倉(cāng)庫(kù)查找,下載后會(huì)存放到本地倉(cāng)庫(kù)
  • 遠(yuǎn)程倉(cāng)庫(kù):遠(yuǎn)程倉(cāng)庫(kù)是遠(yuǎn)程服務(wù)器上可訪問(wèn)的倉(cāng)庫(kù), 本質(zhì)類似于中央倉(cāng)庫(kù)(只不過(guò)中央倉(cāng)庫(kù)是權(quán)威罷了,而且你不能亂動(dòng):)。遠(yuǎn)程倉(cāng)庫(kù)可以本地網(wǎng)絡(luò)中或者互聯(lián)網(wǎng)上,一般團(tuán)隊(duì)內(nèi)部會(huì)設(shè)置一個(gè)內(nèi)部的遠(yuǎn)程倉(cāng)庫(kù),這樣可以解決安全共享,網(wǎng)絡(luò)代理等問(wèn)題。

Maven首先會(huì)從本地倉(cāng)庫(kù),然后是中央倉(cāng)庫(kù),最后如果pom文件中配置了遠(yuǎn)程倉(cāng)庫(kù),會(huì)到遠(yuǎn)程倉(cāng)庫(kù)中查找依賴。

遠(yuǎn)程倉(cāng)庫(kù)需要配置.settings文件,需要加入類似這樣的配置:

<repositories>
  <repository>
    <id>tianmaying</id>
    <url>http://tianmaying.com/maven2/lib</url>
  </repository>
</repositories>

我們學(xué)習(xí)過(guò)程中,使用Maven自帶的中央倉(cāng)庫(kù)就足以應(yīng)付絕大多數(shù)情況了,不需要任何額外的配置。

快照依賴

Maven還提供一個(gè)非常方便的功能:快照依賴。快照依賴指的是那些還在開(kāi)發(fā)中的內(nèi)部依賴包。與其經(jīng)常地更新版本號(hào)來(lái)獲取最新版本,不如你直接依賴項(xiàng)目的快照版本??煺瞻姹镜拿恳粋€(gè)build版本都會(huì)被下載到本地倉(cāng)庫(kù),即使該快照版本已經(jīng)在本地倉(cāng)庫(kù)了??偸窍螺d快照依賴可以確保本地倉(cāng)庫(kù)中的每一個(gè)build版本都是最新的。這對(duì)我們快速迭代開(kāi)發(fā)是一個(gè)非??岬奶匦?。

以上就是Java如何通過(guò)Maven管理項(xiàng)目依賴的詳細(xì)內(nèi)容,更多關(guān)于Maven管理項(xiàng)目依賴的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java項(xiàng)目中獲取路徑的絕對(duì)路徑問(wèn)題和相對(duì)路徑問(wèn)題

    Java項(xiàng)目中獲取路徑的絕對(duì)路徑問(wèn)題和相對(duì)路徑問(wèn)題

    這篇文章主要介紹了如何Java項(xiàng)目中獲取文件地址,在 Java 項(xiàng)目中我們經(jīng)常會(huì)讀取配置文件,但是文件的路徑在獲取時(shí)我們是怎么得到的?下面我們就一起進(jìn)入文章學(xué)習(xí)該內(nèi)容吧,需要的朋友可以參考下
    2022-02-02
  • 詳解JAVA中使用FTPClient工具類上傳下載

    詳解JAVA中使用FTPClient工具類上傳下載

    這篇文章主要介紹了JAVA中使用FTPClient工具類上傳下載的相關(guān)資料,java 使用FTP服務(wù)器上傳文件、下載文件,需要的朋友可以參考下
    2017-08-08
  • IDEA下Servlet可能出現(xiàn)404的一些情況

    IDEA下Servlet可能出現(xiàn)404的一些情況

    相信有很多小伙伴遇到報(bào)錯(cuò)都不知道怎么處理,今天特地整理了這篇文章,文中對(duì)IDEA下Servlet可能出現(xiàn)404的一些情況作了詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • SpringBoot thymeleaf的使用方法解析

    SpringBoot thymeleaf的使用方法解析

    這篇文章主要介紹了SpringBoot thymeleaf的使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)加載權(quán)限信息的方法

    SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)加載權(quán)限信息的方法

    這篇文章主要介紹了SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)加載權(quán)限信息,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定需要的朋友可以參考下
    2022-01-01
  • 快速解決code唯一碼(java)的簡(jiǎn)便方法

    快速解決code唯一碼(java)的簡(jiǎn)便方法

    下面小編就為大家?guī)?lái)一篇快速解決code唯一碼(java)的簡(jiǎn)便方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 反對(duì)使用Spring封裝的多線程類原因

    反對(duì)使用Spring封裝的多線程類原因

    這篇文章主要介紹了反對(duì)使用Spring封裝的多線程類原因,文章圍繞主題展開(kāi)詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Java?Guava異步編程實(shí)踐

    Java?Guava異步編程實(shí)踐

    今天咱們要聊的是Guava在異步編程中的應(yīng)用,讓我們搞清楚為什么要用Guava來(lái)處理異步任務(wù),在Java的世界里,異步編程是個(gè)老話題了,但它依舊非常關(guān)鍵,它能讓咱們的應(yīng)用更高效,尤其是在處理那些耗時(shí)的I/O操作
    2023-12-12
  • Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實(shí)現(xiàn)

    Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實(shí)現(xiàn)

    本文主要介紹了Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java Web最近面試題匯總

    Java Web最近面試題匯總

    在本篇文章里小編給大家整理的是一篇關(guān)于Java Web最近面試題匯總內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-02-02

最新評(píng)論

客服| 都兰县| 云林县| 交城县| 那曲县| 镇江市| 阳春市| 都兰县| 仁寿县| 建昌县| 株洲县| 通渭县| 彰化市| 辉南县| 海盐县| 壤塘县| 施甸县| 德阳市| 武隆县| 武胜县| 彭州市| 扶余县| 芦山县| 佳木斯市| 衡山县| 徐州市| 吉林省| 绥江县| 缙云县| 虹口区| 股票| 申扎县| 句容市| 六枝特区| 阆中市| 平江县| 通州市| 岳普湖县| 鹤庆县| 同德县| 汕头市|