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

来源:https://www.cnblogs.com/wang1221/archive/2023/02/06/17095751.html
-Advertisement-
Play Games

一、前言 我們在JavaWeb開發中必不可少的就是jar包管理-maven,在沒有maven之前,都是自己手動下載jar包導入到項目中,非常的繁瑣。 maven出現之後,又迎來新的問題,對於倉庫裡人家發佈的都可以引用下載,但是公司自己內部寫的jar包,不想讓外人看到,自己公司來回粘貼複製,非常的繁瑣 ...


一、前言

我們在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. 測試使用

新項目可以使用依賴中的註解:
在這裡插入圖片描述

八、總結

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

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

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


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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在做selenium web自動化的時候,有時通過selenium定位不到,或無法操作元素,這個時候就需要通過js來 定位/操作元素,然後通過selenium自帶的execute_script()方法去執行js語句。下麵介紹幾種js的定位方法。 一.ID id的值都是唯一的,所以當存在id欄位時可優 ...
  • Delete ␍eslint(prettier/prettier)錯誤 今天在用HBuilder開發uniapp項目時,想換成vscode進行開發,但是用vscode打開之前的項目,eslint報錯一片紅 解決方案: 方案一:一個一個文件的選擇,具體操作如下,手動把CRLF換成LF。缺點:文件太多, ...
  • 本文主要介紹在Node.js應用中, 如何用全鏈路信息存儲技術把全鏈路追蹤數據存儲起來,併進行相應的展示,最終實現基於業界通用 OpenTracing 標準的 Zipkin 的 Node.js 方案。 ...
  • 這篇文章主要描述分散式互斥方法,包括什麼是分散式互斥,分散式互斥地三種方法:集中式方法、分散式方法和令牌環方法。 ...
  • 模型數據 1.數據放入request 說明:開發中,控制器/處理器中獲取的數據如何放入request域,然後在前端(vue/jsp/...)取出顯示? 先來看一個例子 應用實例需求:表單提交信息,後端獲取信息,並通過request轉發到另一個頁面,顯示信息。 需要知道的是:前端提交的數據,sprin ...
  • 實踐環境 Odoo 14.0-20221212 (Community Edition) 代碼實現 方案1 通過研究發現,點擊odoo form表單按鈕時,會調用odoo14\odoo\addons\web\static\src\js\views\form\form_controller.js文件中的 ...
  • 1 簡介 在Spring MVC中,我們有時需要記錄一下請求和返回的內容,方便出現問題時排查。比較Header、Request Body等。這些在Controller也可以記錄,但在Filter中會更方便。而我們使用的是OncePerRequestFilter。 2 記錄請求 2.1 流重覆讀的問題 ...
  • 實現動態SQL的四種方式: 1、XML配置 使用XML配置動態SQL,細節不表,詳參:《MyBatis快速上手與知識點總結》 - 5.4 多條件查詢 - 動態查詢 2、腳本SQL 使用註解實現,將XML文件的內容轉換為註釋即可 當然,這種方式可讀性差,且難以維護 @Select("<script>s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...