Maven 開發實踐

文章目錄

  • 1. 搭建私服(windows)
  • 2.上傳依賴
  • 3.多個遠程倉庫配置
  • 4.其它

1. 搭建私服(windows)

  1. 軟件下載
    https://help.sonatype.com/en/download.html
  2. 修改端口
    etc/nexus-default.properties
  3. 啟動程序
    管理員身份進入進入bin目錄下執行.\nexus.exe /run
  4. 創建Maven倉庫
    image-20250804215245555
  5. 選擇hosted類型
    (如果需要創建npm的js庫也可以選擇npm類型的)
    image-20250804215245555
    設置類型為Mixed和Allow Redeploy(可以重復deploy倉庫)

image-20250804215540690
如果需要更細粒度的控制用戶權限可以在左側菜單設置
在這里可以指定用戶是否有上傳依賴的權限

image-20250804220539492

2.上傳依賴

  1. 批量上傳依賴(Linux版本,利用Curl命令上傳Jar包)
#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line paramswhile getopts ":r:u:p:" opt; docase $opt inr) REPO_URL="$OPTARG";;u) USERNAME="$OPTARG";;p) PASSWORD="$OPTARG";;\?) echo "Invalid option -$OPTARG" >&2;;esac
doneecho $USERNAME
echo $PASSWORD
echo $REPO_URLfind . -type f -not -path './mavenImport.sh' -not -path '*/\.*' -not -path '*/\archetype-catalog.xml' -not -path '*/\maven-metadata-local.xml' -not -path '*/\maven-metadata-deployment.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

將腳本復制到依賴的根目錄下,執行命令
image-20250817093518067

sh mavenImport.sh -uadmin -rpassword -p倉庫地址
  1. Maven Deploy
    如果是開源依賴建議使用批量腳本上傳到倉庫中,如果自己開發的依賴需要上傳到倉庫中則建議通過deploy
    在項目中配置倉庫地址
    image-20250817095855495
    在pom中設置發布的倉庫
    <distributionManagement><repository><id>test</id><url>http://localhost:7088/repository/test/</url></repository></distributionManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

在settings.xml中設置倉庫的用戶密碼(倉庫id要對應上)

 <servers><server><id>test</id><username>admin</username><password>馬賽克</password></server></servers>

然后在IDEA里面deploy
image-20250817100722163
可以看到已經成功上傳到nexus
image-20250817112404252

3.多個遠程倉庫配置

目標就是解決如何將自己搭建的nexus私服和開源依賴配合使用,因為apache是沒有我們自己上傳的依賴,而我們自己的nexus私服中有沒有開源依賴。(當然也可以將緩存的開源依賴通過上面的批量腳本上傳到nexus私服中,內網開發如果無法聯網可以參考該做法)
在此之前需要了解倉庫和鏡像的區別
倉庫分為本地倉庫,遠程倉庫,中央倉庫。本地倉庫很好理解,遠程倉庫就是公司或者組織自己搭建的倉庫,比如本文上面用nexus搭建的倉庫,而中央倉庫就是apache的倉庫,默認配置好了,不用顯式配置。
如果我們的settings.xml什么都不配置,就會默認使用Maven自帶的倉庫,缺點是速度慢。
鏡像就是提供與原始倉庫相同的內容,通常位于地理位置更近或網絡條件更好的服務器上,用于加速依賴下載,比如阿里云鏡像倉庫,鏡像本質上也是倉庫,但是阿里云的鏡像只是apache中央倉庫一個復制品,他們不會將公司內部的依賴上傳上去。
所以鏡像使用和多倉庫還是有區別的,如果我們只為了加快開源依賴的緩存速度可以使用一個鏡像(遠程倉庫)去cover中央倉庫,比如阿里云鏡像的配置

 <mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共倉庫</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

但是maven中央倉庫和阿里云鏡像是不會有我們自己上傳的私有依賴的,還需要配置自己的倉庫

在pom中配置自己搭建的遠程倉庫(settings.xml中配置也可以)

<repositories><repository><id>test</id><url>http://localhost:7088/repository/test/</url></repository><repository>
</repositories>

這里同時在另一個項目中引入上面的私有依賴和開源依賴

<dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><dependency><groupId>com.cll.jtool.single</groupId><artifactId>jtool-single</artifactId><version>0.0.1</version></dependency></dependencies><!-- 定義版本屬性 --><repositories><repository><id>test</id><url>http://localhost:7088/repository/test/</url></repository></repositories>

完整的settings.xml配置

