一 前提准备
1 maven环境 3.5+,java环境 1.8+。
##maven环境变量
M2_HOME ##创建maven环境变量
F:\Mysoft\maven\apache-maven-3.5.2-bin\apache-maven-3.5.2 ##安装路径 bin文件夹父目录
%M2_HOME%\bin; ##加入path
2 安装好nexus3 window安装nexus(maven私服)
二 实现目标
1 配置maven本地仓库
2 配置远程仓库
名称 | 类型 | 作用 |
仓库组(group) | maven2-group | 虚拟仓库组,用于集中管理仓库 |
第三方依赖仓库(3dr) | maven2-hosted | 本地仓库,用于管理公网无资源的第三方jar,例如oracle驱动 |
稳定发行仓库(releases) | maven2-hosted | 本地仓库,用于管理稳定发行的jar |
内测快照仓库(snapshots) | maven2-hosted | 本地仓库,用于管理内测发行的jar |
代理中央仓库(proxy) | maven2-proxy | 代理中央仓库,用于指定公网仓库地址,例如指定阿里云maven中央仓库 |
3 配置使用maven私服,以及发布下载jar
三 架构图
1、结构图
如图:为maven-nexus-proxymaven的交互架构图
蓝色虚线为使用外网代理私服的路线
红色虚线为使用内网资源转移下载路线
##外网
maven本地仓库 指定本地位置缓存下载的jar 默认为官方中央仓库 可配置为私服代理(阿里私服)
nexus私服仓库 通过代理仓库下载缓存jar 提供给局域网内各个maven资源
maven本地仓库 可以通过发布jar到nexus私服进行管理 提供给其他用户使用
##内网
maven本地仓库 指定本地位置缓存下载的jar 必须配置私服 否则下载时超时
nexus私服仓库 通过代理仓库下载缓存jar 如果内网有穿透的机子可以使用代理,若无则要通过存储媒介在外网下载jar后 内网上传至nexus私服仓库 提供给局域网内各个maven资源
maven本地仓库 可以通过发布jar到nexus私服进行管理 提供给其他用户使用
2 部署图
##根据开发规范细分私服如上
1、3rd 私服本地库:用于存放三方包,包括oracle驱动,公司外部支持jar
2、releases 私服本地库:用于存放稳定版本的jar 内网环境下可以上传外网下载的jar
3、snapshots 私服本地库:用于存放内测版本的jar 可以设置更新策略为实时
4、proxy 私服代理库:用于存放外网中央仓库地址 内网环境下一般不存在
5、group 私服公共库:将多个库虚拟成一个库 供方便引用和管理
注意:开发上传外网资源可以存在稳定版本release库,则公司内部jar在内网中如同外网jar
开发正在开发的小版本库可以上传内测snapshot库,一般情况使用svn去管理
开发使用的公司外部jar,需要上传3rd库,以便其他用户下载
开发下载插件和依赖jar均使用公共库group即可
四 配置nexus
1、检测maven环境
mvn -v ##需要配置 JAVA_HOME,M2_HOME
2、启动nexus并登陆
http://localhost:8082/ ##nexus服务ip:port 账号密码默认 admin admin123
如果不修改默认有4个库 1个proxy,1个group,1个release和1个snapshot,3rd在低版本有 nexus3默认没有了
如果需要使用,需要按实际情况配置,一下可选为*
(1)* 配置仓库
可点击新建仓库(略)
(2)* 配置proxy
点击maven-central 进入配置
配置外网代理maven仓库,例如 http://maven.aliyun.com/nexus/content/groups/public/ 阿里云
选择缓存文件位置,默认只有一个在nexus安装路径
(3)配置maven-snapshot和maven-release
启用maven-snapshot与maven-release发布功能 (snapshot修改相同)
(4)*配置maven-public仓库
可以将现有仓库聚合
3、*配置用户
用户默认为admin,admin123
(1)* 新增一个zhangsan
五 配置maven
(如果配置在maven setting中则为全局配置 如果配置为项目pom中则为项目配置)
1、修改maven setting.xml配置
##文件坐标
F:\mysoft\apache-maven-3.5.2-bin\apache-maven-3.5.2\conf\setting.xml
关键配置
maven-releases
admin
admin123
maven-snapshots
admin
admin123
详细配置(可省略)
F:\mysoft\apache-maven-3.5.2-bin\maven_repository
maven-releases
admin
admin123
maven-snapshots
admin
admin123
mirrorId
repositoryId
Human Readable Name for this Mirror.
http://my.repository.com/repo/path
env-test
env-dev
env-dev
2、修改项目pom.xml文件 (父pom即可)
(1)配置下载使用maven公共库maven-group
maven-public
maven-public
http://localhost:8082/repository/maven-public/
true
true
always
warn
mmaven-public
maven-public
http://localhost:8082/repository/maven-public/
true
true
always
warn
(2)配置发布到maven本地库 maven-releases以及maven-snapshots
maven-releases
User Project Release
http://localhost:8082/repository/maven-releases/
maven-snapshots
User Project SNAPSHOTS
http://localhost:8082/repository/maven-snapshots/
(3)使用profile(可省略)
env-dev
maven-public
maven-public
http://localhost:8082/repository/maven-public/
true
true
always
warn
maven-public
maven-public
http://localhost:8082/repository/maven-public/
true
true
always
warn
maven-releases
User Project Release
http://localhost:8082/repository/maven-releases/
maven-snapshots
User Project SNAPSHOTS
http://localhost:8082/repository/maven-snapshots/
六 使用(以idea为例)
(1)配置使用maven
file--》setting--》maven--》指定安装的maven
(2)使用maven工具
ctrl+shift+A 输入 maven projects 点击则右边侧边栏出现maven project管理工具
1、下载远程仓库文件
2、发布release
##
注意release版本发布 版本号必须不能以snapshot结尾
3、上传第三方文件
语法:
mvn deploy:deploy-file
-DgroupId= \包名前缀 com.公司名
-DartifactId= \包项目名 xxx项目
-Dversion= \包版本号 v1.0.0.1(纯数字最佳)
-Dpackaging= \打包类型 一般为jar
-Dfile= \需要上传文件的路径
-DrepositoryId= \serverid(setting指定)
-Durl=
例子:
mvn deploy:deploy-file -DgroupId=com.oracle
-DartifactId=jdbc -Dversion=1.0 -Dfile=ojdbc6.jar
-DrepositoryId=maven-release -Durl=http://ip:prot/repository/maven-releases/
未完待续。。。