1.搭建Maven私服背景
公司还是按捺不住,要搭建一个自己的Maven本地仓库,可以让开发人员down架包,从内网还是快很多。
这样公司的maven本地仓库就是 开发人员自己电脑上的maven仓库 和 Maven远程仓库 之间的一个缓冲仓库。
那要构建一个maven私服,需要用到Maven仓库管理软件,关于Apache Archiva,Artifactory,Sonatype Nexus的区别,有下面这些的参考对比:
http://blog.sina.com.cn/s/blog_72ef7bea0102vq0k.html
http://www.sonatype.org/nexus/2015/02/23/migrating-from-artifactory-archiva-or-a-raw-maven-repository-to-sonatype-nexus/
2.安装Nexus,并初次启动Nexus
这里我们下载开源版 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包。下载地址:http://www.sonatype.org/nexus/go。
这里先以windows上为例【Linux上之后再来一份】
在你点击下载之后,会有Read THE BOOK 的入口和加入NENUX社区的入口。
这里直接给你ReadTheBook的地址:https://help.sonatype.com/display/NXRM3
这里你可以找到官方提供的完整安装和使用教程。【因为这里使用的是Nexus3的版本,和参考文章中不大一致】
下载的压缩包解压下来
然后cmd,命令窗口进入nexus-3.5.2-01目录下的bin目录下,按照官方的启动方式,需要在bin目录下使用nexus /run命令启动,如下图
确认之后,下面会打印出来启动的相关信息,接下来,耐心等待它启动完成。
直到出现下面这个,才算启动完成。
初次启动之后,你可以在浏览器上访问nexus这个maven管理器
地址:http://localhost:8081/
当然,你可以使用默认的用户登录。
用户名:admin
密码:admin123
此时,观看命令窗口,会有记录相关的操作记录。
3.将nexus配置为系统服务
根据官方文档说明,将nexus配置为系统服务是一个很好的选择。因为
第一:上面的安装和启动过程并没有默认的把nexus作为服务加入系统服务中;
第二:这样下次服务器重启,服务也会重启。
但是这个有个前提,就是已经确保安装了Java运行时环境。
接下来,我们重新打开一个窗口,去将nexus加入系统服务
最后的<optional-service-name>,咱们直接命名成nexus就好。【当然,最后这个不指定的话,默认就是创建成nexus服务名】
在windows7上安装nexus为系统服务时,报错:could not open SCManager
但是报错如下:
解决方法:
然后再次运行
如果再解决不了,那就在
直接以管理员身份运行这个命令提示符,然后安装服务。
显示安装成功之后,可以进入控制面板---》管理工具---》服务
查找名为nexus的服务
你可以选择,点击上面的启动按钮启动服务,也可以用下面的命令启动服务
【当然,可以在上面配置启动参数,这个之后再去查看配置】
启动完成之后,试着访问一下http://localhost:8081/
因为上面服务是自动的。
重启电脑之后,再次访问,可以访问到,完美。
4.配置nexus和熟悉它
第一步,跟随着说明文档,看看下载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
5.搭建maven私服资源库
由于现在使用的nexus3,所以在nexus应用上资源库初始化目录和nexus2有很大的不同,但是类型都是一样的。
第一步:首先http://localhost:8081/
登录上nexus,未登录的状态下是这样的。
使用默认用户名admin密码admin123登录后,如下
第二步:使用nexus3要搭建maven私服的核心功能
在nexus安装并启动之后,我大概的把整个nexus的官方说明文档走了一遍,主要就是介绍了左侧菜单中的各个功能模块。https://help.sonatype.com/display/NXRM3/Configuration
有兴趣去看看,还是很有帮助的。
====================================================================================================================
-------------------------------------------------------------------------------------普及-----------------------------------------------------------------------------------------------------------------
上面提到的一点,不管nexus版本是怎么样的,至少,repository的类型是一样的。
先看一下大概的目录结构:
根据多方的文档和别人的博客,再综合官网的解释,我就这样理解得出:
资源库也就是这么三种,如上图中 【代理资源库】【托管资源库】【组资源库】,其实名字就是我自己瞎起的。
具体解释一下:
【代理资源库】:就是配置了外网的maven远程仓库地址的资源库,本地找不到,就会通过代理资源库中的地址,找到远程仓库,从远程仓库中下载所需要的jar。
【托管资源库】:就是放在本地的资源库,零零散散的jar,从远程仓库中下不到,只能自己在网上找,找到jar下载下来,放在托管资源库中,交给nexus统一管理。不然哪天想去用连接数据库的jar包,还得自己翻磁盘,多麻烦。
【组资源库】 :从上面①+②看出来,其实组资源库中并没有jar包,而是把代理资源库和托管资源库统一配置到组资源库中,然后组资源库作为一个唯一的public提供给所有人使用。就像工人1+工人2把自己的账单统一给包工头,让包工头去跟老板结账是一个道理。
好,明确了这一点,开始往下看吧。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果你想直入主题,往下看。
①在创建 repository之前,还是需要先设定一个指定的文件存储目录,便于统一管理。
由下面新建的完成的,可以看出,
②第二步,创建Proxy Repository 代理资源库
创建页面出来之后,页面上有三个input框是必填的:
远程Maven地址:https://repo1.maven.org/maven2/
其他的不用更改了。保存就好了。
文章来源: 使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
1、在搭建过程中,要记得新建repository是要根据nexus规则分别新建proxy,hosted,group三个Browse,并将proxy和hosted加入到group
2、安装完成后在有网的情况下测试是否安装成功,将setting文件的下载地址改为私服地址后,可以看到我们新建的repository中没有jar的,然后在删除项目已经down好的jar,然后在执行mvn install,刚才删除的jar又重新down回来后,在去看私服上新建的仓库,会发现该库中已经有了你项目中的所有jar包纪委安装成功,可以移植到内网开发环境。至于内网中初始仓库的jar包和后面项目所需的新jar包,我们还是采取了最原始的方法,拷到setting指向的本地仓库(.m2),然后在项目中执行mvn install,即可上传到私服。其他开发人员就可以直接引用了(此方法为个人愚见,欢迎有更优秀想法指导赐教)。