上傳設(shè)置
- settings.xml 中設(shè)置倉庫憑證:servers 節(jié)點(diǎn)中添加如下配置.[如果未加密則可跳過]
<server>
<id>releases</id>
<username>************</username>
<password>************</password>
</server>
<server>
<id>snapshots</id>
<username>************</username>
<password>************</password>
</server>
- pom.xml 配置
配置好了settings.xml后火邓,在 代碼庫根目錄下的 pom.xml 加入以下配置:
<!-- 需要發(fā)布二方包 則打開下列配置 -->
<distributionManagement>
<repository>
<id>rdc-releases</id>
<url>https://repo.rdc.aliyun.com/repository/78947-release-CfzLQ7/</url>
</repository>
<snapshotRepository>
<id>rdc-snapshots</id>
<url>https://repo.rdc.aliyun.com/repository/78947-snapshot-XtuBsZ/</url>
</snapshotRepository>
</distributionManagement>
- 推送到私有倉庫中
mvn clean deploy -DskipTests
或者指定 deploy plugin 版本并進(jìn)行部署
mvn clean org.apache.maven.plugins:maven-deploy-plugin:2.8:deploy -DskipTests
拉取制品到倉庫
進(jìn)入所在 maven 項(xiàng)目姜挺,執(zhí)行 mvn package
命令即可当凡。
否則需要建立空白倉庫烘挫】已空白倉庫的用處是可以作為批量制品遷移的原始倉庫,需要用 -Dmaven.repo.local
的參數(shù)颂砸。
mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DartifactId=edu \
-DgroupId=ecjtu \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
然后在代碼根目錄下運(yùn)行
mvn clean package -U -Dmaven.repo.local=../tmpRepo
如果構(gòu)建成功則會(huì)在上級(jí)目錄創(chuàng)建 tmpRepo 本地倉庫噪奄。
然后你的pom.xml文件<denpendencies></denpendencies>節(jié)點(diǎn)中加入你要引用的文件信息∪伺遥可以再次進(jìn)行 package 操作勤篮。依賴則會(huì)下載到本地。
通過 deploy 插件上傳
如果第三方 Maven 包未正規(guī)發(fā)布到網(wǎng)絡(luò)倉庫色罚,而且僅提供 jar 包碰缔,未提供源碼或者源碼編譯報(bào)錯(cuò),那我們可以把 jar 包直接上傳到倉庫戳护,命令如下:
mvn deploy:deploy-file -Durl=file://C:\m2-repo \
-DrepositoryId=some.id \
-Dfile=your-artifact-1.0.jar \
[-DpomFile=your-pom.xml] \
[-DgroupId=org.some.group] \
[-DartifactId=your-artifact] \
[-Dversion=1.0] \
[-Dpackaging=jar] \
[-Dclassifier=test] \
[-DgeneratePom=true] \
[-DgeneratePom.description="My Project Description"] \
[-DrepositoryLayout=legacy]
如果第三方提供了 pom.xml
金抡,可以從中讀取 group、artifact腌且、version 等字段梗肝,比如「微信云支付 Java SDK」使用下列命令:
mvn deploy:deploy-file --settings ./settings.xml -Durl=https://coding-public-maven.pkg.coding.net/repository/tencent-cloud-pay-sdk-java/tencent/ \
-DrepositoryId=coding-public-tencent-cloud-pay-sdk-java-tencent \
-Dfile=../cloudpay.jar \
-DpomFile=pom.xml
通過網(wǎng)頁上傳
登錄對(duì)應(yīng)的私服地址,比如是nexus铺董。然后選擇左側(cè)菜單的 upload巫击。
其他版本的nexus可能是其他方式上傳。
【推薦方式一】migrate-local-repo-tool.jar 工具批量制品上傳
操作步驟:
1.下載遷移工具migrate-local-repo-tool.jar
2.在您本地運(yùn)行該遷移工具,(請(qǐng)首先確保您的JDK版本為1.8及以上)喘鸟。運(yùn)行命令如下:
java -jar migrate-local-repo-tool.jar -cd "C:/Users/hp\Desktop/abc/tmpRepo/classworlds/classworlds/1.1
" -t "https://packages.aliyun.com/maven/repository/2001766-release-lv0JtK" -u ******* -p *******
參數(shù)注解:
-cd 您要遷移的本地目錄匆绣,例如:/$HOME/.m2/repository/
-t 目標(biāo)倉庫地址(您可以在【私有倉庫】界面點(diǎn)擊倉庫地址,獲取您的目標(biāo)倉庫地址)
-u 用戶名
-p 密碼
根據(jù)您的實(shí)際需求指定合適的參數(shù)什黑,然后執(zhí)行該命令崎淳,稍等片刻,您的本地倉庫中的制品將會(huì)被批量遷移到您所指定的 Maven 私庫中愕把。
如果遷移的本地目錄中文件目錄過多或者目錄層級(jí)過深拣凹,可能會(huì)導(dǎo)致遷移命令卡死或者返回異常。推薦做法是只遷移你自己的私有制品到私有倉庫中恨豁,構(gòu)建時(shí)拉取公共制品包可以使用我們提供的公共代理庫嚣镜。比如假設(shè)你的私有制品都放置在 /$HOME/.m2/repository/com/alibaba/ 目錄中,你可以將com/alibaba/ 目錄復(fù)制一份到一個(gè)空的目錄中橘蜜,比如復(fù)制到 /tmp/repo/ 中菊匿,然后運(yùn)行遷移命令時(shí)將-cd命令參數(shù)指定為 /tmp/repo/,這樣遷移工具只會(huì)遷移你的私有制品计福。
【推薦方式二】批量上傳Maven倉庫 jar 包到 Nexus3.x 私服
1.先將本地 maven/repository 倉庫打一個(gè)完整的zip壓縮包
2.上傳到 linux 目錄跌捆,如:/opt
3.解壓 repository.zip
4.進(jìn)入repository 目錄
5.創(chuàng)建 touch mavenimport.sh 腳本,寫入以下內(nèi)容象颖;
#!/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 params
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
;;
u) USERNAME="$OPTARG"
;;
p) PASSWORD="$OPTARG"
;;
esac
done
find . -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}/{} ;
6.輸入chmod a+x mavenimport.sh進(jìn)行可執(zhí)行授權(quán)
7.執(zhí)行導(dǎo)入命令
./mavenimport.sh -u admin -p admin123 -r http://ip:8081/repository/maven-releases/
8.等待全部導(dǎo)入完畢后佩厚,在 Nexus 上刷新即可看到已導(dǎo)入的 jar。