安装docker 自己想办法
docker pull sonatype/nexus3
创建本地目录
mkdir-p/data/nexus/data
授权目录
chmod777-R/data/nexus/data
安装
docker run-d--name nexus3-p8081:8081--restart always-v/data/nexus/data:/nexus-datasonatype/nexus3
查看日志 docker logs -f nexus3 看到 Started Sonatype Nexus OSS 表示启动好了。
这个时候 需要查看管理员密码 这个是一个随机生成的文件
可以在 cat /data/nexus/data/admin.password 查看 切记不可以修改!!!
应该是一长串数据,登录 http://ip:8081 admin 密码就是刚才看到的。
然后会让你修改当前admin的密码,修改后 admin.password 这个文件就消失了。
二、配置nexus
登录nexus管理平台后(注意必须admin登录才行,不然只能浏览模式),可以看到如下界面:
1、创建Blob stores
在创建repository之前,还需要先指定文件存储目录,便于统一管理。就需要创建Blob stores
创建好后可以看到blob stores有两个,一个是系统默认的,一个是刚创建的。如果不想自己创建,使用系统默认的文件存储目录(在sonatype-work/nexus3/blobs)也是可以的。到时候创建repository时,存储目录选择default就可以了。
2、nexus仓库
如图所示,代理仓库负责代理远程中央仓库,托管仓库负责本地资源,组资源库 = 代理资源库 + 托管资源库。
3、创建proxy repository代理仓库
选择maven2(proxy),代理仓库
设置代理仓库
其他的可以采用默认,以后需要修改的可以再修改。
4.创建hosted repository仓库
上图的Hosted设置选项,选项中有三个值:
**Allow redeploy**:允许同一个版本号下重复提交代码, nexus以时间区分
**Disable redeploy**:不允许同一个版本号下重复提交代码
**Read-Only**:不允许提交任何版本
原生的maven-releases库是Disable redeploy设置, maven-snapshots是Allow redeploy。
5、创建group repository组仓库
将hosted repositories宿主仓库的顺序放在proxy repositories代理仓库之前,因为一个group仓库组中可以包括宿主仓库和代理仓库。而整个group repository是作为一个public repository给用户使用的。
所以当查找jar包的时候,如果代理资源库在前面,那就是先从远程去查找jar包,而不是先从宿主仓库(本地仓库)去查找jar包。
三、设置maven
Maven下的setting.xml文件和项目中的pom.xml文件的关系是:settting.xml文件是全局设置,而pom.xml文件是局部设置。pom.xml文件对于项目来说,是优先使用的。而pom.xml文件中如果没有配置镜像地址的话,就按照settting.xml中定义的地址去查找。
1、修改maven配置文件setting.xml
如上图方式获取组仓库smart_group的仓库地址,修改setting.xml文件如下:
修改后可以重新编译项目,必须添加参数-U,(-U,--update-snapshots,强制更新releases、snapshots类型的插件或依赖库,否则maven一天只会更新一次snapshot依赖)。代理仓库会从远程中央仓库下载jar包
#mvn clean compile -U
这个时候可以看到代理仓库已经从中央仓库下载了项目编译需要的jar包。同样地,在组仓库中也能看到所有的jar包,包括代理仓库和宿主仓库的。
2、通过管理平台上传三方jar包
有些jar是第三方提供的,在中央仓库中是没有的,我们可以上传这些本地三方jar包到hosted repository宿主仓库中。
上传成功后,就可以看到hosted repository和group repository中已经有了刚上传的三方jar包
然后项目中通过编译打包就可以下载jar包到本地repository中了,记住maven clean、compile、package首次执行时加参数-U。
3、通过命令上传三方jar包
在setting.xml配置文件中添加hosted repository server
使用如下命令上传jar包:
mvn deploy:deploy-file-DgroupId=com.alan6.land -DartifactId=land-user -Dversion=0.0.1-Dpackaging=jar -Dfile=d:\land-service-user.jar -Durl=http://ip:8081/repository/smart_group/ -DrepositoryId=smart_group
命令解释:
-DgroupId=com.alan6.land 自定义
-DartifactId=land-user 自定义
-Dversion=0.0.1 自定义,三个自定义,构成pom.xml文件中的标识
-Dpackaging=jar 传的类型是jar类型
-Dfile=D:\jar\land-user-0.0.1.jar jar包的本地磁盘位置
-Durl=http://ip:8081/repository/smart_hosted/ hosted资源库的地址
-DrepositoryId=smart_hosted 需要和setting.xml文件中配置的ID一致
上传成功后,hosted repository中已经可以看到了
四、deploy部署jar包到私服
1、release和snapshots jar包区别
SNAPSHOT版本代表不稳定(快照版本),还在处于开发阶段,随时都会有变化。当上传同样的版本号jar包的时候,SNAPSHOT会在版本号的后面自动追加一串新的数字,即日志标签,nexus会根据日志标签区分出不同的版本,在maven引用时,如果使用的是snapshot版本,重新导入maven的时候,会去私库拉取最新上传的代码。
RELEASE则代表稳定的版本(发布版本),一般上线后都会改用RELEASE版本。也就是说1.0,2.0这样的版本只能有一个,也就是说当前版本号下,不可能出现不同的jar。
2、创建snapshot仓库
可以在nexus上添加一个snapshot仓库,专门用于存放snapshot版本的jar包。snapshot仓库也是hosted类型的,创建方式和hosted repository类型。创建好后,加入到组仓库里面就可以了。
3、项目pom.xml文件配置
可以在项目的pom文件中设置具体的relaeses库和snapshots库。如果当前项目的版本号的后缀名中带着-SNAPSHOT,类似
在pom.xml文件中配置 distributionManagement 节点如下,在项目中执行deploy命令后,jar包将会被上传到nexus中。
默认地,maven编译打包不会下载SNAPSHOT版本的jar包,所以还需要在pom.xml文件中配置支持下载snapshot版本jar包。
至此,nexus搭建完毕,支持本地部署依赖jar包