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

maven <repositories>標(biāo)簽和<pluginRepositories>標(biāo)簽的使用

 更新時(shí)間:2020年07月01日 14:15:00   作者:擼碼識(shí)途  
這篇文章主要介紹了maven <repositories>標(biāo)簽和<pluginRepositories>標(biāo)簽的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在不用Maven的時(shí)候,比如說以前我們用Ant構(gòu)建項(xiàng)目,在項(xiàng)目目錄下,往往會(huì)看到一個(gè)名為/lib的子目錄,那里存放著各類第三方依賴jar文件,如log4j.jar,junit.jar等等。每建立一個(gè)項(xiàng)目,你都需要建立這樣的一個(gè)/lib目錄,然后復(fù)制一對(duì)jar文件,這是很明顯的重復(fù)。重復(fù)永遠(yuǎn)是噩夢(mèng)的起點(diǎn),多個(gè)項(xiàng)目不共用相同的jar文件,不僅會(huì)造成磁盤資源的浪費(fèi),也使得版本的一致性管理變得困難。此外,如果你使用版本管理工具,如SVN(你沒有使用版本管理工具?馬上試試SVN吧,它能幫你解決很多頭疼的問題),你需要將大量的jar文件提交到代碼庫里,可是版本管理工具在處理二進(jìn)制文件方面并不出色。

Maven倉庫就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven項(xiàng)目可以從同一個(gè)Maven倉庫中獲取自己所需要的依賴JAR,這節(jié)省了磁盤資源。此外,由于Maven倉庫中所有的JAR都有其自己的坐標(biāo),該坐標(biāo)告訴Maven它的組ID,構(gòu)件ID,版本,打包方式等等,因此Maven項(xiàng)目可以方便的進(jìn)行依賴版本管理。你也不在需要提交JAR文件到SCM倉庫中,你可以建立一個(gè)組織層次的Maven倉庫,供所有成員使用。
簡(jiǎn)言之,Maven倉庫能幫助我們管理構(gòu)件(主要是JAR)。

本地倉庫(.m2) vs. 遠(yuǎn)程倉庫(聯(lián)網(wǎng))

運(yùn)行Maven的時(shí)候,Maven所需要的任何構(gòu)件都是直接從本地倉庫獲取的。如果本地倉庫沒有,它會(huì)首先嘗試從遠(yuǎn)程倉庫下載構(gòu)件至本地倉庫,然后再使用本地倉庫的構(gòu)件。

比如說,你的項(xiàng)目配置了junit-3.8的依賴,在你運(yùn)行mvn test 的時(shí)候,Maven需要使用junit-3.8的jar文件,它首先根據(jù)坐標(biāo)查找本地倉庫,如果找到,就直接使用。如果沒有,Maven會(huì)檢查可用的遠(yuǎn)程倉庫配置,然后逐個(gè)嘗試這些遠(yuǎn)程倉庫去下載junit-3.8的jar文件,如果遠(yuǎn)程倉庫存在該文件,Maven會(huì)將其下載到本地倉庫中,繼而使用。如果嘗試過所有遠(yuǎn)程倉庫之后,Maven還是沒能夠下載到該文件,它就會(huì)報(bào)錯(cuò)。

Maven缺省的本地倉庫地址為${user.home}/.m2/repository 。也就是說,一個(gè)用戶會(huì)對(duì)應(yīng)的擁有一個(gè)本地倉庫。

你也可以自定義本地倉庫的位置,修改${user.home}/.m2/settings.xml :

 <!-- localRepository
 | The path to the local repository maven will use to store artifacts.
 |
 | Default: ${user.home}/.m2/repository-->
 <localRepository>D:/.m2/repository</localRepository>

還可以在運(yùn)行時(shí)指定本地倉庫位置:

mvn clean install -Dmaven.repo.local=/home/juven/myrepo/

還有一點(diǎn)需要理解的是,當(dāng)我們運(yùn)行install的時(shí)候,Maven實(shí)際上是將項(xiàng)目生成的構(gòu)件安裝到了本地倉庫,也就是說,只有install了之后,其它項(xiàng)目才能使用此項(xiàng)目生成的構(gòu)件。

接著了解一下Maven缺省的遠(yuǎn)程倉庫,即Maven中央倉庫:

安裝好Maven之后,我們可以建立一個(gè)簡(jiǎn)單的項(xiàng)目,配置一些簡(jiǎn)單的依賴,然后運(yùn)行mvn clean install,項(xiàng)目就構(gòu)建好了。我們沒有手工的去下載任何jar文件,這一切都是因?yàn)镸aven中央倉庫的存在,當(dāng)Maven在本地倉庫找不到需要的jar文件時(shí),它會(huì)查找遠(yuǎn)程倉庫,而一個(gè)原始的Maven安裝就自帶了一個(gè)遠(yuǎn)程倉庫——Maven中央倉庫。
這個(gè)Maven中央倉庫是在哪里定義的呢?在我的機(jī)器上,我安裝了maven-2.0.10,我可以找到這個(gè)文件:${M2_HOME}/lib/maven-2.0.10-uber.jar ,

但是到了3.xxx版本之后在: maven安裝目錄下的:/lib/maven-model-builder-${version}.jar中

打開該文件,能找到超級(jí)POM:\org\apache\maven\model\pom-4.0.0.xml ,它是所有Maven POM的父POM,所有Maven項(xiàng)目繼承該配置,你可以在這個(gè)POM中發(fā)現(xiàn)如下配置:

 <repositories>
 <repository>
  <id>central</id>
  <name>Central Repository</name>
  <url>https://repo.maven.apache.org/maven2</url>
  <layout>default</layout>
  <snapshots>
  <enabled>false</enabled>
  </snapshots>
 </repository>
 </repositories>

關(guān)于遠(yuǎn)程倉庫的配置,下面的我會(huì)詳細(xì)解釋,這里我們只要知道,中央倉庫的id為central,遠(yuǎn)程url地址為http://repo.maven.apache.org/maven2,它關(guān)閉了snapshot版本構(gòu)件下載的支持。

在POM中配置遠(yuǎn)程倉庫

前面我們看到超級(jí)POM配置了ID為central的遠(yuǎn)程倉庫,我們可以在POM中配置其它的遠(yuǎn)程倉庫。這樣做的原因有很多,比如你有一個(gè)局域網(wǎng)的遠(yuǎn)程倉庫,使用該倉庫能大大提高下載速度,繼而提高構(gòu)建速度,也有可能你依賴的一個(gè)jar在central中找不到,它只存在于某個(gè)特定的公共倉庫,這樣你也不得不添加那個(gè)遠(yuǎn)程倉庫的配置。
這里我配置一個(gè)遠(yuǎn)程倉庫指向中央倉庫的中國(guó)鏡像:

<project>
...
 <repositories>
 <repository>
  <id>maven-net-cn</id>
  <name>Maven China Mirror</name>
  <url>http://maven.net.cn/content/groups/public/</url>
  <releases>
  <enabled>true</enabled>
  </releases>
  <snapshots>
  <enabled>false</enabled>
  </snapshots>
 </repository>
 </repositories>
 <pluginRepositories>
 <pluginRepository>
  <id>maven-net-cn</id>
  <name>Maven China Mirror</name>
  <url>http://maven.net.cn/content/groups/public/</url>
  <releases>
  <enabled>true</enabled>
  </releases>
  <snapshots>
  <enabled>false</enabled>
  </snapshots> 
 </pluginRepository>
 </pluginRepositories>
...
</project>

我們先看一下<repositories>的配置,你可以在它下面添加多個(gè)<repository> ,每個(gè)<repository>都有它唯一的ID,一個(gè)描述性的name,以及最重要的,遠(yuǎn)程倉庫的url。此外,<releases><enabled>true</enabled></releases>告訴Maven可以從這個(gè)倉庫下載releases版本的構(gòu)件,而<snapshots><enabled>false</enabled></snapshots>告訴Maven不要從這個(gè)倉庫下載snapshot版本的構(gòu)件。禁止從公共倉庫下載snapshot構(gòu)件是推薦的做法,因?yàn)檫@些構(gòu)件不穩(wěn)定,且不受你控制,你應(yīng)該避免使用。當(dāng)然,如果你想使用局域網(wǎng)內(nèi)組織內(nèi)部的倉庫,你可以激活snapshot的支持。

關(guān)于<repositories>的更詳細(xì)的配置及相關(guān)解釋,請(qǐng)參考:http://www.sonatype.com/books/maven-book/reference_zh/apas02s08.html。

至于<pluginRepositories>,這是配置Maven從什么地方下載插件構(gòu)件(Maven的所有實(shí)際行為都由其插件完成)。該元素的內(nèi)部配置和<repository>完全一樣,不再解釋。

在settings.xml中配置遠(yuǎn)程倉庫

我們知道了如何在POM中配置遠(yuǎn)程倉庫,但考慮這樣的情況:在一個(gè)公司內(nèi)部,同時(shí)進(jìn)行這3個(gè)項(xiàng)目,而且以后隨著這幾個(gè)項(xiàng)目的結(jié)束,越來越多的項(xiàng)目會(huì)開始;同時(shí),公司內(nèi)部建立一個(gè)Maven倉庫。我們統(tǒng)一為所有這些項(xiàng)目配置該倉庫,于是不得不為每個(gè)項(xiàng)目提供同樣的配置。問題出現(xiàn)了,這是重復(fù) !

其實(shí)我們可以做到只配置一次,在哪里配置呢?就是settings.xml。

不過事情沒有那么簡(jiǎn)單,不是簡(jiǎn)單的將POM中的<repositories>及<pluginRepositories>元素復(fù)制到settings.xml中就可以,setting.xml不直接支持 這兩個(gè)元素。但我們還是有一個(gè)并不復(fù)雜的解決方案,就是利用profile,如下:

<settings>
 ...
 <profiles>
 <profile>
  <id>dev</id>
  <!-- repositories and pluginRepositories here-->
 </profile>
 </profiles>
 <activeProfiles>
 <activeProfile>dev</activeProfile>
 </activeProfiles>
 ...
