私服說明
? maven倉庫分為本地倉庫和遠(yuǎn)程倉庫,而遠(yuǎn)程倉庫又分為maven中央倉庫、其他遠(yuǎn)程倉庫和私服(私有服務(wù)器)。其中,中央倉庫是由maven官方提供的,而私服就需要我們自己搭建了。
? maven私服就是公司局域網(wǎng)內(nèi)的maven遠(yuǎn)程倉庫,每個員工的電腦上安裝maven軟件并且連接maven私服,程序員可以將自己開發(fā)的項(xiàng)目打成jar并發(fā)布到私服,其它項(xiàng)目組成員就可以從私服下載所依賴的jar。私服還充當(dāng)一個代理服務(wù)器的角色,當(dāng)私服上沒有jar包時會從maven中央倉庫自動下載。
nexus 是一個maven倉庫管理器(其實(shí)就是一個軟件),nexus可以充當(dāng)maven私服,同時nexus還提供強(qiáng)大的倉庫管理、構(gòu)件搜索等功能。
搭建maven私服
①下載nexus
https://help.sonatype.com/repomanager2/download/download-archives―repository-manager-oss
②安裝nexus
將下載的壓縮包進(jìn)行解壓,進(jìn)入bin目錄
打開cmd窗口并進(jìn)入上面bin目錄下,執(zhí)行nexus.bat install
命令安裝服務(wù)(注意需要以管理員身份運(yùn)行cmd命令)
搜索cmd ,右單擊以管理員身份運(yùn)行, cd到bin目錄
③啟動nexus
經(jīng)過前面命令已經(jīng)完成nexus的安裝,可以通過如下兩種方式啟動nexus服務(wù):
在Windows系統(tǒng)服務(wù)中啟動nexus
win+r -> services.msc
在命令行執(zhí)行nexus.bat start
命令啟動nexus
④訪問nexus
啟動nexus服務(wù)后,訪問http://localhost:8081/nexus
點(diǎn)擊右上角LogIn按鈕,進(jìn)行登錄。使用默認(rèn)用戶名admin
和密碼admin123
登錄系統(tǒng)
登錄成功后,點(diǎn)擊左側(cè)菜單Repositories可以看到nexus內(nèi)置的倉庫列表(如下圖)
nexus倉庫類型
# 倉庫類型 1. hosted (宿主) 1). 作用: 部署自己開發(fā)(上傳)的jar到這個類型的倉庫 2). 具體有三個 I. snapshots: ★快照版,內(nèi)部使用的測試版發(fā)布倉庫 只要我們項(xiàng)目的version后面是snapshot,部署的時候會到這個倉庫中 II. releases: ★發(fā)布版,經(jīng)過測試的代碼 只要我們項(xiàng)目的version后面release,部署的時候會到這個倉庫中 III. 3rd party : 第三方 有些jar包中央倉庫中也沒有,我們需要從jar包官網(wǎng)下載,我們再手動傳到此倉庫 2. proxy (代理) 1). 作用: 用于代理遠(yuǎn)程的公共倉庫,我們要用的jar包從遠(yuǎn)程倉庫中下載之后存放到這 2). 具體有兩個 I. Apache Snapshots: apache快照倉庫 II. Central : maven中央倉庫 中國大陸速度比較慢, 一般用私服代替(阿里云) 3. virtual(虛擬) 中央倉庫遷移過 以前中央倉庫的地址 central M1 shadow 現(xiàn)在中央倉庫的地址 central 4. group (組)
通過前面的倉庫列表可以看到,nexus默認(rèn)內(nèi)置了很多倉庫,這些倉庫可以劃分為4種類型,每種類型的倉庫用于存放特定的jar包,具體說明如下:
①hosted,宿主倉庫,部署自己的jar到這個類型的倉庫
不是存放maven中央倉庫的jar包
0. jar包版本
spring 5.2.9.RELEASE
1). 版本號: 大.中.小
小: 修改個小bug,增加功能
中: 修改個比較有影響力bug,功能比較強(qiáng)
大: spring每三年一個大版本
2). 版本后綴
SNAPSHOT : 快照 (沒經(jīng)過完整測試的)
RELEASE : 發(fā)布(經(jīng)過完整測試的)
alpha(內(nèi)測) beta(公測) online(上線)
1. snapshots: ★快照版,內(nèi)部使用的測試版發(fā)布倉庫
公司內(nèi)部還沒經(jīng)過完整測試的項(xiàng)目
2. releases: ★發(fā)布版,經(jīng)過測試的代碼
公司內(nèi)部經(jīng)過完整測試的項(xiàng)目,比較成熟
3. 3rd party: 存放第三方的jar包 (了解)
有一類jar包在maven的中央倉庫中是不存在的.
要想使用這類jar包,需要從對應(yīng)的官網(wǎng)上下載,下載下來以后,我們自己需要上傳到私服,然后進(jìn)行使用.
(比如Oracle的jar)
②proxy,代理倉庫,用于代理遠(yuǎn)程的公共倉庫,如maven中央倉庫,用戶連接私服,私服自動去中央倉庫下載jar包或者插件
1. Apache Snapshots: Apache的快照倉庫下載的jar包
2. Central: ★中央倉庫下載的jar包
默認(rèn)是maven中央倉庫,但是我們待會需要修改成阿里云
③group,倉庫組,用來合并多個hosted/proxy倉庫,通常我們配置自己的maven連接倉庫組
倉庫組:
releases: ★發(fā)布版,經(jīng)過測試的代碼 (上傳我們的jar包 : 發(fā)布版)
snapshots: ★快照版,內(nèi)部使用的測試版?zhèn)}庫 (上傳我們的jar包: 測試版)
Central: ★中央倉庫下載的jar包 (下載jar包 : 改成阿里云私服)
④virtual(虛擬):兼容Maven1版本的jar或者插件
將項(xiàng)目發(fā)布到maven私服 (宿主倉庫)
? 我們現(xiàn)在的maven私服是搭建在公司局域網(wǎng)內(nèi)的maven倉庫,公司內(nèi)的所有開發(fā)團(tuán)隊(duì)都可以使用。例如技術(shù)研發(fā)團(tuán)隊(duì)開發(fā)了一個基礎(chǔ)組件,就可以將這個基礎(chǔ)組件打成jar包發(fā)布到私服,其他團(tuán)隊(duì)成員就可以從私服下載這個jar包到本地倉庫并在項(xiàng)目中使用。
將項(xiàng)目發(fā)布到maven私服操作步驟如下:
# 操作 : 將項(xiàng)目打包部署到nexus私服的宿主倉庫中 1. settings-nexus.xml文件 1). 資料中的settings-nexus.xml放到 mavenconf目錄下 2). 修改文件中l(wèi)ocalRepository 2. 需要在idea中進(jìn)行修改maven的配置文件 maven.user settings file -> settings-nexus.xml 3. 修改工程pom文件 1). 添加一個distributionManagement標(biāo)簽 2). 修改版本號后綴名 release 發(fā)布到 releases倉庫 snapshot 發(fā)布到 snapshots倉庫 4. maven的指令 1). install 安裝jar包/war包到本地倉庫 2). deploy 部署jar包/war包到遠(yuǎn)程倉庫(私服)
配置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:delvopapache-maven-3.6.1 epository</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> <!-- 配置服務(wù)賬號:nexus遠(yuǎn)程倉庫的登錄信息 --> <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默認(rèn)使用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標(biāo)記 --> <id>dev</id> <!-- 私服倉庫 --> <repositories> <repository> <id>nexus</id> <!--倉庫地址,即nexus倉庫組的地址--> <url>http://localhost:8081/nexus/content/groups/public/</url> <!--是否下載releases構(gòu)件--> <releases> <enabled>true</enabled> </releases> <!--是否下載snapshots構(gòu)件--> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <!-- 插件倉庫,maven的運(yùn)行依賴插件,也需要從私服下載插件 --> <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. 配置項(xiàng)目的pom.xml文件
想將哪個項(xiàng)目打成包發(fā)布到私服上,就在那個項(xiàng)目的pom.xml文件中添加相關(guān)配置
跟properties和dependencies 是平級
<distributionManagement> <!--當(dāng)前項(xiàng)目版本后綴為:RELEASE上傳目錄--> <repository> <id>releases</id> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <!--當(dāng)前項(xiàng)目版本后綴為:SNAPSHOT上傳目錄--> <snapshotRepository> <id>snapshots</id> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
執(zhí)行mvn deploy命令
<!-- 操作: 本地倉庫不再直接訪問阿里云,而是訪問公司私服 1. 修改settings-nexus.xml 1). 移除了阿里云配置 2). 添加公司私服配置 2. idea -> 修改maven配置文件 3. 項(xiàng)目中的pom文件進(jìn)行聲明 解釋: 1. 以下是配置了兩個倉庫的地址 id是映射settings-nexus.xml文件的賬號配置 2. 工作原理: 根據(jù)當(dāng)前項(xiàng)目的版本號后綴名,將當(dāng)前項(xiàng)目發(fā)布到對應(yīng)的倉庫中 例子: 版本 1.0-SNAPSHOT, 就會發(fā)布到snapshots倉庫 3. 指令: install : 安裝到本地倉庫 deploy :發(fā)布到遠(yuǎn)程倉庫 -->
從私服下載jar到本地倉庫
修改默認(rèn)中央倉庫
nexus的中央倉庫,默認(rèn)配置的是maven的中央倉庫:
https://repo1.maven.org/maven2/
因?yàn)榈刂吩趪猓ㄗh配置為阿里云:
http://maven.aliyun.com/nexus/content/groups/public/
到此這篇關(guān)于maven私服搭建的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)maven私服搭建內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/m0_49374492/article/details/120894625