欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用mvn?deploy命令上傳jar包的實現(xiàn)

 更新時間:2025年03月16日 09:58:39   作者:草青工作室  
本文介紹了使用mvndeploy:deploy-file命令將本地倉庫中的JAR包重新發(fā)布到Maven私服,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、背景

在日常Java開發(fā)中,Maven私服作為團隊協(xié)作的核心樞紐,承載著版本依賴分發(fā)的重任。然而,當(dāng)某天發(fā)現(xiàn)私服中關(guān)鍵JAR包離奇丟失,而本地倉庫仍保留著歷史構(gòu)建文件時,如何快速從本地“復(fù)活”缺失的依賴?此時,如何快速將本地倉庫中的 jar 包重新發(fā)布到私服,成為恢復(fù)構(gòu)建環(huán)境的關(guān)鍵。本文將詳細介紹如何使用 mvn deploy:deploy-file 命令將本地倉庫中的 jar 包發(fā)布到私服,并分享在此過程中可能遇到的問題及其解決方案,幫助開發(fā)者高效解決類似問題。

二、環(huán)境

  • Nexus Repository Manager OSS 2.15.1-02
  • Apache Maven 3.3.9
  • Java version: 17.0.9
  • win 10

三、配置nexus上傳賬號

配置 maven 的 settings.xml 文件,在配置文件中添加2個 server節(jié)點,并輸入 nexus 的用戶名和密碼。配置中的id要記住命令中需要使用。

<servers>
    <server>
        <id>snapshots</id>
        <username>admin</username>
        <password>******</password>
    </server>
    <server>
        <id>release</id>
        <username>admin</username>
        <password>******</password>
    </server>
</servers>

四、執(zhí)行deploy命令上傳包

以下命令都是基于cmd,方便查看都用了^將命令分為多行。mvn配置不光在maven安裝目錄下,還有用戶的環(huán)境配置。
執(zhí)行命令前避免其它配置干擾,最好把只保留maven目錄下的配置。

  • 檢查環(huán)境可以執(zhí)行 mvn -X命令,看看加載了那些配置。
  • 查看有效配置可以執(zhí)行 mvn help:effective-settings命令

1. 首先需要把本地倉中要上傳到j(luò)ar、pom復(fù)制到其它目錄中

cd /d D:\temp\maven\

2. 確定待上傳包版本

上傳的包版本決定,上傳路徑和使用repoitoryId值。-Durl參數(shù)的實際路徑需要在私服中自己找~~~,配置錯了就各種錯?。?!
-DrepositoryId參數(shù)值需要和settings.xml的server id節(jié)點值一至。

SNAPSHOT包參數(shù)

  • 包名有snapshot關(guān)鍵字,如:mydtemo-0.0.1-SNAPSHOT.jar需要使用以下參數(shù)值
  • -Durl=https://nexus.demo.com/nexus/content/repositories/snapshots/
  • -DrepositoryId=snapshots

release包參數(shù)

  • 沒有有snapshot關(guān)鍵字的為release包,如:mydtemo-0.0.1.jar需要使用以下參數(shù)值
  • -Durl=https://nexus.demo.com/nexus/content/repositories/releases/
  • -DrepositoryId=releases

3. 執(zhí)行上傳命令

待上傳的jar包如果有對應(yīng)pom文件,pom中的maven坐標(biāo)沒有引用變量時,比較省事指定一個-DpomFile就可以了

# 指定pomFile參數(shù)時,不需要填寫groupId、artifactId、version三個參數(shù)
mvn -e deploy:deploy-file ^
 -Dfile=./mydtemo-2025.3.7.jar ^
 -DpomFile=./mydtemo-2025.3.7.pom ^
 -Dpackaging=jar ^
 -Durl=https://nexus.demo.com/nexus/content/repositories/releases/ ^
 -DrepositoryId=releases 

如果沒有pom文件就需要手動指定maven坐標(biāo),仔細點兒否則容易出錯,導(dǎo)致拉取依賴找不到包。

