為何用到Maven私服?
在實際開發中,項目中可能會用到第三方的jar、內部通訊的服務接口都會打入到公司的私服中。
我們從項目實際開發來看:
-
一些無法從外部倉庫下載的構件,例如內部的項目還能部署到私服上,以便供其他依賴項目使用。
-
為了節省帶寬和時間,在局域網內架設一個私有的倉庫服務器,用其代理所有外部的遠程倉庫。當本地Maven項目需要下載構件時,先去私服請求,如果私服沒有,則再去遠程倉庫請求,從遠程倉庫下載構件后,把構件緩存在私服上。這樣,及時暫時沒有Internet鏈接,由於私服已經緩存了大量構件,整個項目還是可以正常使用的。同時,也降低了中央倉庫的符合。

如上摘抄自私服服務器架設,如下為詳細步驟:
1、下載一個nexus3的鏡像
docker pull sonatype/nexus3

2、將容器內部/var/nexus-data掛載到主機/root/nexus-data目錄
docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
通過 docker ps -a 查看容器啟動情況

驗證,通過id查看容器的詳細信息,輸出如下ip地址。
docker inspect 容器id

緊接着訪問以下這個地址試一下:curl 127.17.0.2:8081

如果啟動失敗,可關閉防火牆再試一下:
systemctl stop firewalld.service
ok,啟動后瀏覽器訪問一下 http://ip:8081

至此,私服搭建成功。
默認登陸賬號 admin admin123

注意,這個時候你可能會遇到如下這個錯誤:
Incorrect username or password, or no permission to use the application.

maven私服登錄的時候默認是不能使用明文密碼,要使用密文密碼,一般在你創建容器的目錄下,比如 root/nexus-data/admin.password ,注意,需要進入容器中找,見下方指令與圖:

docker exec -it c2101070de57 bash
bash-4.2$ cd /nexus-data/
bash-4.2$ cat admin.password
d62fa667-a22b-41db-a14a-6aa6f793f4fbbash-4.2$
去掉后面的 bash-4.2$,d62fa667-a22b-41db-a14a-6aa6f793f4fb 即為密碼。
重新登陸后,會提示你重設密碼:

3、創建maven倉庫
上傳maven私服之前我們先,創建個倉庫

選擇maven2(hosted)

填寫倉庫信息:

創建用戶:

填寫基本信息

創建好賬戶后就可以在右上角切換賬戶了。
接着就是配置本地 maven > conf 了,找到自己本機的 maven conf 下的 setting.xml 文件,添加如下信息:

注意是 services 節點下:
<services>
<server>
<id>ttyy</id>
<username>ttyy</username>
<password>ttyy</password>
</server>
</services>
4、如何將架包上傳到maven私服
創建一個普通的 maven 項目,配置 pom.xml 如下:
<!--注意限定版本一定為RELEASE,因為上傳的對應倉庫的存儲類型為RELEASE -->
<!--指定倉庫地址 -->
<distributionManagement>
<repository>
<!--此名稱要和.m2/settings.xml中設置的ID一致 -->
<id>ttyy</id>
<url>http://192.168.10.130:8081/repository/ttyy-release/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<!--發布代碼Jar插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
</plugin>
<!--發布源碼插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
項目命令行中執行如下指令:
mvn deploy

發布成功后,如何搜索呢?如下圖:

發布后如何使用呢,相信很多小伙伴肯定用過阿里雲的私服,一樣的道理啦:
<dependencies>
<dependency>
<groupId>club.sscai</groupId>
<artifactId>ttyy-springboot</artifactId>
<version>1.0-RELEASE</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>ttyy</id>
<url>http://192.168.10.130:8081/repository/ttyy-release/</url>
</repository>
</repositories>
我創建了一個java相關的公眾號,用來記錄自己的學習之路,感興趣的小伙伴可以關注一下微信公眾號哈:niceyoo
