docker搭建maven私服(nexus3),整合springboot上傳下載依賴

2023-02-06 18:00:55

一、前言

我們在JavaWeb開發中必不可少的就是jar包管理-maven,在沒有maven之前,都是自己手動下載jar包匯入到專案中,非常的繁瑣。

maven出現之後,又迎來新的問題,對於倉庫里人家釋出的都可以參照下載,但是公司自己內部寫的jar包,不想讓外人看到,自己公司來回貼上覆制,非常的繁瑣,版本維護起來也是十分頭疼!

這時Nexus Repository出現了,現在主流的還是nexus3,所以今天小編帶大家一起搭建使用一下。當然公司也必須有一個自己的私服,來存放公司的技術沉澱,提高開發效率!

網上教學看了很多,但是基本都是教怎麼上傳到私服,從私服拉取依賴就沒有寫!

本文從上傳到拉去面面俱到,對你有幫助,一鍵三連哈!!

二、介紹

官網地址

nexus3是一種特殊的遠端倉庫,一般部署在公司伺服器或者區域網內的倉庫服務,私服代理廣域網上的遠端倉庫,供公司的Maven使用者使用。

當Maven依賴需要依賴的時候,它從私服請求,如果私服上不存在依賴,則從外部的遠端倉庫下載,快取在私服上之後,再為Maven的下載請求提供服務。

我們還可以把一些無法從外部倉庫下載到的構件上傳到私服上。

總的準則:無論私服有沒有,我們本地都是使用私服提供的!

三、優點

  • 引入速度提高
  • 加速Maven構建
  • 方便管理
  • 穩定性高
  • 降低中央倉庫的負荷
  • 隱私性高

四、docker構建執行

1. 建立掛載目錄

mkdir /mydata/nexus/nexus-data -p

給許可權:

chmod 777 /mydata/nexus/nexus-data/

2. 啟動nexus

docker run -d -p 8081:8081 --name nexus -v /mydata/nexus/nexus-data:/nexus-data sonatype/nexus3

3. 獲取密碼

我們看到密碼可以在容器內獲取:

預設使用者是,唯一生成的密碼可以在卷內的檔案中找到。有關卷的資訊,請參閱持久資料。
admin admin.password

由於我們掛載了資料檔案,主要在宿主機上檢視即可!

切換到目錄:

cd /mydata/nexus/nexus-data/

檢視密碼:

cat admin.password

密碼:206d5b6b-cc58-403f-af03-e5c8772a803a

3. 存取頁面

ip+埠存取:http://192.168.239.132:8081/

4. 登入

使用者:admin
密碼:掛載目錄下的admin.password檔案內

五、nexus設定和解釋

1. 繼續初始化

2. 編寫新密碼

3. 設定匿名存取

由於匿名存取有安全性問題,在公司不是還是禁用為好!

4. 完成

5. 倉庫名稱型別

我們可以看到有三種型別:

倉庫型別 說明
proxy 代理到遠端倉庫,預設國外,可以修改為國內阿里雲代理
group 存放:通過 Nexus 獲取的第三方 jar 包
hosted 存放:本團隊其他開發人員部署到 Nexus 的 jar 包

還有一些倉庫名稱:

倉庫名稱 說明
maven-central Nexus 對 Maven 中央倉庫的代理
maven-public Nexus 預設建立,供開發人員下載使用的組倉庫
maven-releasse Nexus 預設建立,供開發人員部署自己 jar 包的宿主倉庫要求 releasse 版本(生產版本)
maven-snapshots Nexus 預設建立,供開發人員部署自己 jar 包的宿主倉庫要求 snapshots 版本(測試版本)

6. 調整代理地址

點選maven-central進入詳情:

把代理地址換為阿里雲的:
https://maven.aliyun.com/repository/public

往下滑到最後點選儲存!

7. 新建使用者和倉庫

關於很多教學都是新建使用者和倉庫,小編這裡就使用admin和自帶的倉庫了!
一般的小公司夠了,公司有一定規模在新建吧!!

六、settings.xml設定

1. 設定maven上傳資訊

我們開啟原生的settings.xml檔案,把私服的地址和使用者設定上去!

<servers>
  <server>
    <id>maven-public</id>
    <username>admin</username>
    <password>123456</password>
  </server>
  <server>
    <id>maven-snapshots</id>
    <username>admin</username>
    <password>123456</password>
  </server>
  <server>
    <id>maven-releases</id>
    <username>admin</username>
    <password>123456</password>
  </server>
</servers>

2. 設定從私服下載

 <profiles>
    <profile>
        <id>nexus-own</id>
        <!-- 遠端倉庫列表 -->
        <repositories>
            <repository>
                <id>maven-public</id>
                <name>Nexus Central</name>
                <!-- 虛擬的URL形式,指向映象的URL-->
                <url>http://192.168.239.132:8081/repository/maven-public/</url>
                <layout>default</layout>
                <!-- 表示可以從這個倉庫下載releases版本的構件-->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
            <repository>
                <id>maven-snapshots</id>
                <name>Nexus Central</name>
                <!-- 虛擬的URL形式,指向映象的URL-->
                <url>http://192.168.239.132:8081/repository/maven-snapshots/</url>
                <layout>default</layout>
                <!-- 表示可以從這個倉庫下載snapshot版本的構件 -->
                <releases>
                    <enabled>false</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>maven-public</id>
                <name>Nexus Central</name>
                <url>http://192.168.239.132:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>
<activeProfiles>
    <!--需要啟用 <profile>中的ID才生效-->
    <activeProfile>nexus-own</activeProfile>
</activeProfiles> 

七、springboot專案設定

1. 父專案pom檔案

	<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <layers>
                            <enabled>true</enabled>
                        </layers>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <parameters>true</parameters>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <!--打包上傳maven私服-->
    <distributionManagement>
        <repository>
            <!--id的名字可以任意取,但是在setting檔案中的屬性<server>的ID與這裡一致-->
            <id>maven-releases</id>
            <!--指向倉庫型別為host(宿主倉庫)的儲存型別為Release的倉庫-->
            <url>http://192.168.239.132:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>maven-snapshots</id>
            <url>http://192.168.239.132:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

2. deploy上傳私服

雙擊deploy,上傳私服!

3. 私服檢視


一共上傳了兩次,都在私服中存在!

4. 私服依賴在本地參照

我們新建一個springboot專案,然後引入依賴:

要勾選Projects下面的設定,不然無法引入依賴!

5. 測試使用

新專案可以使用依賴中的註解:

八、總結

經過半天的測試加編寫,終於完成,對於私服有了更深的認識!

私服是每個公司必須要有的,當然也是我們必須要掌握的,小編整理出來,方便大家學習!

優點前面都說了,這裡就不多說了!


前人種樹後人乘涼嘛,對你有幫助,還請不要吝嗇你的發財小手點點關注哈!

關注小編的微信公眾號,一起交流學習!文章首發看哦!