# 無pom文件時,需要填寫groupId、artifactId、version三個參數(shù)
mvn -e deploy:deploy-file ^
 -Dfile=./mydtemo-2025.3.7.jar ^
 -DgroupId=com.mydemo.test ^
 -DartifactId=mydtemo ^
 -Dversion=2025.3.7  ^
 -Dpackaging=jar ^
 -Durl=https://nexus.demo.com/nexus/content/repositories/releases/ ^
 -DrepositoryId=releases 

如果是snapshot包,參數(shù)稍微有點兒區(qū)別。這里還有個場景就是指定-Dclassifier參數(shù),在 Maven 中,classifier 屬性用于區(qū)分同一 artifact 的不同版本或變種。通常,一個 artifact 由 groupId、artifactId 和 version 三個基本元素確定。然而,在某些情況下,我們可能需要為同一個 artifact 創(chuàng)建多個不同的版本或變種,比如源代碼包、文檔包或特定平臺的二進制包等。

# 指定classifier參數(shù),向snapshot倉發(fā)布jar包
mvn -e deploy:deploy-file ^
 -Dfile=./mydtemo-spring-1.0.11-SNAPSHOT-dto.jar ^
 -DgroupId=com.mydemo.test ^
 -DartifactId=mydtemo ^
 -Dversion=spring-1.0.11-SNAPSHOT  ^
 -Dclassifier=dto ^
 -Dpackaging=jar ^
 -Durl=https://nexus.demo.com/nexus/content/repositories/snapshots/ ^
 -DrepositoryId=nexus-snapshots 

如果只是上傳pom文件,file參數(shù)也需要指定。

cd /d D:\temp\maven\
# 只上傳pom文件
mvn -e deploy:deploy-file ^
 -Dfile=./mydemo-1.2.0.pom ^
 -DpomFile=./mydemo-1.2.0.pom ^
 -Durl=https://nexus.demo.com/nexus/content/repositories/releases/ ^
 -DrepositoryId=releases 

五、執(zhí)行dependency命令測試下載依賴

上面如果順利的話,已經(jīng)上傳到私服了,下面測試下拉取依賴,當(dāng)然在idea中也可測試。

命令格式

mvn -e dependency:get ^
-Dartifact=mydtemo:com.mydemo.test:jar:2025.3.7

也可以指定配置文件,來取其它倉的依賴。

# 指定配置文件拉取
mvn dependency:get ^
-Dartifact=mydemo:mydemo:pom:1.2.0 ^
-s D:\maven\apache-maven-3.3.9\conf\settings.xml

如果懶得去本地倉中翻找,可以指定下載地址,測試時打開一個目錄就可以了。

# 指定下載目錄(先下載到本倉之后在copy到-Ddest指定的目錄中)
mvn -e -X dependency:get ^
-Dartifact=com.mydemo.test:mydtemo:2025.3.7 ^
-DrepoUrl=https://nexus.demo.com/nexus/content/repositories/releases/ ^
-Ddest=E:\downloads\mvn-test

六、命令解釋

命令解釋:mvn deploy:deploy-file

mvn deploy:deploy-file 是 Maven 提供的一個命令,用于將本地文件(如 jar 包或 pom 文件)直接上傳到 Maven 私服(如 Nexus 或 Artifactory)。以下是該命令的詳細參數(shù)說明:

1. 命令名

  • mvn deploy:deploy-file這是 Maven 的命令名稱,用于將本地文件上傳到遠程倉庫。

2. -Dfile=

作用:指定要上傳的 jar 文件路徑。

說明:

  • 路徑可以是絕對路徑或相對路徑。
  • 建議將要上傳的 jar 包放在一個簡單的目錄下,避免路徑過長或復(fù)雜。

示例:

-Dfile=target/my-artifact-1.0.0.jar

3. -DpomFile=

作用:指定與 jar 包對應(yīng)的 pom 文件路徑。

說明:

  • 如果上傳的是 jar 包,必須同時指定 -Dfile 和 -DpomFile。
  • 如果只上傳 pom 文件,只需指定 -DpomFile。

示例:

-DpomFile=pom.xml

