maven私服搭建的實現步驟

私服說明

​ maven倉庫分為本地倉庫和遠程倉庫,而遠程倉庫又分為maven中央倉庫、其他遠程倉庫和私服(私有服務器)。其中,中央倉庫是由maven官方提供的,而私服就需要我們自己搭建瞭。

​ maven私服就是公司局域網內的maven遠程倉庫,每個員工的電腦上安裝maven軟件並且連接maven私服,程序員可以將自己開發的項目打成jar並發佈到私服,其它項目組成員就可以從私服下載所依賴的jar。私服還充當一個代理服務器的角色,當私服上沒有jar包時會從maven中央倉庫自動下載。

nexus 是一個maven倉庫管理器(其實就是一個軟件),nexus可以充當maven私服,同時nexus還提供強大的倉庫管理、構件搜索等功能。

在這裡插入圖片描述

搭建maven私服

①下載nexus

https://help.sonatype.com/repomanager2/download/download-archives—repository-manager-oss

②安裝nexus

將下載的壓縮包進行解壓,進入bin目錄

在這裡插入圖片描述

打開cmd窗口並進入上面bin目錄下,執行nexus.bat install命令安裝服務(註意需要以管理員身份運行cmd命令)

搜索cmd ,右單擊以管理員身份運行, cd到bin目錄

在這裡插入圖片描述

③啟動nexus

經過前面命令已經完成nexus的安裝,可以通過如下兩種方式啟動nexus服務:

在Windows系統服務中啟動nexus

win+r -> services.msc

在這裡插入圖片描述

在命令行執行nexus.bat start命令啟動nexus

在這裡插入圖片描述

④訪問nexus

啟動nexus服務後,訪問http://localhost:8081/nexus

點擊右上角LogIn按鈕,進行登錄。使用默認用戶名admin和密碼admin123登錄系統

在這裡插入圖片描述

登錄成功後,點擊左側菜單Repositories可以看到nexus內置的倉庫列表(如下圖)

在這裡插入圖片描述

nexus倉庫類型

# 倉庫類型
1. hosted (宿主)
	1). 作用: 部署自己開發(上傳)的jar到這個類型的倉庫
	2). 具體有三個
		I.  snapshots: ★快照版,內部使用的測試版發佈倉庫
				隻要我們項目的version後面是snapshot,部署的時候會到這個倉庫中
		II. releases: ★發佈版,經過測試的代碼
				隻要我們項目的version後面release,部署的時候會到這個倉庫中
		III. 3rd party : 第三方	
        	有些jar包中央倉庫中也沒有,我們需要從jar包官網下載,我們再手動傳到此倉庫
2. proxy (代理)
	1). 作用: 用於代理遠程的公共倉庫,我們要用的jar包從遠程倉庫中下載之後存放到這
	2). 具體有兩個	
		I. Apache Snapshots:  apache快照倉庫
		II. Central : maven中央倉庫
			中國大陸速度比較慢, 一般用私服代替(阿裡雲)
3. virtual(虛擬)
		中央倉庫遷移過
		以前中央倉庫的地址 central M1 shadow
		現在中央倉庫的地址 central 
4. group (組)		

通過前面的倉庫列表可以看到,nexus默認內置瞭很多倉庫,這些倉庫可以劃分為4種類型,每種類型的倉庫用於存放特定的jar包,具體說明如下:

①hosted,宿主倉庫,部署自己的jar到這個類型的倉庫

不是存放maven中央倉庫的jar包

0. jar包版本
  spring 5.2.9.RELEASE
 1). 版本號: 大.中.小
  小: 修改個小bug,增加功能
  中: 修改個比較有影響力bug,功能比較強
  大: spring每三年一個大版本
 2). 版本後綴 
  SNAPSHOT : 快照 (沒經過完整測試的)
  RELEASE : 發佈(經過完整測試的)
  alpha(內測) beta(公測) online(上線)
1. snapshots: ★快照版,內部使用的測試版發佈倉庫
     公司內部還沒經過完整測試的項目
2. releases: ★發佈版,經過測試的代碼
  公司內部經過完整測試的項目,比較成熟
3. 3rd party: 存放第三方的jar包 (瞭解)
     有一類jar包在maven的中央倉庫中是不存在的.
     要想使用這類jar包,需要從對應的官網上下載,下載下來以後,我們自己需要上傳到私服,然後進行使用.
     (比如Oracle的jar)

②proxy,代理倉庫,用於代理遠程的公共倉庫,如maven中央倉庫,用戶連接私服,私服自動去中央倉庫下載jar包或者插件

1. Apache Snapshots: Apache的快照倉庫下載的jar包
2. Central: ★中央倉庫下載的jar包
默認是maven中央倉庫,但是我們待會需要修改成阿裡雲

③group,倉庫組,用來合並多個hosted/proxy倉庫,通常我們配置自己的maven連接倉庫組

倉庫組:
releases: ★發佈版,經過測試的代碼 (上傳我們的jar包 : 發佈版)
snapshots: ★快照版,內部使用的測試版倉庫 (上傳我們的jar包: 測試版)
Central: ★中央倉庫下載的jar包 (下載jar包 : 改成阿裡雲私服)

