Maven學習(二) - 倉庫與私服

本地倉庫和遠程倉庫

maven倉庫分爲本地倉庫和遠程倉庫,當maven根據座標尋找構件時,首先會從本地倉庫中查找,若是本地倉庫中沒有,則會去遠程倉庫中查找,而後下載到本地倉庫中再使用。本地倉庫的倉庫目錄默認爲用戶目錄/.m2/repository,能夠修改**.m2/setting.xml**文件(默認不存在,須要從maven安裝目錄下copy一份)的localRepository元素。安全

<settings>
    <localRepository>D:\maven\repository\</localRepository>
</settings>

不少狀況下,默認的中央倉庫沒法知足項目的需求,可能須要的構件存在於另外一個遠程倉庫,如JBoss Maven倉庫,能夠在POM中配置該倉庫。服務器

<repositories>
  	<repository>
  		<id>jboss</id>
  		<name>JBoss Repository</name>
  		<url>http://repository.jboss.org/maven2</url>
  		<releases>
  			<enabled>true</enabled>
  		</releases>
  		<snapshots>
  			<enabled>false</enabled>
  		</snapshots>
  	</repository>
  </repositories>

releases和snapshots中的enabled表示開啓JBoss倉庫的的發佈版本下載,關閉快照版本的下載。maven

若是一個內部的maven服務器須要認證,能夠在settings.xml中配置用戶名和密碼url

<servers>
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
</servers>

repository信息能夠直接在pom.xml中配置,但認證信息必須在settings.xml中配置。這樣更爲安全。代理

私服

私服是一種特殊的遠程倉庫,爲了節省帶寬和時間,能夠在局域網內架設一個私有的倉庫服務器,用其代理全部外部的遠程倉庫,而內部項目也能夠部署到私服上供其餘項目使用。code

建立私服有許多好處server

  • 節省外網帶寬
  • 加速maven構建
  • 部署第三方構件
  • 提升穩定性,加強控制
  • 下降中央倉庫的負荷

公司的內部項目不能公開發布,但須要被其餘項目依賴,能夠部署到私服上。 在pom.xml中配置發佈地址。xml

<distributionManagement>
	<repository>
		<id>thirdparty</id>
		<name>project thirdparty repository</name>
		<url>
			http://mvn.company.com/nexus/content/repositories/thirdparty
		</url>
	</repository>
</distributionManagement>

當執行mvn發佈命令時,maven會將項目構建輸出到配置對應的遠程倉庫開發

mvn clean deploy

鏡像

若是倉庫X能夠提供倉庫Y存儲的全部內容,那麼就能夠認爲X是Y的一個鏡像。因爲地理位置的因素,鏡像每每可以提供比中央庫存更快的服務。所以能夠在settings.xml中配置鏡像代替中央倉庫。部署

<!-- 配置阿里的鏡像 -->
<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror> 
</mirrors>

<mirrorOf>配置*,表明對全部倉庫的請求都轉發至此鏡像,若是配置central,則表示對中央倉庫的請求都會轉至該鏡像。<mirrorOf>支持多種配置:

  • <mirrorOf>*</mirrorOf>:匹配全部遠程倉庫
  • <mirrorOf>external:*</mirrorOf>:匹配全部不在本機上的遠程倉庫
  • <mirrorOf>repo1,repo2</mirrorOf>:匹配倉庫repo1和repo2,使用逗號分隔多個遠程倉庫
  • <mirrorOf>*,!repo1</mirrorOf>:匹配全部遠程倉庫,repo1除外

也能夠將私服配置爲鏡像。因爲私服能夠代理任何外部的公共倉庫,所以對於內部的maven用戶來講,使用一個私服地址等於使用了全部須要的外部倉庫。

<mirror>
  <id>internal repository</id>  
  <name>Internal Repository</name>
  <url>http://192.168.1.100/nexus/content/groups/public</url>
  <mirrorOf>*</mirrorOf>
</mirror>

倉庫搜索

在使用maven進行平常開發的時候,一個常見的問題就是如何尋找須要的依賴的座標地址。我經常使用的就是http://mvnrepository.com/,根據關鍵字進行查詢,絕大部分的maven項目都能查詢到。

相關文章
相關標籤/搜索