目錄
1.前言
一直想寫一個系列,將平時工作中使用的環境、技術都寫進同一系列中,目的主要使自己知識成體系,初步規劃內容有《Docker+Nexus搭建Maven私服》、《Docker+Jenkins實現自動化部署》、《Springcloud系列》、《k8s服務編排》,後續可能還會有新的動西加入,涉及的動西比較多,時間會比較長,希望自己能堅持寫完。
2.系統環境
1.環境搭建均使用Docker安裝,故需要Docker相關知識,對於Docker不熟悉的童鞋可參見我的另一篇文章Docker學習筆記之基礎知識
2.以下ip非騰訊雲真實ip,大家根據自己實際情況填寫,此處只是方便後續使用
環境 | 版本 |
---|---|
騰訊雲系統 | centos7 |
ip | 192.168.1.100 |
Docker | 18.09.6 |
Nexus | 3.x |
Maven | 3.6.1 |
3.安裝Nexus
- 說明
此安裝步驟參照Docker Hub官網安裝,大家也可移步官網查看sonatype/nexus for docker安裝
- docker安裝Nexus
# 拉取鏡像
$ docker pull sonatype/nexus3
# 創建本地掛載文件夾
$ mkdir -p /home/milk/docker/nexus-data
# 設置掛載文件夾權限
$ sudo chown -R 200:200 /home/milk/docker/nexus-data
# 啓動sonatype/nexus3鏡像
$ docker run -d -p 8081:8081 --name nexus -v /home/milk/docker/nexus-data:/nexus-data sonatype/nexus3
- 安裝完成
私服安裝完成後,瀏覽器鍵入
http://192.168.1.100:8081
看到如下界面表示Nexus安裝成功
4.私服設置
- 登錄設置密碼
1.私服安裝完成後都會有一個默認密碼,需自己進入文件夾查詢,以下提供兩種方式查詢
2.查看登錄後會自動進入修改密碼導航,自己根據需求進行修改即可
# 方法一:直接在掛載文件夾中查詢
$ cd /home/milk/docker/nexus-data
$ cat admin.password
# 方法二:直接進入docker容器中的nexus-data
$ docker exec -it 窗口id /bin/bash
$ cat /nexus-data/admin.password
- 設置
登錄成功後,會看到如下頁面,多了一個設置按鈕,我們關注下圖箭頭處即可
- Repositories設置
倉庫分爲如下幾種,hosted,group,proxy三種
hosted:表示存放本地上傳的jar包
proxy:表示存放第三方依賴
group:可以聚合多個倉庫
1. 選擇創建倉庫-》maven2(proxy)
2.倉庫設置
1.Name:可自定義
2.Proxy:可按需設置,必如阿里雲倉庫地址
- Roles設置
1.創建角色
角色設置,默認有管理員和遊客
2.設置權限
1.以下設置了developer角色
2.設置了該角色只能對releases和snapshots倉庫進行操作權限
- Users設置
選擇創建用戶,信息可以按需填寫,下邊可選擇我們剛纔配置的developer角色,配置即可
5.Maven設置
通過上述操作,私服已經搭建完成,現在我們需要設置項目中的pom.xml和settings.xml,只有完成如下設置,才能將我們配置的私服完全運用起來
5.1 settings.xml設置
- localRepository: 表示本地倉庫地址
<localRepository>/home/zycao/work/study-repo</localRepository>
- service:表示登錄私服倉庫用戶名和密碼
<servers>
<server>
<id>study-nexus</id>
<username>user1</username>
<password>user123456</password>
</server>
</servers>
- mirror:配置鏡像
- id:唯一不重複即可
- mirrorOf:配置倉庫id,對應下邊
repository
中id,如果配置爲*
則表示代理所有依賴下載路徑爲mirror配置的url,還有許多關於設置相關的,大家可參考官方文檔進行設置鏡像設置 - url:配置鏡像地址,此處爲配置的私有參庫地址
<mirrors>
<mirror>
<id>nexus-myself</id>
<mirrorOf>*</mirrorOf>
<name>Nexus myself</name>
<url>http://192.168.1.100 :8081/repository/maven-public/</url>
</mirror>
</mirrors>
- profile:配置不同的倉庫
- id:在後續選擇激活那個配置時用到,唯一不重複
- repository:可配置多個,在此配置私有倉庫地址
<profiles>
<profile>
<!--配置激活文件名,唯一不重複-->
<id>study-nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://192.168.1.100 :8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://192.168.1.100 .245:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
- activeProfiles:決定選擇那一個配置生效,此處即爲上邊配置的profiles的id
<activeProfiles>
<activeProfile>study-nexus</activeProfile>
</activeProfiles>
- 完整settings.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>/home/milk/work/study-repo</localRepository>
<!--使用命令創建項目時,以對話模式 Default:true
<interactiveMode>true</interactiveMode>
-->
<!-- offline 決定maven是否離線模式運行,默認離線 Default: false
<offline>false</offline>
-->
<pluginGroups>
</pluginGroups>
<!-- proxies 設置上網代理服務器-->
<proxies>
</proxies>
<!-- servers 配置私服用戶名及密碼 -->
<servers>
<server>
<id>study-nexus</id>
<username>user1</username>
<password>user123456</password>
</server>
</servers>
<!--<mirrors>-->
<!--<mirror>-->
<!--<id>nexus-myself</id>-->
<!--<mirrorOf>*</mirrorOf>-->
<!--<name>Nexus myself</name>-->
<!--<url>http://192.168.1.100 :8081/repository/maven-public/</url>-->
<!--</mirror>-->
<!--</mirrors>-->
<!--根據配置進行激活選擇-->
<profiles>
<profile>
<!--配置激活文件名,唯一不重複-->
<id>study-nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://192.168.1.100 :8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://192.168.1.100 .245:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>study-nexus</activeProfile>
</activeProfiles>
</settings>
5.2 pom.xml設置
創建一個項目,將其打爲jar 包並上傳至maven私服,創建項目自行創建,以下只對pom.xml進行配置說明
- 設置發佈倉庫地址
<!--設置發佈倉庫地址-->
<distributionManagement>
<!--releases版本發佈至此倉庫-->
<repository>
<id>study-nexus</id>
<name>study-nexus</name>
<url>http://192.168.1.100:8081/repository/maven-releases/</url>
</repository>
<!--snapshots版本發佈至此版本-->
<snapshotRepository>
<id>study-nexus</id>
<name>study-nexus</name>
<url>http://192.168.1.100:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
- 設置編譯環境及插件
<!--設置構建插件及環境-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<!--構建設置-->
<configuration>
<encoding>utf-8</encoding>
<!--java編譯版本-->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
6 執行發佈及下載jar包操作
6.1 發佈jar包
直接使用idea的deploy命令即可
下圖中可看到剛纔上傳的jar報,座標,說明一下,如果是SNAPSHOT版本,版本號爲生成的時間戳,但可填寫baseVersion
6.2 下載jar包
# 在需要依賴的項目pom.xml增加依賴座標即可
<dependency>
<groupId>com.study.nexus</groupId>
<artifactId>nexus-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
7 .參考文檔
http://maven.apache.org/guides/mini/index.html
https://hub.docker.com/r/sonatype/nexus3
https://help.sonatype.com/repomanager3