④virtual(虛擬):兼容Maven1版本的jar或者插件

將項目發佈到maven私服 (宿主倉庫)

​ 我們現在的maven私服是搭建在公司局域網內的maven倉庫,公司內的所有開發團隊都可以使用。例如技術研發團隊開發瞭一個基礎組件,就可以將這個基礎組件打成jar包發佈到私服,其他團隊成員就可以從私服下載這個jar包到本地倉庫並在項目中使用。

將項目發佈到maven私服操作步驟如下:

# 操作 : 將項目打包部署到nexus私服的宿主倉庫中
1. settings-nexus.xml文件
	1). 資料中的settings-nexus.xml放到  maven\conf目錄下
	2). 修改文件中localRepository
2. 需要在idea中進行修改maven的配置文件
		maven.user settings file -> settings-nexus.xml
3. 修改工程pom文件
		1). 添加一個distributionManagement標簽
		2). 修改版本號後綴名
				release 發佈到 releases倉庫
				snapshot 發佈到 snapshots倉庫
4. maven的指令
	1). install 安裝jar包/war包到本地倉庫
    2). deploy  部署jar包/war包到遠程倉庫(私服)
    		

配置maven的settings.xml文件

settings-nexus.xml

<?xml version="1.0" encoding="UTF-8"?>


<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>F:\delvop\apache-maven-3.6.1\repository</localRepository>
  
  <pluginGroups>
  </pluginGroups>

  
  <proxies>
  </proxies>

 
  <servers>
  <!-- 配置服務賬號:nexus遠程倉庫的登錄信息 -->
	<server>
		<id>releases</id>
		<username>admin</username>   
		<password>admin123</password>
	</server>
	<server>
		<id>snapshots</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
  </servers>

  
  <mirrors>
  </mirrors>

  
  <profiles>
  <!-- maven默認使用JDK1.5,聲明使用1.8編譯 -->
	<profile>    
		<id>jdk-1.8</id>    
		 <activation>    
			  <activeByDefault>true</activeByDefault>    
			  <jdk>1.8</jdk>    
		  </activation>    
		<properties>    
			<maven.compiler.source>1.8</maven.compiler.source>    
			<maven.compiler.target>1.8</maven.compiler.target>    
			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>    
		</properties>    
	</profile>
	<!-- 配置私服模板 -->
    <profile>
		<!-- 模板id標記 -->
		<id>dev</id>
		<!-- 私服倉庫 -->
		<repositories>
			<repository>
				<id>nexus</id>
				<!--倉庫地址,即nexus倉庫組的地址-->
				<url>http://localhost:8081/nexus/content/groups/public/</url>
				<!--是否下載releases構件-->
				<releases>
					<enabled>true</enabled>
				</releases>
				<!--是否下載snapshots構件-->
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
		</repositories>
		<pluginRepositories>
			<!-- 插件倉庫,maven的運行依賴插件,也需要從私服下載插件 -->
			<pluginRepository>
				<id>public</id>
				<name>Public Repositories</name>
				<url>http://localhost:8081/nexus/content/groups/public/</url>
			</pluginRepository>
		</pluginRepositories>
	</profile>
  </profiles>
<!-- 激活模板 -->
	<activeProfiles>
		<activeProfile>dev</activeProfile>
	</activeProfiles>

</settings>

​ 註意:一定要在idea工具中引入的maven的settings.xml文件中配置

在這裡插入圖片描述

2. 配置項目的pom.xml文件

想將哪個項目打成包發佈到私服上,就在那個項目的pom.xml文件中添加相關配置

跟properties和dependencies 是平級

<distributionManagement>
      <!--當前項目版本後綴為:RELEASE上傳目錄-->
    <repository>
       <id>releases</id>
       <url>http://localhost:8081/nexus/content/repositories/releases/</url>
    </repository>
      <!--當前項目版本後綴為:SNAPSHOT上傳目錄-->
    <snapshotRepository>
       <id>snapshots</id>               <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>    </snapshotRepository>
</distributionManagement>

執行mvn deploy命令

 <!--
        操作:
            本地倉庫不再直接訪問阿裡雲,而是訪問公司私服
            1. 修改settings-nexus.xml
                1). 移除瞭阿裡雲配置
                2). 添加公司私服配置
            2. idea -> 修改maven配置文件
            3. 項目中的pom文件進行聲明

        解釋:
            1. 以下是配置瞭兩個倉庫的地址
                id是映射settings-nexus.xml文件的賬號配置
            2. 工作原理:
                根據當前項目的版本號後綴名,將當前項目發佈到對應的倉庫中
                例子: 版本 1.0-SNAPSHOT, 就會發佈到snapshots倉庫

            3. 指令:
                install : 安裝到本地倉庫
                deploy :發佈到遠程倉庫
    -->

從私服下載jar到本地倉庫

修改默認中央倉庫

nexus的中央倉庫,默認配置的是maven的中央倉庫:
https://repo1.maven.org/maven2/
因為地址在國外,建議配置為阿裡雲:
http://maven.aliyun.com/nexus/content/groups/public/

在這裡插入圖片描述

在這裡插入圖片描述

到此這篇關於maven私服搭建的實現步驟的文章就介紹到這瞭,更多相關maven私服搭建內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: