场景
合作伙伴的项目,仅提供部分应用层源码,底层代码不提供,只给提供jar包使用。为了方便二次开发应用,计划吧他的jar包放到本地nexus库上使用。
第一步:创建自己远程仓库(也可以使用现有的),需要使用管理登录
选择maven2(hosted)方式
创建仓库配置
查看仓库信息
复制仓库路径,上传时需要用
第二步:准备上传组件包
需要用到shell脚本,建议在linux环境下搞。
创建操作目录
sudo mkdir /opt/maven-repo
cd /opt/maven-repo
将需要上传的组件包拷贝到操作目录中.注意,脚本是吧默认目录名作为group使用,要和代码配置的一样,否则代码的pom文件要改。
#创建根目录
sudo mkdir com
#上传本地仓库组件
写脚本脚本
注意脚本目录在maven-repo下
vim mavenimport.sh
#!/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"
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}{} ;
给脚本赋予执行权限
执行上传脚本
# -u 用户名
# -p 密码
# -r 远程仓库路径
./mavenimport.sh -u admin -p Safe@123 -r http://127.0.0.1:9091/repository/cmiot/
这里服务器和nexus在一起,所以直接用127内网传比较快。
上传成功
然后就可以用了。用的时候记得配置maven的setting。
在IDEA中使用右侧的Maven小工具栏中顶部的M命令执行,可以成功推送到远端仓库
mvn install:install-file
-Dfile=D:\Users\yuandongfei\.m2\repository\org\opensaml\xmltooling\1.4.6\xmltooling-1.4.6.jar
-DpomFile=D:\Users\yuandongfei\.m2\repository\org\opensaml\xmltooling\1.4.6\xmltooling-1.4.6.po
前几天在commons-tool工程下新建了几个日期相关的公共方法,本地测试没有问题,但到了小伙伴的电脑上,我新加的公共方法报错,原因是没有把commons-tool工程打包推上远程仓库。老大叫我推一下到远程仓库,啊?推远程仓库?怎么推?我先表面上答应着,回到自己位置上“面向百度编程”一顿操作。记录一下:
1.配置pom.xml
<?xml version="1.0" encoding...
RELEASE版本和SNAPSHOT是相对的,⾮SANPSHOT版本即RELEASE版本,RELEASE版本是⼀个稳定的版本号,看清楚咯,是⼀个,不是⼀系列,可以认为RELEASE版本是不可变化的,⼀旦发布,即永远不会变化。虽然RELEASE版本是稳定不变的,但是仓库还是有策略让这个原则变得可配置,有的仓库会配置成redeploy覆盖,这样RELEASE版本就变成SNAPSHOT了,伪装成RELEASE的SNAPSHOT,会让问题更费解和棘⼿,我⼀般称这类⼈为“挖坑专家”。
Maven推送本地jar包到远程仓库
今天在commons-utils 工程下新建了公司项目的公共方法,本地测试没有问题,需要将功能打成打包推上远程nexus仓库,具体推送方式百度了一下,这里将具体操作记录一下:
一.配置pom.xml
在pom文件中添加远程仓库的地址和id.名称可以不需要.当然具体根据实际操作.
<!--配置远程仓库地址-->
<distributionManagement>
<...
本地仓库上传到远程仓库批量上传:在maven本地仓库目录下创建脚本,并将上述内容添加进去脚本文件中在maven本地仓库目录下,右键打开 git 自带的 git bash Here命令窗口:sh 脚本名称.sh -u 用户名 -p 密码 -r http://localhost:8081/repository/仓库名。
上传依赖包到Nexus 服务器的方式有多种, 包含:
1. 单个jar上传: 在Nexus管理台页面上传单个jar
2. 源码编译上传: 在源码项目中使用 Maven的deploy 命令发布
3. 使用脚本批量上传Maven本地库的目录
当你写了一个自我感觉良好的开源工具希望给他人分享,如果只是在github等网站进行公布之外,用户使用起来还不是很方便,特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库,这样别人使用就会方便很多。本文主要介绍如何使用maven发布依赖到中央仓库。
通过上述步骤,你可以搭建Nexus仓库并添加阿里云CentOS镜像源,以实现在客户端中使用Nexus仓库进行镜像文件的同步和访问。请根据具体需求和环境,进行相应的操作和调整。
来到maven-deploy下,将在这里进行打包发布的测试,然后在test-dependx 加入上面deploy的某个版本,测试能否从远程仓库拉取依赖。现在deploy的版本有两个,test引用其中一个,那么deploy模块的版本就不能和引用的一样,避免模块间直接依赖。在导包前,先删掉本地库的文件,因为idea的maven 执行deploy会往本地库也部署一份。图中,id为java 的仓库是测试仓库,点击Add添加仓库,基本信息如下。到这里,私有maven仓库算是搭建出来了,可以发布,拉取依赖了。
System.out.println("错误信息:" + s + "\n失败jar文件: " + jarFile);//YWRtaW4lM0FhZG1pbjEyMw== BASE64加密-->格式 用户名:密码。* http://192.168.8.103:30022/ web访问地址。需要在代码中修改nexus3的请求url和base64加密的字符串。//加入到待上传jar文件列表。* SNAPSHOT版本。* http请求处理器.
上传jar包:
mvn deploy:deploy-file -DgroupId=org.apache.logging.log4j -DartifactId=log4j-api -Dversion=2.16.0 -Dpacckaging=jar -Dfile=D://log4j-api-2.16.0.jar -DrepositoryId=AL-
一、maven配置
我们目的是将自己编写的项目,通过 maven 打包成 jar,然后推送到远程的 maven 仓库,既然涉及到推送,那肯定需要配置用户名和密码,还有我们指定的远程仓库地址。
修改 maven 安装目录下的 conf 目录下的 settings.xml 配置文件:
注意:<server> 里面的 id 可以是任意值,但是后面要跟这个值对应上
DrepositoryId=[这个对应的maven settings.xml servers的id]往maven仓库上传jar分两种情况,一种情况是只上传jar包,另一种 情况是jar包和pom文件同时上传。-DrepositoryId=[这个对应的maven settings.xml servers的id]-Dfile=[jar包的路径] 这个不建议将jar包放在maven本地仓库的文件夹。-Durl=[maven远程仓库的地址]-DpomFile=[pom文件路径]-Dfile=[jar包的路径]