<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"><servers><server><id>test</id><username>admin</username><password>馬賽克</password></server></servers><mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror> 	</mirrors>
<repositories><repository><id>test</id><url>http://localhost:7088/repository/test/</url></repository></repositories>
</settings>

在這個項目的repo中可以看到所以私有依賴和緩存依賴都被加載下來了
image-20250817112755624
通過_remote.repositories可以看到jar的來源
image-20250817112932054
開源依賴的來源為aliyun倉庫
image-20250817114117857

注意上面的阿里云鏡像倉庫僅僅覆蓋了maven中央倉庫,而不包括nexus私服test,如果設置如下,那么maven在加載私服的依賴時就不會去真正的私服加載而是去阿里云鏡像倉庫加載,最終也會緩存失敗。

<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共倉庫</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

清空本地倉庫重新加載就會報錯

Could not find artifact com.cll.jtool.single:jtool-single:pom:0.0.1 in aliyunmaven (https://maven.aliyun.com/repository/public)

4.其它

  1. 開啟debug模式
    即使pom正確配置,idea也可能因為本地緩存問題導致加載依賴緩慢,這時候可以直接執行
    image-20250817114710903
    有時候因為pom的語法出現問題,可以借助debug模式快速定位

image-20250817114849408
尤其是當pom文件過大借助debug模式可以快速定位問題
image-20250817114934946

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93690.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計心得——如何架構選型

一、架構的作用 可能對于很多的公司&#xff0c;其實架構本身的重要性并不大。大家一定明白這回事&#xff0c;架構在實際的開發&#xff0c;在大多數的場景下其實用處并沒有書籍和資料中講的那樣重要&#xff0c;甚至是可有可無。這樣講是不有些可笑&#xff1f;是不是覺得挺意…

vba學習系列(12)--反射率通過率計算復雜度優化25/8/17

系列文章目錄 文章目錄系列文章目錄前言一、反射率通過率1.整體通過率2.整體通過率3.客戶工藝匹配4.機臺通過率分析5.鏡片通過率罩次分析分析1.1分析1.26.鏡片通過率圈數分析分析1.1分析1.28.鏡筒通過率圈數分析分析1.1分析1.29.鏡筒通過率罩次分析分析1.2總結前言 一、反射率通…

Microsoft WebView2

運行效果 代碼如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Form…

GitCode 疑難問題診療:全方位指南

一、問題診斷與解決框架1.1 通用問題排查流程在面對 GitCode 問題時&#xff0c;遵循一套科學的排查流程至關重要。首先&#xff0c;詳細記錄問題出現時的具體操作步驟與相關報錯信息&#xff0c;這有助于精準定位問題根源。例如&#xff0c;若在執行git push命令時出現錯誤&am…

AMD Ryzen AI Max+ 395四機并聯:大語言模型集群推理深度測試

本文介紹使用四塊Framework主板構建AI推理集群的完整過程&#xff0c;并對其在大語言模型推理任務中的性能表現進行了系統性評估。該集群基于AMD Ryzen AI Max 395處理器&#xff0c;采用mini ITX規格設計&#xff0c;可部署在10英寸標準機架中。 Jeff Geerling大佬還開發了名…

深度學習·GFSS

GFSS General Few-Shot Segmentation 任務實現方式與zero-shot有所不同本篇論文只涉及同一個模態(圖像)&#xff0c;訓練過程中&#xff0c;novel class有幾個圖像提供&#xff0c;提供k個就稱之為k-shot。先從圖像中提取class prototype&#xff0c;然后這個原型向量作為查詢&…

Transformer架構的數學本質:從注意力機制到大模型時代的技術內核

系列專欄推薦&#xff1a;零基礎學Python&#xff1a;Python從0到100最新最全教程 深入淺出講解神經網絡原理與實現&#xff0c;從基礎的多層感知機到前沿的Transformer架構。包含完整的數學推導、代碼實現和工程優化技巧。 寫在前面&#xff1a;為什么理解Transformer如此重要…

最新微信小程序一鍵獲取真實微信頭像和昵稱方法

使用公開免費插件&#xff0c;快速實現獲取用戶頭像和昵稱&#xff0c;已附uniapp、微信開發工具開發詳細教程。前言為了保護用戶隱私&#xff0c;wx.getUserInfo、wx.getUserProfile都沒法獲取到用戶頭像和昵稱了&#xff0c;只能通過設計用戶主動選擇/輸入形式&#xff0c;操…

路由器配置之模式

文章目錄配置路由器時&#xff0c;有一個模式選擇最佳實踐各個選項的區別11b only11g only11n only11bg mixed11bgn mixed配置路由器時&#xff0c;有一個模式選擇 最佳實踐 ? 追求速度&#xff1a;選 11n only&#xff08;需所有設備支持&#xff09;。 ? 兼容性優先&…

評測系統構建

合成數據更“科研驅動”&#xff0c;強調 controllability 和 generalization evaluation&#xff1a; 之前往往直接采用經典數據集如OGB和OGB-large提供的經典數據集和數據劃分思路 該思想從現有真實數據中學習參數&#xff0c;再構造類似但分布略異的數據集&#xff0c;驗證模…

【計算機網絡面試】TCP/IP網絡模型有哪幾層

參考&#xff1a; 2.1 TCP/IP 網絡模型有哪幾層&#xff1f; | 小林coding | Java面試學習 以下為自己做的筆記 應用層 專注于為用戶提供應用功能&#xff0c;如HTTP、FTP、Telnet、DNS、SMTP等。應用層不關心用戶是怎么傳輸的&#xff0c;當兩個設備間的應用需要通信時&…

3 種方式玩轉網絡繼電器!W55MH32 實現網頁 + 阿里云 + 本地控制互通

目錄 1 前言 2 項目環境 2.1 硬件準備 2.2 軟件準備 2.3 方案圖示 3 例程修改 4 功能驗證 5. 總結 1 前言 HTTP&#xff08;超文本傳輸協議&#xff0c;HyperText Transfer Protocol&#xff09;是一種用于分布式、協作式、超媒體信息系統的應用層協議&#xff0c; 基于 TCP/IP…

第四篇:科技封鎖與文化滲透篇——T-501 與 M-208 雙引擎布局(節奏增強版)

科技封鎖與文化滲透篇——T-501 與 M-208 雙引擎布局&#xff08;節奏增強版&#xff09; 引子 在全球競爭中&#xff0c;光有資本和市場遠遠不夠。 ? 科技封鎖&#xff08;T-501&#xff09;&#xff1a;通過技術標準、專利網絡、供應鏈控制&#xff0c;讓對手進入成本極高的…

python實現梅爾頻率倒譜系數(MFCC) 除了傅里葉變換和離散余弦變換

語音識別第4講&#xff1a;語音特征參數MFCC https://zhuanlan.zhihu.com/p/88625876/ Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What’s In-Between https://haythamfayek.com/2016/04/21/speech-processing-…

springBoot+knife4j+openapi3依賴問題參考

pom文件附帶版本<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.12</version></parent><dependencies><!-- SpringDoc starter --><d…

XML DOM 高級

XML DOM 高級 引言 XML DOM(Document Object Model)是用于解析和操作XML文檔的一種標準,它允許開發者通過編程方式訪問和修改XML文檔的內容。本文將深入探討XML DOM的高級特性,包括XML解析、節點操作、事件處理以及性能優化等,幫助讀者全面理解并掌握XML DOM的高級應用。…

「第18講 內容生成應用場景與多語言支持」AI Agent開發與應用:基于大模型的智能體構建

第18講核心內容概述內容生成應用場景營銷文案生成&#xff1a;基于產品特征自動生成廣告語、社交媒體文案&#xff0c;支持個性化推薦和A/B測試優化。新聞報道輔助&#xff1a;快速生成財經、體育等領域的結構化新聞摘要&#xff0c;結合實時數據更新內容。教育內容定制&#x…

金融業務安全增強方案:國密SM4/SM3加密+硬件加密機HSM+動態密鑰管理+ShardingSphere加密

國密SM4/SM3 SM4&#xff1a;對稱加密算法&#xff0c;分組長度128位&#xff0c;密鑰長度128位&#xff0c;適用于數據加密&#xff08;如數據庫字段、通信報文&#xff09;】 加密存儲&#xff1a;用戶身份證號、銀行卡號等敏感字段&#xff08;配合ShardingSphere等中間件自…

Chaos Vantage 2.8.1 發布:實時探索與材質工作流的全新突破

作為行業領先的實時光線追蹤渲染器&#xff0c;Chaos Vantage再添利器。2.8.1版本更新聚焦材質工作流、硬件效率與API拓展&#xff0c;為建筑可視化、動畫制作等領域帶來更流暢的操作體驗與更深層的定制化可能。 一、核心功能更新&#xff1a;讓創作更順暢 完整V-Ray材質節點支…

【集合框架List接口】

&#x1f449; 用 ArrayList 存數據&#xff0c;結果插入時卡住了&#xff1f; &#x1f449; 想刪除某個元素&#xff0c;卻發現索引錯亂了&#xff1f; &#x1f449; 不知道該用 ArrayList 還是 LinkedList&#xff0c;選錯了導致性能瓶頸&#xff1f;一、List 是什么&#…