</settings>

這里我們定義一個(gè)id為dev的profile,將所有repositories以及pluginRepositories元素放到這個(gè)profile中,然后,使用<activeProfiles>元素自動(dòng)激活該profile。這樣,你就不用再為每個(gè)POM重復(fù)配置倉庫。
使用profile為settings.xml添加倉庫提供了一種用戶全局范圍的倉庫配置。

使用鏡像

如果你的地理位置附近有一個(gè)速度更快的central鏡像,或者你想覆蓋central倉庫配置,或者你想為所有POM使用唯一的一個(gè)遠(yuǎn)程倉庫(這個(gè)遠(yuǎn)程倉庫代理的所有必要的其它倉庫),你可以使用settings.xml中的mirror配置。
以下的mirror配置用maven.NET.cn覆蓋了Maven自帶的central:

<settings>
...
 <mirrors>
 <mirror>
  <id>maven-net-cn</id>
  <name>Maven China Mirror</name>
  <url>http://maven.net.cn/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
 </mirror>
 </mirrors>
...
</settings>

這里唯一需要解釋的是<mirrorOf>,這里我們配置central的鏡像,我們也可以配置一個(gè)所有倉庫的鏡像,以保證該鏡像是Maven唯一使用的倉庫:

 <mirrors>
 <!-- mirror
  | Specifies a repository mirror site to use instead of a given repository. The repository that
  | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
  | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
  |
  -->
 <mirror>
  <id>nexus</id>
  <mirrorOf>*</mirrorOf>
  <name>Nexus Mirror</name>
  <url>http://xx.xx/nexus/content/groups/public</url>
 </mirror>
 </mirrors>
<settings>
...
 <mirrors>
 <mirror>
  <id>my-org-repo</id>
  <name>Repository in My Orgnization</name>
  <url>http://192.168.1.100/maven2</url>
  <mirrorOf>*</mirrorOf>
 </mirror>
 </mirrors>
...
</settings>

到此這篇關(guān)于maven <repositories>標(biāo)簽和<pluginRepositories>標(biāo)簽的使用的文章就介紹到這了,更多相關(guān)maven <repositories>和<pluginRepositories>標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好你知道嗎

    Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2022-03-03
  • MybatisPlus中的insert操作詳解

    MybatisPlus中的insert操作詳解

    這篇文章主要介紹了MybatisPlus中的insert操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot多種自定義錯(cuò)誤頁面方式小結(jié)

    SpringBoot多種自定義錯(cuò)誤頁面方式小結(jié)

    這篇文章主要介紹了SpringBoot多種自定義錯(cuò)誤頁面方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java之Spring AOP 實(shí)現(xiàn)用戶權(quán)限驗(yàn)證

    Java之Spring AOP 實(shí)現(xiàn)用戶權(quán)限驗(yàn)證

    本篇文章主要介紹了Java之Spring AOP 實(shí)現(xiàn)用戶權(quán)限驗(yàn)證,用戶登錄、權(quán)限管理這些是必不可少的業(yè)務(wù)邏輯,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-02-02
  • Java超詳細(xì)講解三大特性之一的封裝

    Java超詳細(xì)講解三大特性之一的封裝

    封裝是一個(gè)非常廣泛的概念,小到一個(gè)屬性的封裝,大到一個(gè)框架或者一個(gè)項(xiàng)目的封裝,下面這篇文章主要給大家介紹了關(guān)于java中封裝的那點(diǎn)事,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 解決HttpPost+json請(qǐng)求---服務(wù)器中文亂碼及其他問題

    解決HttpPost+json請(qǐng)求---服務(wù)器中文亂碼及其他問題

    這篇文章主要介紹了解決HttpPost+json請(qǐng)求---服務(wù)器中文亂碼及其他問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • jvm垃圾回收GC調(diào)優(yōu)基礎(chǔ)原理分析

    jvm垃圾回收GC調(diào)優(yōu)基礎(chǔ)原理分析

    談到調(diào)優(yōu),這一定是針對(duì)特定場(chǎng)景、特定目的的事情, 對(duì)于 GC 調(diào)優(yōu)來說,首先就需要清楚調(diào)優(yōu)的目標(biāo)是什么?從性能的角度看,通常關(guān)注三個(gè)方面,內(nèi)存占用(footprint)、延時(shí)(latency)和吞吐量(throughput)
    2022-01-01
  • 詳解Java時(shí)區(qū)處理之Date,Calendar,TimeZone,SimpleDateFormat

    詳解Java時(shí)區(qū)處理之Date,Calendar,TimeZone,SimpleDateFormat

    這篇文章主要介紹了Java時(shí)區(qū)處理之Date,Calendar,TimeZone,SimpleDateFormat的區(qū)別于用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java中object類實(shí)例分析

    java中object類實(shí)例分析

    這篇文章主要介紹了java中object類實(shí)例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java多線程——之一創(chuàng)建線程的四種方法

    Java多線程——之一創(chuàng)建線程的四種方法

    這篇文章主要介紹了Java創(chuàng)建線程方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論