网络上关于搭建maven私服的文章很多,但对于maven仓库索引的配置这方面还是较少,本文主要讲述如果快速搭建一个nexus私服,以及如何手动更新索引文件。
本文所用的环境:操作系统CentOS 6.5 64bit,nexus版本nexus-2.8.0-05-bundle
从sonatype官网下载nexus的安装包,这里我下载的版本为nexus-2.8.0-05-bundle,文件名带有bundle表示该文件集成了web服务器,也就不需要再部署到其他中间件上面了。
[plain] view plaincopy
-
tar –zxvf nexus-2.8.0-05-bundle.tar.gz
通过上面的命令将其解压到指定的文件夹下,会发现有如下两个文件夹
nexus-2.8.0-05 sonatype-work
在nexus-2.8.0-05/bin目录下有一个名为nexus的shell脚本文件
[plain] view plaincopy
-
./nexus console
上面的命令就启动了nexus以控制台的方式,这会将启动的相关信息全部打印出来
注意,这里不建议使用root用户来运行nexus,使用其他用户我们需要考虑一下文件系统的权限问题,不然程序可能无法启动,报出Permission denied错误
使用root用户执行如下命令
[plain] view plaincopy
-
chmod -R o+w {nexus-home}/
{nexus-home}表示nexus的根目录
上面的命令将nexus整个文件夹(包括其子文件和子文件夹)向普通用户开放了write权限
修订:
上面的做法完全使用了root用户来执行操作,这是不推荐并且是不安全的。在此推荐另外一种做法:
首先创建一个专属用户nexus来做所有与nexus服务器相关的操作,这样对系统带来的影响也是局部的
下面是创建名称为nexus的用户的命令,将其家目录设置为/usr/nexus,-m参数在所设置的家目录不存在的情况下自动创建
[plain] view plaincopy
-
useradd nexus -d /usr/nexus -m
如此一来就可以切换到nexus用户来执行操作了,将nexus私服的目录放置在nexus用户的家目录下,这样一来就省去了很多麻烦,好处多多,大家以后会有所体会的。
完成上面的操作,于是我们就可以使用普通用户执行nexus脚本了,执行命令./nexus start
StartingNexus OSS…
StartedNexus OSS.
若出现如上结果,则说明nexus OSS已经成功启动了,下面通过浏览器访问{hostname|ipAddr}:8081/nexus即可出现如下画面
Congratulations!到这里我们已经搭好了nexus私服。下面就是配置maven中心仓库的索引了。如果有耐心的话,完全可以通过在线更新索引的方式来做,但所消耗的时间较长,下面介绍一种简单、可行的方式来手动更新索引文件。
访问http://repo.maven.apache.org/maven2/.index/下载中心仓库最新版本的索引文件,在一长串列表中,我们需要下载如下两个文件(一般在列表的末尾位置)
nexus-maven-repository-index.gz
nexus-maven-repository-index.properties
下载完成之后最好是通过md5或者sha1校验一下文件是否一致,因为服务器并不在国内,网络传输可能会造成文件损坏。
下面就是解压这个索引文件,虽然后缀名为gz,但解压方式却比较特别,我们需要下载一个jar包indexer-cli-5.1.1.jar,我们需要通过这个特殊的jar来解压这个索引文件
注:indexer-cli-5.1.1.jar是专门用来解析和发布索引的工具,关于它的详细信息请见这里。前往maven中央仓库下载indexer-cli-5.1.1.jar
将上面三个文件(.gz & .properties & .jar)放置到同一目录下,运行如下命令
[plain] view plaincopy
-
java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer
等待程序运行完成之后可以发现indexer文件夹下出现了很多文件,将这些文件放置到{nexus-home}/sonatype-work/nexus/indexer/central-ctx目录下,重新启动nexus
[plain] view plaincopy
-
./nexus restart
我们可以看到Central仓库下面就可以出现大量的索引文件了
使用管理员账户登录(默认为账户admin,密码admin123)nexus,PublicRepository仓库的地址默认为
http://{ip-addr}:8081/nexus/content/groups/public/
该地址就可以作为maven的setting文件的repository-path了,对于设置setting文件在此就不细说了。
下面列出关于nexus的一些常见问题
nexus默认监听端口为8081,如何修改这个端口号呢?
在{nexus-home}/nexus-2.8.0-05/conf目录下有一个nexus.properties的配置文件,通过修改application-port属性为自己想要设定的端口号即可
异常处理:
UnsupportedClassVersionError: org/sonatype/nexus/bootstrap/jsw/JswLauncher :Unsupported major.minor version 51.0
这种问题还是比较常见的,原因是JDK版本不支持而造成的,更换为JDK1.7或者以上版本即可。除此之外还有一种比较特别的情况,当最初连接linux使用root账号连接,使用命令su nexus切换至nexus账户时,其实引用的环境变量信息还是root账号的环境信息,如果root账号下的环境信息正好是JDK1.6或者以下版本,此时还会出现上面的错误信息,解决这种办法很简单,只需要改用nexus账户连接linux或者切换用户的命令改为su
– nexus即可,具体su的使用方法请见对应的manual用户手册
附加信息:
-
nexus官方网址http://www.sonatype.org/nexus/
转载请注明:学时网 » maven central更新索引