搭建环境:CentOS 6.6 Final、JDK7、Sonatype Nexus、Maven
Maven私有库是类似Maven中央仓库一样用来管理很多Jar版本平台。Maven中央仓库搭建在国外,在我们天朝的“法网”下,访问国外网站有多慢,各位道兄都是知道的。
开发分布式项目使用Maven构建可以划分很多个工程,公司里面一个项目通常由一个开发团队来开发,如果使每个开发人员本地Jar都是最新版本?Maven私有库就是管理Jar版本决绝方案!
本文搭建Maven私有库使用的是Sonatype Nexus 软件搭建,Nexus 是比较流行的仓库管理器搭建方式之一,nexus提供了强大的仓库管理功能,构件搜索功能,它基于REST,前端的UI是一个extjs框架的搭建T客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。
话不多说,开始详细的安装步骤。
注:代码段注释采用 “”//“”表示 。
// 1.需要安装JDK7并且配置好环境变量,直接略过这个步骤
// 2.下载最新版 Nexus(本教程使用的是:nexus-2.11.2-03-bundle.tar.gz)
// 本文使用root用户安装,解压Nexus
// 建立一个 nexus目录并将解压出来软件放到这个目录
# mkdir nexus
# tar -zxvf nexus-2.11.2-03-bundle.tar.gz -C nexus
// 进入目录
# cd nexus
# ls
nexus-2.11.2-03 sonatype-work (一个 nexus 服务,一个私有库目录)
//3、编辑 Nexus 的 nexus.properties 文件,配置端口和 work 目录信息(保留默认)
# cd nexus-2.11.2-03
# ls
bin conf lib LICENSE.txt logs nexus NOTICE.txt tmp //查看lib目录结构发现很多jetty Jar包,说明nexus使用部署容器是jetty
# cd conf
//进入配置文件目录 , 编辑nexus.properties 文件
# vi nexus.properties
# Jetty section
//jetty 部署占用端口是8081
application-port=8081
//指定这个程序可以通过指定IP访问,0.0.0.0 代表所有IP都可以访问
application-host=0.0.0.0
//指定WEB项目的路径 ,${bundleBasedir}代表nexus工程的根目录
nexus-webapp=${bundleBasedir}/nexus
//指定项目访问的路径,即 IP:8081/nexus
nexus-webapp-context-path=/nexus
# Nexus section
//指定nexus存放仓库文件的目录
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF
// 4、编辑 nexus 脚本, 配置 RUN_AS_USER 参数 运行的用户名
# vi /root/nexus/nexus-2.11.2-03/bin/nexus
// RUN_AS_USER= 改为:
RUN_AS_USER=root
// 5、防火墙中打开 8081 端口 。注意:云主机同时需要开放安全组8081端口!
# vi /etc/sysconfig/iptables
// 添加: -A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT 保存后重启防火墙
# service iptables restart
//6、进入bin目录启动 nexus
# ./nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT ****************************************
Starting Nexus OSS...
Started Nexus OSS.
//7、浏览器中打开:http://IP:8081/nexus/ 测试项目是否可以访问。
//8、登录,默认用户名 admin,默认密码 admin123
配置成功 输入用户密码登录。
登录成功截图。
Nexus 配置(登录后)
1、菜单 Administration/Server 配置邮箱服务地址(如果忘记密码,可以通过该邮箱找回密 码)
注意:邮箱需要开通smtp协议,才可以测试发送邮件。
2、给用户配置邮箱地址,方便忘记密码时找回:
3、登录界面点击忘记密码。
4、用户邮箱收到修改后的用户密码。
5、复制密码登录,重新修改密码即可。
Nexus仓库类型简介:
group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库;
hosted 宿主仓库:主要用于发布内部项目JAR包或第三方的JAR包(如购买商业的构件) 以及无法从公共仓库获取的JAR包(如 oracle 的 JDBC 驱动)
proxy 代理仓库:代理公共的远程仓库,默认是Maven中央仓库(https://repo1.maven.org/maven2/);
virtual 虚拟仓库:用于适配Maven 1;
一般用到的仓库种类是 hosted、proxy ;
Hosted 仓库常用类型说明:
releases : 内部的模块中 release 模块的发布仓库 。
snapshots: 发布内部的 SNAPSHOT 模块的仓库 。
3rd party : 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去。
如果构建的 Maven 项目本地仓库没有对应的依赖包,那么就会去 Nexus 私服去下载, 如果Nexus私服也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。 Nexus 私服下载成功后再下载至本地 Maven 库供项目引用。
3、设置 proxy 代理仓库(Apache Snapshots/Central/Codehaus Snapshots)准许远程下载, 如