maven搭建私服(nexus使用)

来源:互联网 发布:自己做斗图的软件 编辑:程序博客网 时间:2024/06/05 08:26

1、介绍

maven在实际使用中使用最多的是依赖管理工具,从中央仓库中下载包到本地仓库中,并在pom文件中引入依赖的jar包,那么在项目中就可以使用了。而每个公司不同部门,部门中的不同项目组,都会发布自己的项目,或者使用其他项目组发布的项目,如何统一管理公司内部各个项目之间的依赖关系呢?这样就引入了私有服务器,即公司内部所有部门,所有项目组都将项目发布到统一的服务器上供大家使用。

参考文献:http://blog.csdn.net/shenshen123jun/article/details/9084293

2、nexus安装

本文使用windows64位版本的nexus。

下载地址:https://www.sonatype.com/download-oss-sonatype

安装完成后,会弹出nexus的主页面如下图所示:


访问地址:http://localhost:9555/nexus/#welcome,其中9555为安装时设置的端口号。

点击右上角的Log in登陆,默认用户名和密码为admin/admin123

3、nexus介绍

登陆成功后,进入nexus的主页面,如下图所示,点击左边的Repositories导航栏可看到nexus已经配置好的一些仓库类。

图中重要部分介绍:

Type :仓库的类型,如proxy代理仓库,group组仓库,hosted宿主仓库

Format :是支持maven1 还是maven2 还是其他格式

Policy :支持快照版本还是发布版本

Repository Path :这个就是仓库地址

常用的仓库类型有hosted、proxy、group这三种,仓库种类解释如下:

proxy :代理仓库,即为代理下载依赖的仓库,如Central从中央仓库寻找依赖。

hosted:宿住仓库,该类型可以建立如Snapshot、release的仓库。其中3rd party 为第三方依赖的仓库,即不能通过Central下载的依赖,都可以通过自行下载jar包,并上传到仓库,供大家使用。

group:组仓库,可将其它类型的仓库放在一个组中统一管理,由外部人员调用;

4、搭建私服

4.1 下载索引

搭建私服之前需要将中央仓库的依赖下载到本地私有仓库中,nexus默认是不自动下载的,这里我们需要配置一下。

首先选中Central仓库,在Configuration配置中,将Download Remote Indexes的属性设置为true,最后再点击Central仓库,右键,点击Repair index,这样会在后台生成一个任务,自动下载索引了。

后台任务查看,任务在运行中。

4.2、 创建SNAPSHOT的hosted类型的仓库

点击add按钮,选择Hosted Repository,下方出现填写配置信息,将红框中选中的配置完成后,点击保存,snapshot仓库创建完成。

4.3、创建release的hosted类型的仓库

release仓库与上面的类似。

4.4、创建GROUP类型的仓库

group组仓库创建不一样,需要选择Repository Group选项,且在设置时,Ordered Group Repositores需要配置,将quark-snapshot、quark-release、Central、3rd party包含在内,即该组包括内部发布的快照、正式版本、从远程仓库下载的依赖、以及第三方依赖。其中3rd party添加之前,需要将3rd party从Public Repositories  maven公共仓库中去除掉。

这样内部的仓库创建完成了,最后可看到如下图所示:

5、配置用户

5.1、配置权限

首先为snapshot 和 release 配置权限,配置过程如下,这里只演示release的配置过程。

两个都配置完成后,可以查看,如下图:

5.2、配置角色

点击add新增权限,出现如下图:

若下图中并未出现你配置的权限,请重启nexus就可以出现下图

5.3、配置用户

点击add时,填出如下页面,并筛选出上面配置的quark-role角色:

如上公司内部私服配置完成,下面将介绍在项目中使用私服,以及发布项目到私服中。

6、使用私服

首先需要在settings配置文件中加入如下配置:

配置镜像文件路径:

7、发布项目

发布项目需要配置权限和发布管理配置:

在settings中servers中添加访问权限:

在项目pom中,增加如下配置:

配置完成后,就可以使用命令    mvn  deploy 发布项目到服务器了,发布项目到nexus私服中,maven会根据version的后缀检查是发布到snapshot还是release中,若未加后缀,则会发布到release中。

8、问题

我在发布中出现了一个问题,纠结了很久才解决问题,背景是本机有三个工作空间,两个开发工具myeclipse 和 eclipse,都使用同一maven,每一个项目都复制了一份settings文件,使用单独的配置,但是在发布项目时总是报无权限,最后在网上搜索终于定位到问题,因为我项目的settings文件的权限配置server并未生效,最后将server放置到了maven项目下的settings文件中,这样才发布成功。

解决方式:

参考文献地址:http://www.trinea.cn/dev-tools/maven-sonatype-nexus-return-401-which-settings-xml-maven-is-using/

使用maven-help-plugin,一个小巧的辅助工具
1、mvn help:system可以打印所有可用的环境变量和Java系统属性
2、mvn help:effective-pom用于查看当前生效的POM内容,指合并了所有父POM(包括Super POM)后的XML,所以可用于检测POM中某个配置是否生效
3、mvn effective-settings可用于查看当前生效的settings.xml文件内容,所以可用于判断某个settings配置是否生效

0 0
原创粉丝点击