4. -Dpackaging=

作用:指定要上傳的文件類型。

說明:

  • 常見的類型包括 jar 和 pom。
  • 上傳 jar 包時,類型為 jar;上傳 pom 文件時,類型為 pom。

示例:

-Dpackaging=jar

5. -Durl=

作用:指定要上傳的 Nexus 倉庫地址。

說明:

  • Snapshots 版本的 jar 包必須上傳到 Snapshots 倉庫。
  • Releases 版本的 jar 包必須上傳到 Releases 倉庫。
  • 如果類型不匹配(例如將 Releases 包上傳到 Snapshots 倉庫),會報 status code 400 異常。

示例:

-Durl=http://nexus.example.com/repository/maven-releases/

6. -DrepositoryId=

作用:指定使用的倉庫 ID。

說明:

  • 該 ID 必須與 settings.xml 文件中的 <server> 配置的 id 一致。
  • 如果匹配不到 ID,會報 status code 405 異常。

示例:

-DrepositoryId=my-nexus-repo

7. 自動解析 pom 文件

說明:

  • 上傳成功后,Maven 會解析 pom 文件,自動識別 jar 包的存儲路徑。
  • 確保 pom 文件中的 groupId、artifactId 和 version 信息正確,否則可能導(dǎo)致上傳失敗或路徑錯誤。

完整示例命令

以下是一個完整的示例命令,將本地 jar 包和 pom 文件上傳到 Nexus 私服:

mvn deploy:deploy-file \
  -Dfile=target/my-artifact-1.0.0.jar \
  -DpomFile=pom.xml \
  -Dpackaging=jar \
  -Durl=http://nexus.example.com/repository/maven-releases/ \
  -DrepositoryId=my-nexus-repo

七、常見問題及解決方案

1. status code 400 異常

原因:上傳的 jar 包類型與倉庫類型不匹配(例如將 Releases 包上傳到 Snapshots 倉庫)。

