Nexus +maven 倉庫配置

本文不設計pom.xml的項目配置引用 主要是記錄一下公共jar的管理配置apache

1.當只是經過maven單獨去作項目(jar)管理 不須要本身搭建Nexus本地倉庫

只須要修改一下maven setting配置maven

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

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

不須要配置中央倉庫 由於在 maven 解壓路徑lib中 E:\xxxx\lib\maven-model-builder-3.3.9.jar解壓打卡pom.xml 中已經默認配置好中央倉庫ui

<modelVersion>4.0.0</modelVersion>

  <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>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

2.須要配置本地倉庫Nexus(通常公司都會配置)

當存在Nexus 咱們本身的項目就要考慮首先訪問本身公司的Nexus (本地畢竟比遠程倉庫下載快),在項目中就要配置本地Nexus地址this

一種能夠在單個項目pom.xml中配置以下添加便可url

<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<!-- 添加nexus repository -->
	<repositories>
		<repository>
			<id>nexus</id>
			<name>Nexus Repository</name>
			<url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
		</repository>
	</repositories>
	<dependencies>

第二種 在maven setting.xml配置文件中配置設計

<profiles>
		 <profile>
		  <id>nexus</id>
		  
		  <repositories>
			<repository>
			  <id>Releases</id>
			  <name>my-nexus-repository</name>
			  <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
			  <releases>
				<enabled>true</enabled>
			  </releases>
			  <snapshots>
				<enabled>true</enabled>
			  </snapshots>
			</repository>
		  </repositories>
		 <profile>
      </profiles>
<!-- 記得啓動-->
 <activeProfiles>
  <activeProfile>nexus</activeProfile>
</activeProfiles>

每個profile 能夠配置一個倉庫地址(多個倉庫 做用本身查)code

當本地Nexus中沒有相應的jar存在會直接去遠程倉庫尋找,那麼當本地Nexus沒有下載過相應jar時 ,仍是要去遠程倉庫尋找 。server

那麼問題是在哪去尋找 (注意:**不是再去maven lib下 E:\xxxx\lib\maven-model-builder-3.3.9.jar 查 而xml

是在Nexus本身那幾個倉庫中配置的遠程倉庫去找** ) 在Nexus中有一個默認的central倉庫如圖:圖片

輸入圖片說明

本文再也不介紹Nexus幾個倉庫的具體做用 (本身單獨去查一下就能夠)。

3 設置只能經過Nexus去訪問中央倉庫

可是當咱們的Nexus關閉了呢 本身的項目仍是會去 經過maven lib下 E:\xxxx\lib\maven-model-builder- 3.3.9.jar 去查中央倉庫因此要設置 只能經過咱們的Nexus去訪問中央倉庫 ,當個人倉庫關了 就不能去訪問中央倉庫獲取jar包。(這樣也是爲了更靈活統一 畢竟jar包中的中央倉庫 是不可變得 Nexus訪問中央倉庫的地址是能夠配置的

解決上面的問題須要配置鏡像(mirror)代碼以下

<mirrors>
    
 <mirror>
      <id>Releases</id>
	  <!--*表明全部須要訪問的 倉庫都會鏡像到本地12.0.0.1 8081倉庫去尋找 也就是遠程中央倉庫 你只能經過個人本地倉庫去訪問 -->
      <mirrorOf>*</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
    </mirror>
    <mirror>
      <id>Snapshots</id>
      <mirrorOf>*</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://127.0.0.1:8081/nexus/content/repositories/central/</url>
    </mirror>
  </mirrors>

一樣能夠配置多個mirror ,mirrorOf表明哪些要訪問的倉庫地址(profiles 下的profile)須要鏡像必須走本身的 Nexus地址。 設置成星號表明全部。

這種狀況下在咱們本地的maven 配置的profile和maven lib下 E:\xxxx\lib\maven-model-builder-3.3.9.jar

pom.xml中的profile 地址都會轉到mirror

同時注意一下 在maven的 那個jar包中的配置 snapshots和enabled都是關閉的false

<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>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

雖然訪問全部的倉庫都是轉到mirror 可是他必須先去找到 下面的profile 地址和maven jar中的中央工廠地址纔回去轉到 mirror 中,注意:鏡像過去的只是地址 配置中的其餘配置仍是按照原來的模式去設置

因此在咱們要訪問中央倉庫時他根據上面設置的false去設置 咱們應該重寫jar包中的中央工廠的配置。

將releases和snapshots設置爲true

<profiles>
<profile>
      <id>central</id>
      
      <repositories>
        <repository>
          <id>Releases</id>
          <name>my-nexus-repository</name>
          <url>http://mvnrepository.com/</url>
	  <!-- 下面兩個true 表示能夠下載 releases和 snapshots包(具體也不清楚是什麼)-->
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>

    </profile>
  </profiles>
開啓是必須的
<activeProfiles>
  <activeProfile>central</activeProfile>
</activeProfiles>

總結:最後說的好像有點亂,核心配置看setting.xml吧 一共三四段

第一段 本身本地jar存儲:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
		  <localRepository>e:\maven</localRepository>


第二段Nexus用戶:

 <servers>
		
			<server>
			  <id>siteServer</id>
			  <privateKey>/path/to/private/key</privateKey>
			  <passphrase>optional; leave empty if not used.</passphrase>
			</server>
			-->
			 <server>
			  <id>Releases</id>
			  <username>admin</username>
			  <password>admin123</password>
			</server>
		  <server>
			  <id>Snapshots</id>
			  <username>admin</username>
			  <password>admin123</password>
			</server>
		  </servers>


第三段mirror鏡像配置:

 <mirror>
			  <id>Releases</id>
			  <!--*表明全部須要訪問的 倉庫都會鏡像到本地12.0.0.1 8081倉庫去尋找 也就是遠程中央倉庫 你只能經過個人本地倉庫去訪問 -->
			  <mirrorOf>*</mirrorOf>
			  <name>Human Readable Name for this Mirror.</name>
			  <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
			</mirror>
		  
			<mirror>
			  <id>Snapshots</id>
			  <mirrorOf>*</mirrorOf>
			  <name>Human Readable Name for this Mirror.</name>
			  <url>http://127.0.0.1:8081/nexus/content/repositories/central/</url>
			</mirror>
		  </mirrors>

第四段 須要訪問的倉庫:

<profiles>
 <profile>
			  <id>**nexus**</id>
			  
			  <repositories>
				<repository>
				  <id>Releases</id>
				  <name>my-nexus-repository</name>
				  <url>http://mvnrepository.com/</url>
				  <!-- 下面兩個true 表示能夠下載 releases和 snapshots包(具體也不清楚是什麼)-->
				  <releases>
					<enabled>true</enabled>
				  </releases>
				  <snapshots>
					<enabled>true</enabled>
				  </snapshots>
				</repository>
			  </repositories>
			
			  <pluginRepositories>
				<pluginRepository>
				  <id>Snapshots</id>
				  <name>my-nexus-repository</name>
				  <url>http://mvnrepository.com/</url>
				  <releases>
					<enabled>true</enabled>
				  </releases>
				  <snapshots>
					<enabled>true</enabled>
				  </snapshots>
				</pluginRepository>
			  </pluginRepositories>
			</profile>
		  </profiles>

 <activeProfiles>
		  <activeProfile>**nexus**</activeProfile>
		</activeProfiles>
相關文章
相關標籤/搜索