1、使用场景
首先介绍一下背景,公司访问外网有限制,项目组大部分人员不能访问Maven的central repository,因此在局域网里找一台有外网权限的机器,搭建Nexus私服,然后开发人员连到这台私服上。
环境是:nexus-2.1.1、jdk-1.8
2、安装步骤
-
1、下载并上传nexus-2.11.2-06-bundle.zip
-
2、解压并配置/etc/profile 环境变量
source /etc/profile
-
3、修改nexus配置文件 vim /opt/nexus-2.11.2/conf/nexus.properties
如果没有修改nexus-work,默认的仓库位置是在sonatype-work这个目录
-
4、bin/nexus start; tailf logs/wrapper.log
启动nexus,如果直接使用root启动,会报错
把这行打开,并修改为RUN_AS_USER=root
再次启动就正常了。
3、浏览器配置responsity仓库
-
1、访问地址 http://192.168.0.186:8081/nexus/#welcome 右上角登录 admin admin123
-
2、左边功能概图
-
3、为Nexus配置代理服务器(如果这台机器可以访问外网,则可以不配置) 由于这台机器需要通过代理才能访问外网,所以首先要配置代理服务器,在Administration-->Server中进行配置
-
4、repository远程仓库介绍 在Views/Repositories-->Repositories里进行配置
Nexus里可以配置3种类型的仓库,分别是proxy、hosted、group。
proxy是远程仓库的代理:比如说在Nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用。
hosted是宿主仓库:用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在
central repository是获取不到的,就需要手工上传到hosted里。
group是仓库组:在Maven里没有这个概念,是Nexus特有的。目的是将上述的proxy和hosted多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了。
-
5、配置Central 的proxy (已经有了,修改远程仓库为阿里云的就行)
最关键的一个配置,可能就是Central Repository的proxy配置,因为大部分的构件,都是要通过这个proxy得到的:
阿里maven仓库:http://maven.aliyun.com/nexus/content/groups/public/
在安装完Nexus之后,这个proxy是预置的,需要做的就是把Download Remote Indexes改为true,这样Nexus才会从central repository下载索引,才能在Nexus中使用artifact search的功能。
网络上有一些其他公开的Maven仓库(比如阿里云),可以用同样的办法,在Nexus中设置proxy
-
6、配置group repository
前面说过,group其实是一个虚拟的仓库,通过对实体仓库(proxy、hosted)进行聚合,对外暴露一个统一的地址。
这里要注意的是,放到左边的仓库,才是会被聚合的仓库。
-
7、配置用户密码
在Security-->Users中配置,在deployment用户上点击右键,选择Set Password,然后设置一个密码,做这个操作是为了后面提交做准备
4、配置客户端settiongs.xml
经过前面的7个步骤,Nexus就配置好了,接下来需要在每个开发人员的开发机器上进行配置了,配置文件在%USER_HOME%/.m2/settings.xml
<settings>
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://IP:port/nexus-2.1.1/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
这里只配置了2个元素 <mirrors> 和 <servers>。
首先这里配置了一个id为nexus的镜像仓库,地址是前面配置的public group的URL,然后镜像目标是central。