解決:檢查 -Durl 參數(shù),確保上傳到正確的倉庫。
詳情:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file (default-cli) on project standalone-pom: Failed to deploy artifacts: Could not transfer artifact com.mydemo.test:**mydemo:jar:2025.3.7 from/to releases (https://com.mydemo.test/nexus/content/repositories/public/): Failed to transfer file: https://com.mydemo.test/nexus/content/repositories/public/com/com/mydemo/**mydemo/2025.3.7/**mydemo-2025.3.7.jar. Return code is: 400, ReasonPhrase: Bad Request.

2. status code 405 異常

  • 原因:-DrepositoryId 與 settings.xml 中的 <server> 配置不匹配。
  • 解決:檢查 settings.xml 文件,確保 id 一致。
    詳情:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file (default-cli) on project standalone-pom: Failed to deploy artifacts: Could not transfer artifact com.mydemo.test:**mydemo:jar:2025.3.7 from/to releasesx (https://com.mydemo.test/nexus/content/repositories/releases/): Failed to transfer file: https://com.mydemo.test/..../....jar. Return code is: 401, ReasonPhrase: Unauthorized.

3. Could not find artifact 異常

  • 原因:pom 文件中的 groupIdartifactId 或 version 信息錯誤。
  • 解決:檢查 pom 文件,確保坐標(biāo)信息正確。

4. Return code is: 401權(quán)限問題

原因:上傳倉庫需要認證,但未配置正確的用戶名和密碼。

解決:在 settings.xml 中配置 <server> 的認證信息。
錯誤詳情:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file (default-cli) on project standalone-pom: Failed to deploy artifacts: Could not transfer artifact com.mydemo.test:**mydemo:jar:2025.3.7 from/to releases (https://com.mydemo.test/nexus/content/repositories/releases/): Failed to transfer file: https://com.mydemo.test/..../....jar. Return code is: 401, ReasonPhrase: Unauthorized.

5. 不能從本地倉直接上傳

需要把本地倉的jar包復(fù)制到其它目錄。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file (default-cli) on project standalone-pom: Cannot deploy artifact from the local repository: D:\java\maven\maven_repo\com\mydemo\test\**mydemo\2025.3.7\**mydemo-2025.3.7.jar

總結(jié)

mvn deploy:deploy-file 是將本地 jar 包或 pom 文件上傳到 Maven 私服的重要命令。通過正確配置 -Dfile、-DpomFile、-Durl 和 -DrepositoryId 等參數(shù),可以高效完成上傳任務(wù)。同時,注意倉庫類型、權(quán)限和 pom 文件信息的正確性,避免常見錯誤。有時候maven版本高或者第也會導(dǎo)致上傳失敗。

到此這篇關(guān)于使用mvn deploy命令上傳jar包的文章就介紹到這了,更多相關(guān)mvn deploy上傳jar包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java List移除相應(yīng)元素的超簡潔寫法分享

    Java List移除相應(yīng)元素的超簡潔寫法分享

    這篇文章主要介紹了Java List移除相應(yīng)元素的超簡潔寫法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java實現(xiàn)將png格式圖片轉(zhuǎn)換成jpg格式圖片的方法【測試可用】

    Java實現(xiàn)將png格式圖片轉(zhuǎn)換成jpg格式圖片的方法【測試可用】

    這篇文章主要介紹了Java實現(xiàn)將png格式圖片轉(zhuǎn)換成jpg格式圖片的方法,涉及java文件讀寫及圖形創(chuàng)建等相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • Java線程池?ThreadPoolExecutor?詳解

    Java線程池?ThreadPoolExecutor?詳解

    這篇文章主要介紹了Java線程池?ThreadPoolExecutor,線程池包括線程集合、阻塞隊列、拒絕策略處理器,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-07-07
  • 理解HashSet里為什么value不是null

    理解HashSet里為什么value不是null

    你有沒有想過Java中HashSet的Value為什么要存PRESENT而不是Null?帶著這個疑問來看下邊的文章尋找答案吧
    2021-09-09
  • 一個簡單的Java音樂播放器

    一個簡單的Java音樂播放器

    這篇文章主要為大家分享一個簡單的Java音樂播放器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • java 數(shù)據(jù)類型有哪些取值范圍多少

    java 數(shù)據(jù)類型有哪些取值范圍多少

    這篇文章主要介紹了java 數(shù)據(jù)類型有哪些取值范圍多少的相關(guān)資料,網(wǎng)上關(guān)于java 數(shù)據(jù)類型的資料有很多,不夠全面,這里就整理下,需要的朋友可以參考下
    2017-01-01
  • Springboot使用redisson?+?自定義注解實現(xiàn)消息的發(fā)布訂閱(解決方案)

    Springboot使用redisson?+?自定義注解實現(xiàn)消息的發(fā)布訂閱(解決方案)

    Redisson是一個基于Redis的Java駐留內(nèi)存數(shù)據(jù)網(wǎng)格(In-Memory?Data?Grid)和分布式鎖框架,它提供了一系列的分布式Java對象和服務(wù),可以幫助開發(fā)者更方便地使用Redis作為數(shù)據(jù)存儲和分布式鎖的解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Spring Boot 中application.yml與bootstrap.yml的區(qū)別

    Spring Boot 中application.yml與bootstrap.yml的區(qū)別

    其實yml和properties文件是一樣的原理,且一個項目上要么yml或者properties,二選一的存在。這篇文章給大家介紹了Spring Boot 中application.yml與bootstrap.yml的區(qū)別,感興趣的朋友一起看看吧
    2018-04-04
  • 淺談Java中ThreadLocal引發(fā)的內(nèi)存泄漏

    淺談Java中ThreadLocal引發(fā)的內(nèi)存泄漏

    本文主要介紹了淺談Java中ThreadLocal引發(fā)的內(nèi)存泄漏,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 淺析Spring boot 中 logback 配置<springProperty> 讀取application.properties 中的屬性

    淺析Spring boot 中 logback 配置<springPropert

    這篇文章主要介紹了淺析Spring boot 中 logback 配置<springProperty> 讀取application.properties 中的屬性,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02

最新評論