曾静的技术博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

Maven私有库Nexus的安装和使用

在进行Java开发的时候,通常会使用Maven进行第三方库的管理,类似于iOS中的Cocoapods。我们在使用Cocoapods的时候都感受过更新索引库Specs的痛苦,使用Maven的时候依赖库也是从中央库(Central Repository)下载,速度可想而知会很慢。另外如果我们内部开发了一些基础的工具库,又不太方便托管到Central Repository的时候怎么办呢?

thenexus-header-final2.jpg

参考Cocoapods我们可以搭建内部的私有库来解决这些问题。Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,通常会在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。这里记录下使用Nexus来搭建Maven的私有库的过程,本文基于CentOS 6.5

手动安装Nexus 2.0

1、下载nexus

到官网下载最新版本的nexus,下载地址http://www.sonatype.org/nexus/archived/,本文使用的版本是Nexus 2.12.0-01

wget http://download.sonatype.com/nexus/oss/nexus-2.12.0-01-bundle.tar.gz

2、创建一个nexus文件夹将所有的东西放在下面

mkdir -p /home/nexus

3、解压

tar zxvf nexus-2.12.0-01-bundle.tar.gz

将解压后的文件拷贝到刚才创建的nexus目录下面

4、配置防火墙

nexus的默认端口是8081, 如果启动后无法正常访问需要配置下防火墙策略:

iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
/etc/init.d/iptables save
service iptables restart

5、启动

cd /home/nexus/nexus-2.12.0-01/bin
./nexus start

启动成功后访问地址:http://localhost:10081/nexux/

nexus配置说明

1.Repository类型

关于Repository的类型有如下几种:

  • group: 仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组
  • hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库。
  • proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  • virtual: 虚拟组,暂未使用

2.默认Repository

nexus会默认创建如下几种Repository:

  • 1、Public Repositories, 这是一个Repository Group,该Repository Group包含了多个Repository,其中包含了Releases、Snapshots、ThirdParty和Central。
  • 2、3rd party,该Repository即是存放你公司所购买的第三方软件库的地方,它是一个由Nexus自己维护的一个Repository。
  • 3、Apache Snapshots,这是一个代理Repository,即最终的依赖还是得在Apache官网上去下载,然后缓存在Nexus中。
  • 4、Central,这就是代理Maven Central Repository的Repository。
  • 5、Releases,你自己的项目要发布时,就应该发布在这个Repository,他也是Nexus自己维护的Repository,而不是代理。
  • 6、Snapshots,你自己项目Snapshot的Repository。

使用Docker安装Nexus 3.0

1、安装Docker

参考《CentOS安装Docker》

2、安装Nexus

(1)下载镜像
docker pull sonatype/nexus3
(2)创建nexus的数据存储目录

创建存储文件目录,并修改目录拥有者,容器里面运行的uid是200

mkdir -p /opt/nexus-data
chown -R 200 /opt/nexus-data
(3)创建并启动服务
docker run -d -p 8081:8081 --name nexus3 -v /opt/nexus-data:/nexus-data sonatype/nexus3

参数说明:

  • -d:指的是后台运行
  • -p 8081:8081:指把容器8081端口映射到主机8081端口,格式为“主机端口:容器端口”
  • -v /opt/nexus-data:/nexus-data:把容器里的/nexus-data目录,映射到主机的/opt/nexus-data目录
  • –-name nexus3:容器的名称
  • sonatype/nexus3:需要下载的镜像

配置Maven

1、Mac安装Maven

brew install maven

2、修改配置文件

安装完成后Maven的配置文件在:/usr/local/Cellar/maven/{版本号}/libexec/conf这个目录下面。找到settings.xml文件在mirrors节点下面新增如下配置:

<mirror>
	<id>nexus</id>
	<mirrorOf>central</mirrorOf>
	<name>central repository</name>
	<url>http://192.168.3.18:8081/repository/maven-public/</url>
</mirror>

表示新增了一个镜像配置,第三方库从这个镜像地址下载。

3、编写Maven示例程序

使用Maven的模板快速创建一个webapp的项目:

mvn archetype:generate -DgroupId=com.devzeng.demo -DartifactId=demo-app -DpackageName=com.devzeng.demo -Dversion=1.0

如果在控制台看到有jar包从http://192.168.3.18:8081这个地址下载表示配置成功。

参考资料

1、《Nexus私服使Maven更加强大》

2、《CentOS上搭建私有maven仓库,提供jcenter镜像》

3、《CentOS安装nexus(Maven仓库管理器)》

4、《Centos 基础开发环境搭建之Maven私服nexus》

5、《在 Docker 搭建 Maven 私有库》

6、《使用sonatype nexus搭建jcenter mirror》

7、《Docker 搭建Nexus OSS3私服》

8、《Nexus入门指南(图文)》

最近的文章

使用Dockerfile构建Docker镜像

Docker中有个非常重要的概念叫做——镜像(Image)。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。...…

Note继续阅读
更早的文章

CentOS安装Docker

之前写过一篇关于在Mac上面使用并安装Docker的文章《Mac上Docker的安装和使用初探》,介绍了在Macos上面安装Docker的步骤。近期由于需要在一台CentOS 6.5的服务器上面部署一些服务,考虑到使用Docker来做这些事情,记录一下处理的步骤。检查内核版本uname -r如果输出的信息为2.6.32-431.el6.centos.plus.x86_64,表示当前的内核版本是2.6.32。docker需要的内核版本是3.10,所以需要升级Linux的内核,升级的步骤如下:...…

Note继续阅读