一般情况下,各个公司的开发团队为了提高开发效率,都会使用项目构建工具进行开发。常见的构建工具有Ant、Grandle和Maven等。而使用构建工具,一般情况下都需要管理各种依赖的插件,需要频繁连接服务器。而考虑到开发效率,就需要搭建私服。本文将讲解Nexus安装基于CentOS 6.5下的安装和配置
Maven介绍
Apache Maven是一个创新的软件项目管理和综合工具。
Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件。
Maven最强大的功能就是能够自动下载项目依赖库。
Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。
Maven项目的结构和内容在一个XML文件中声明,pom.xml 项目对象模型(POM),这是整个Maven系统的基本单元。
Maven提供了开发人员的方式来管理:
1)Builds
2)Documentation
3)Reporting
4)Dependencies
5)SCMs
6)Releases
7)Distribution
8)mailing list
概括地说,Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。
Maven增加可重用性并负责建立相关的任务。
Maven最初设计,是以简化Jakarta Turbine项目的建设。在几个项目,每个项目包含了不同的Ant构建文件。 JAR检查到CVS。
Apache组织开发Maven可以建立多个项目,发布项目信息,项目部署,在几个项目中JAR文件提供团队合作和帮助。
Maven主要目标是提供给开发人员:
1)项目是可重复使用,易维护,更容易理解的一个综合模型。
2)插件或交互的工具,这种声明性的模式。
私服介绍
私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
Nexus介绍
Nexus是一个强大的Maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。
如果使用了公共的Maven仓库服务器,可以从Maven中央仓库下载所需要的构件(Artifact),但这通常不是一个好的做法。
正常做法是在本地架设一个Maven仓库服务器,即利用Nexus私服可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。
Nexus在代理远程仓库的同时维护本地仓库,以降低中央仓库的负荷,节省外网带宽和时间,Nexus私服就可以满足这样的需要。
Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。
Nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。
Nexus支持WebDAV与LDAP安全身份认证。
Nexus还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。
为什么要构建Nexus私服?
如果没有Nexus私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。
总之,在本地构建nexus私服的好处有:
1)加速构建,提高效率;
2)节省外网带宽;
3)节省中央maven仓库的带宽;
4)稳定(应付一旦中央服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库
9)灵活的安全和权限管理
这些优点使得Nexus日趋成为最流行的Maven仓库管理器。
Nexus 安装
此时(20160417) Nexus 最新版本为:nexus-2.12.0-01-bundle
JDK 要求是 JDK 7,官网要求 7u6 或之后版本,包括 JDK 8
官网帮助说明 1:http://books.sonatype.com/nexus-book/2.11/reference/install.html
官网帮助说明 2:http://books.sonatype.com/sonatype-clm-book/html/clm-book/installation-configuration.html
我个人习惯
/opt
目录下创建一个目录soft
用来存放各种软件安装包;在/usr
目录下创建一个program
用来存放各种解压后的软件包,下面的讲解也都是基于此习惯我个人已经使用了第三方源:
EPEL、RepoForge
,如果你出现yum install XXXXX
安装不成功的话,很有可能就是你没有相关源,请查看我对源设置的文章压缩包下载(由于国内网络的原因不排除你下载不了):
wget http://download.sonatype.com/nexus/oss/nexus-2.12.0-01-bundle.tar.gz
如果地址下载不了,那是因为你需要开 VPN,你也可以选择使用网盘下载 nexus-2.12.0-01-bundle.tar.gz 版本:链接:http://pan.baidu.com/s/1hrKNaz6 密码:nerc
- 解压压缩包:
tar zxvf nexus-2.12.0-01-bundle.tar.gz
- 解压出来有两个文件夹:
- 这是程序目录:
nexus-2.12.0-01
- 这是仓库目录:
sonatype-work
- 移到目录到我的安装目录下:
mv nexus-2.12.0-01/ /usr/program/
- 进入安装目录:
cd /usr/program/
- 把目录名字改为更好看点:
mv nexus-2.12.0-01/ nexus2.12.0/
- 编辑系统配置文件:
vim /etc/profile
- 在文件的尾巴增加下面内容:
1
2
3
4
5# Nexus
NEXUS_HOME=/usr/program/nexus2.12.0
export NEXUS_HOME
RUN_AS_USER=root
export RUN_AS_USER- 刷新配置:
source /etc/profile
- 由于目录
sonatype-work
以后是做仓库用的,会存储很多 jar,所以这个目录一定要放在磁盘空间大的区内,目前我们还没第一次启动 Nexus,所以这里还是空文件- 我个人习惯把这类目录放在
/opt
下,所以你要特别注意,下面有内容对这个文件夹进行操作的都是基于 opt 目录的:mv /opt/setup/sonatype-work/ /opt/
- 设置配置文件:
vim /usr/program/nexus2.12.0/conf/nexus.properties
- 把文件中该值:
nexus-work=${bundleBasedir}/../sonatype-work/nexus
- 改为:
nexus-work=/opt/sonatype-work/nexus
- 把文件中该值:
- 我个人习惯把这类目录放在
- 默认情况下如果你的 JDK 等系统变量设置好的是无需编辑 Nexus 的配置文件,但是这里还是给大家一下配置文件路径:
vim /usr/program/nexus2.12.0/bin/jsw/conf/wrapper.conf
- 开放防火墙端口:
- 添加规则:
sudo iptables -I INPUT -p tcp -m tcp --dport 8081 -j ACCEPT
- 保存规则:
sudo /etc/rc.d/init.d/iptables save
- 重启 iptables:
sudo service iptables restart
- 添加规则:
- 解压压缩包:
测试安装结果:
- 启动 Nexus:
/usr/program/nexus2.12.0/bin/nexus start
- 查看启动日志:
tail -200f /usr/program/nexus2.12.0/logs/wrapper.log
- 关闭 Nexus:
/usr/program/nexus2.12.0/bin/nexus stop
- 访问:http://你的主机IP:8081/nexus
- 登录账号密码:
- 账号密码:admin
- 密码:admin123
- 启动 Nexus:
Nexus 配置
- 修改默认端口:
vim /usr/program/nexus2.12.0/conf/nexus.properties
,修改该值:application-port=8081 - 下载远程中央库的索引到服务器
- 如上图标注 4 所示,把默认是
False
改为True
- 如上图 jpg 所示,创建任务开始进行索引下载。需要特别提醒的是,如果你的私服是虚拟机,那得保证你分配的硬盘足够大,别像我一样吝啬只给 10 G(现在还剩下 1.9 G),结果报:设备上没有空间
- 如上图标注 4 所示,把默认是
- 项目上配置链接连接私服(下面内容涉及到 maven 的基础知识,请自行私下学习):
- 对项目独立设置:
- 打开项目的 pom.xml 文件:
- 添加下面内容:
1
2
3
4
5
6
7<repositories>
<repository>
<id>Nexus</id>
<name>虚拟机-192.168.0.110-Nexus</name>
<url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
</repository>
</repositories>
- 对全局配置进行设置:
- 打开 maven 的 settings.xml 文件:
- 添加下面内容:
1
2
3
4
5
6
7
8<mirrors>
<mirror>
<id>YouMeekNexus</id>
<name>YouMeek Nexus</name>
<mirrorOf>*</mirrorOf>
<url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
</mirror>
</mirrors>
- 对项目独立设置:
持续集成自动构建后发布到 Nexus 上
- 在 Maven 的 settings.xml 加上连接服务器信息:
1 | <!--设置私库认证信息,用户名和密码我就用默认的,如果你们有权限控制的需求可以创建对应的一些账号--> |
- 在项目的 pom.xml 文件加上:
1 | <!-- nexus-releases nexus-snapshots 与 Maven 的配置文件 settings.xml 中 server 下的 id 对应 --> |
Nexus 手动更新索引文件
- 手动更新索引
- 关闭 Nexus:
/usr/program/nexus2.12.0/bin/nexus stop
- 命令:
cd /opt/sonatype-work/nexus/indexer/central-ctx
- 删除里面默认的文件:
rm -rf *
- 删除里面默认的文件:
- 访问官网索引:http://repo.maven.apache.org/maven2/.index/
- 下载文件:nexus-maven-repository-index.gz:
wget http://repo.maven.apache.org/maven2/.index/nexus-maven-repository-index.gz
- 下载文件:nexus-maven-repository-index.properties:
wget http://repo.maven.apache.org/maven2/.index/nexus-maven-repository-index.properties
- 下载索引解压工具:
wget https://repo1.maven.org/maven2/org/apache/maven/indexer/indexer-cli/5.1.1/indexer-cli-5.1.1.jar
- 执行解压命令(该命令执行需要4分钟左右):
java -jar indexer-cli-5.1.0.jar -u nexus-maven-repository-index.gz -d ./
- 删除解压前文件:
rm -rf indexer-cli-5.1.0.jar nexus-maven-repository-index.gz nexus-maven-repository-index.properties
- 重启服务:
/usr/program/nexus2.11.4/bin/nexus start
- 下载文件:nexus-maven-repository-index.gz:
- 关闭 Nexus:
资料
- http://www.cnblogs.com/leefreeman/p/4211530.html
- http://www.itdadao.com/article/89071/
- http://blog.zhaojunling.me/p/17
- http://m.blog.csdn.net/article/details?id=49228873
- http://mritd.me/2015/12/29/Nexus-2-11-CentOS%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B/
- http://mritd.me/2015/12/28/Nexus-%E7%A7%81%E6%9C%8D%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/
- http://my.oschina.net/liangbo/blog/195739
- http://www.mamicode.com/info-detail-1016489.html
- http://blog.csdn.net/shawyeok/article/details/23564681
- http://zyjustin9.iteye.com/blog/2017321
- Linux 使用nexus搭建maven私服 :http://blog.csdn.net/top_code/article/details/50818352
windows安装参考
- nexus2.x搭建maven私服教程(windows环境):https://blog.csdn.net/Dynamic_W/article/details/75661204
- Windows环境使用Nexus-3.x搭建Maven私服:https://blog.csdn.net/xyzjl/article/details/53148398
- windows+nexus+maven环境搭建:https://blog.csdn.net/u012385217/article/details/51352104
- Nexus私服搭建:https://zhuanlan.zhihu.com/p/37080314
Nexus3.0私服搭建
- Nexus3.0私服搭建:https://zhuanlan.zhihu.com/p/37080314
- Maven私服Nexus3.x环境构建操作记录:https://www.cnblogs.com/kevingrace/p/6201984.html
- Nexus3.6 window版私服搭建 安装、配置教程:https://blog.csdn.net/cool_summer_moon/article/details/78779530
- maven使用nexus3.3在windows下搭建私服:https://www.cnblogs.com/adeng/p/7065717.html
- 利用nexus构建maven、docker、npm、gradle私服仓库:https://juejin.im/post/59964f80f265da248b04c32f