感谢你赠我一场空欢喜,我们有过美好的回忆,让泪水染得模糊不清了.偶尔想起,记忆犹新,就像当初,我爱你,没什么目的,只是爱你.
私有服务器,是公司内部Maven项目经常需要的东西。Nexus是常用的私用Maven服务器,一般是公司内部使用。下载地址是http://www.sonatype.org/nexus/go,默认端口8081,这里我选择nexus-3.18.1-01-win64。
Nexus是maven仓库管理器,可以用于管理多个Maven仓库,用来构建maven的本地服务器(局域网内的私服——可以通过设置镜像方法;将远程仓库的请求转到nexus私服上对应的镜像中)——可以节省带宽;提高效率和下载速度。
Nexus常用功能就是:指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。
一:下载Nexus
1,通过官网下载:http://www.sonatype.org/nexus/go
2.百度网盘: 连接:百度网盘 请输入提取码
提取码:812g
二:安装Nexus
解压下载的压缩包
nexus-3.5.2-01 安装目录
bin 包含nexus的启动脚本和相关配置
etc jetty、karaf等配置文件
jre jre环境
lib java架包库
public 关于nexus应用在本地跑起来所需要的资源
system 应用所有的插件和组件
LICENSE.txt 和 NOTICE.txt 版权声明和法律细则
sonatype-work\nexus3 数据文档
blobs/ 创建blob的默认路径,如果你指定了绝对路径,那就不在这里了
cache/ 当前缓存的karaf包的信息
db/ OrientDB数据库的数据,用于存储nexus的元数据的数据库
elasticsearch / 当前配置的Elasticsearch状态
etc/ 大概是运行时配置状态和关于资源库的自定义的相关的东西
health-check/ 看目录,健康检查的相关报告的存储目录吧
keystores/ 自动生成的关于资源库的ID主键
log/ 运行实例生成的日志文件,也有日志文件的压缩包,貌似是每天都会生成日志文件,你可以定期删除老的日志文件
tmp/ 用于存储临时文件的目录
具体每个目录下的各个配置文件的作用,请参考官方文档说明:https://help.sonatype.com/display/NXRM3/Installation
如果你想配置nexus的应用在本地启动的JVM参数,可以在nexus.vmoptions
如果你想改变nexus的端口号,可以在nexus-default.properties
三:启动服务
进入到bin目录(如:C:\project\tools\nexus\nexus-3.18.1-01-win64\nexus-3.18.1-01\bin) 打开cmd窗口,输入 nexus start(如果输入的命令中间加空格不能执行,则加斜杠 nexus/start) 命令;
等待一段时间出现
当看到这个画面时表示nexus服务已启动成功.
在浏览器中输入ip+port既可以访问服务,默认账号和密码为:admin admin123.高版本的admin账号密码为随机密码,在\sonatype-work\nexus3\admin.password文件中,如果第一次登陆后,修改了密码,这个文件就会消失,所以事先记录一下原密码,以防需要.
其它一下常用命令:
nexus start(nexus/start,nexus /run) 启动
nexus console(nexus/console) 启动服务,控制台消失
nexus stop(nexus/stop) 停止服务
nexus install(nexus/install) 祖册服务,window系统会注册在服务里面
nexus uninstall(nexus/uninstall) 卸载服务
Q&A:
1.wrapper | The nexus service was launched, but failed to start
出现这个问题时,经过分析之后发现并非wrapper.conf配置错,而是8081端口号被占用,由于占用该端口号 的进程为系统进程,那么我们就需要修改nexus的端口来避免冲突.
解决办法:
找到C:\project\tools\nexus\nexus-3.18.1-01-win64\nexus-3.18.1-01\etc所在目录
修改nexus-default.properties文件,修改application-port为可以用的端口号
2.启动失败,error code:1060
解决:nexus /run
四:创建仓库
Maven仓库类型
maven仓库类型只有3中,分别是: hosted、proxy、group
- hosted:宿主类型 内部项目的发布仓库,专门用来存储我们自己生成的jar文件
- proxy:代理类型 从远程中央仓库中寻找数据的仓库,如可配置阿里云maven仓库
- group:组类型 组仓库用来方便我们开发人员进行设置的仓库
版本类型
- release:专用于部署发布版本的jar
- snapshot:专用于部署快照版本的jar,jar都是以-SNAPSHOT结尾,pom中version需以-SNAPSHOT(必须大写)结尾
- mixed:可包含release和snapshot版本
snapshot和release版本的区别
在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven也不会主动下载的。如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这个问题,就需要升级组件的版本号,可这样就明显不符合要求和实际情况了。但是,如果是基于快照版本,那么问题就自热而然的解决了,而maven已经为我们准备好了这一切。
maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。
如果是快照版本:
- 那么在发布包的时候mvn deploy时会自动发布到快照版本库中
- 而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。
如果是正式发布版本:
- 那么在发布包的时候mvn deploy时会自动发布到正式版本库中,
- 而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。
所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行开发,在公用库的快照版本更新后,我们也不需要修改pom文件提示版本号来下载新的版本,直接mvn执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。
权限管理
数据权限:repository权限有两种类型:
- repository admin
- repository view
每种类型又有6种权限标识,分别是:*,add,browse、delete、edit、read,*包含其它5种权限,也可以自定义操作标识,正常系统的生成权限足够使用.
增加阿里代理仓库
第一步:设定一个指定的文件存储目录,便于统一管理
由下面新建的完成的,可以看出,
第二步:添加新的代理仓库
第三步:选择添加Maven2的代理
第四步:添加代理
Name 填写 aliyun, URL输入:http://maven.aliyun.com/nexus/content/groups/public/,其他值默认。
添加仓库到组
选择Configuration > Repository, 双击 maven-public, 在Group区域将aliyun移到右侧Members, 上移到maven-central的上面, 点击 Save。
下面给出一些maven远程仓库的地址:
jboss的maven中央仓库地址:http://repository.jboss.com/maven2/
阿里云的maven中央仓库地址:http://maven.aliyun.com/nexus/content/groups/public/
apache的maven中央仓库地址:http://repo.maven.apache.org/maven2/
至此搭建服务,服务相关配置,创建仓库 已结束,感谢大家阅读!
项目中使用私服的相关配置请阅读搭建Maven私有仓库并在项目中使用②