使用Docker搭建Maven私服

本文環(huán)境實(shí)施是在遠(yuǎn)程Linux主機(jī)上面跑Nexus,然后本地進(jìn)行開發(fā)測試。具體如下

遠(yuǎn)程主機(jī)環(huán)境

系統(tǒng):CentOs 7.X

OpenJDK:1.8.0_151

Maven 3.3.5

Docker 1.13.6

本地環(huán)境

系統(tǒng):MacOs 10.12.6

OpenJDK 1.8.0_152

Maven 3.5.2

IntelliJ IDEA 2017.3.4

安裝Nexus

在遠(yuǎn)程主機(jī)運(yùn)行一下命令:

docker pull sonatype/nexus3

上面命令的意思是下載一個(gè)nexus3的鏡像

繼續(xù)執(zhí)行:

docker run--rm-d--privileged=true-p8081:8081--name nexus-v/root/nexus-data:/var/nexus-data sonatype/nexus3

上面命令是指使用nexus3鏡像創(chuàng)建并啟動(dòng)一個(gè)容器,然后指定暴露8081端口到對(duì)應(yīng)主機(jī)的8081端口,將容器內(nèi)部/var/nexus-data掛載到主機(jī)/root/nexus-data目錄。

如果沒有任何問題的話,Nexus應(yīng)該是搭建成功了。

此時(shí)在瀏覽器輸入:http://ip:8081即可看到以下頁面:(ip為遠(yuǎn)程主機(jī)的ip地址)

image.png

點(diǎn)擊右上方的Sign in進(jìn)行登錄,初始賬號(hào)密碼為admin/admin123.請(qǐng)登錄后修改密碼

如下圖:

image.png

可以看到默認(rèn)情況下Nexus會(huì)幫我們創(chuàng)建了幾個(gè)倉庫,仔細(xì)觀察紅色框住的地方,里面有幾種倉庫的類型,解釋如下:

proxy 遠(yuǎn)程倉庫的代理,比如說nexus配置了一個(gè)central repository的proxy,當(dāng)用戶向這個(gè)proxy請(qǐng)求一個(gè)artifact的時(shí)候,會(huì)現(xiàn)在本地查找,如果找不到,則會(huì)從遠(yuǎn)程倉庫下載,然后返回給用戶。

hosted 宿主倉庫,用戶可以把自己的一些倉庫deploy到這個(gè)倉庫中

group 倉庫組,是nexus特有的概念,目的是將多個(gè)倉庫整合,對(duì)用戶暴露統(tǒng)一的地址,這樣就不需要配置多個(gè)倉庫地址。

下面我們仔細(xì)看一下里面的一些倉庫。點(diǎn)擊maven-central倉庫:

image.png

可以看到是一個(gè)proxy類型的倉庫,他代理的遠(yuǎn)程倉庫地址是https://repo1.maven.org/maven2/。

后退,在進(jìn)入maven-public查看:

image.png

可以看到這是一個(gè)group類型的倉庫,里面包含了maven-releases/maven-snapshots/maven-central倉庫,意思是我們只需要在本地添加這個(gè)倉庫,則可以依賴到上述3個(gè)倉庫中的庫了。

準(zhǔn)備工作

為了實(shí)現(xiàn)本地上傳代碼庫,并且實(shí)現(xiàn)依賴的示例,這里創(chuàng)建一個(gè)新的倉庫(也可以選用已經(jīng)存在的倉庫)和一個(gè)用戶

創(chuàng)建倉庫,點(diǎn)擊Create repository,然后選擇maven2(hosted)然后輸入倉庫名稱(test-release)。在version policy中選擇這個(gè)倉庫的類型,這里選擇release,在Deployment policy中選擇Allow redeploy(這個(gè)很重要).

創(chuàng)建成功如下:

image.png

創(chuàng)建用戶

點(diǎn)擊左側(cè)菜單欄的Users菜單,然后點(diǎn)擊Create local user.我這里創(chuàng)建了一個(gè)用戶,賬號(hào)密碼都是:test

本地操作

修改本地.m2目錄下的settings.xml

<?xml version="1.0" encoding="UTF-8"?><settingsxmlns="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"><servers><server><id>test</id><username>test</username><password>test</password></server></servers></settings>

上面指定私庫的賬號(hào)密碼。

注意,若是用idea工具,要先配置maven指定到對(duì)應(yīng)的目錄。

使用IDEA創(chuàng)建一個(gè)Maven項(xiàng)目:

pop.xml

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo</artifactId><groupId>com.iti</groupId><version>0.0.1-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><packaging>jar</packaging><modelVersion>4.0.0</modelVersion><artifactId>dubbo-api</artifactId><!--注意限定版本一定為RELEASE,因?yàn)樯蟼鞯膶?duì)應(yīng)倉庫的存儲(chǔ)類型為RELEASE--><version>1.0-RELEASE</version><!--指定倉庫地址--><distributionManagement><repository><!--此名稱要和.m2/settings.xml中設(shè)置的ID一致--><id>test</id><url>http://172.21.13.229:8081/repository/test-release/</url></repository></distributionManagement><build><plugins><!--發(fā)布代碼Jar插件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>2.7</version></plugin><!--發(fā)布源碼插件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>3.0.0</version><executions><execution><phase>package</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></build></project>

簡單的代碼:

publicclassTestUtil{publicstaticvoidmain(String[]args){System.out.println("I am from test-lib!");}}

一切準(zhǔn)備就緒后,打開終端,輸入mvn deploy

如無意外,上傳成功,回到Nexus的網(wǎng)頁中查看結(jié)果

image.png

可以看到已經(jīng)上傳成功。

測試依賴

本地再次創(chuàng)建一個(gè)項(xiàng)目,對(duì)這個(gè)項(xiàng)目進(jìn)行依賴.

在pom.xml添加如下代碼

<dependencies><dependency><groupId>com.iti</groupId><artifactId>dubbo-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.iti</groupId><artifactId>dubbo-config</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><repositories><repository><!--此名稱要和.m2/settings.xml中設(shè)置的ID一致--><id>test</id><url>http://172.21.13.229:8081/repository/test-release/</url></repository></repositories>

然后發(fā)現(xiàn)依賴成功了

至此完成了Docker中使用Nexus部署maven私有倉庫的所有步驟。

支付通道:支付寶 、微信 、掃碼 、動(dòng)態(tài)碼、小程序支付、API代付、分賬

需要支付通道請(qǐng)聯(lián)系扣扣:963194679

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容