Maven私服搭建-基础版

Nexus介绍

Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。

小结几点:

  • nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问.
  • nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据
  • nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过IDEA和Eclipse集成使用
  • nexus支持webDAV与LDAP安全身份认证.
  • nexus提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,占用较少的内存,基于简单文件系统而非数据库.

为什么要使用

  • 节省外网带宽
  • 加速Maven构建。
  • 部署第三方构件
  • 提高稳定性,增强控制
  • 降低中央仓库的负荷
  • 控制和审计
  • 建立本地内部公用仓库

私服仓库的工作流程

在这里插入图片描述

Nexus仓库类型介绍

hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。

proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。

group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

管理本地仓库

我们前面讲到类型为hosted的为本地仓库,Nexus预定义了3个本地仓库,分别是Releases, Snapshots, 3rd Party. 分别讲一下这三个预置的仓库都是做什么用的:

  • Releases: 这里存放我们自己项目中发布的构建, 通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war, 我们就可以把这个构建发布到Nexus的Releases本地仓库. 关于符合发布后面会有介绍.

  • Snapshots:这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本, 比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本.

  • 3rd Party:顾名思义, 第三方库, 你可能会问不是有中央仓库来管理第三方库嘛,没错, 这里的是指可以让你添加自己的第三方库, 比如有些构件在中央仓库是不存在的. 比如你在中央仓库找不到Oracle 的JDBC驱动, 这个时候我们就需要自己添加到3rdparty仓库。

开始搭建私服

打开linux,将nexus工具复制到linux机器中,解压。
在这里插入图片描述

进入nexus文件中,

在这里插入图片描述

进入bin文件中,./nexus start启动nexus服务。如果发现端口号占用了,进去conf文件中,修改nexus.properties文件中的端口。
在这里插入图片描述
在浏览器中输入地址,即可访问nexus的首页。点击login,账号:admin,密码:admin123。然后进入了nexus的管理界面。

在这里插入图片描述
划红线的url作为maven访问私服的url

在maven的setting.xml中做如下配置:

在mirrors节点下配置:

<!--使用私服镜像-->

  <mirror>
		 <!--此处配置所有的构建均从私有仓库中下载 *代表所有,也可以写central -->
		 <id>nexus</id>
		 <mirrorOf>*</mirrorOf>
		 <url>http://192.168.188.129:8083/nexus/content/groups/public/</url>
  </mirror>

其中的url就是刚才划红线的url地址。

在profiles中配置profile覆盖maven原有的centern地址,让maven不去中央仓库下载jar包。

<!--使用私服的配置-->
     <profile>
		 <id>nexus</id>
		
		 <repositories>
			 <repository>
				 <id>central</id>
				 <url>http://central</url>
				 <releases><enabled>true</enabled></releases>
			 	 <snapshots><enabled>true</enabled></snapshots>
			 </repository>
		 </repositories>
		 <pluginRepositories>
			 <pluginRepository>
				 <id>central</id>
				 <url>http://central</url>
				 <releases><enabled>true</enabled></releases>
				 <snapshots><enabled>true</enabled></snapshots>
			 </pluginRepository>
		 </pluginRepositories>
	 </profile>

激活私服:

<!--激活私服-->
  <activeProfiles>
 <!--make the profile active all the time -->
	<activeProfile>nexus</activeProfile>
  </activeProfiles> 

测试私服有没有起作用

我们可以手动在3rd party仓库中上传一个jar包:
在这里插入图片描述

在这里插入图片描述
选择jar后,点击upload,就完成了手动上传。
在这里插入图片描述
在私服中可以看到该jar包的依赖。复制到工程中的pom文件中。然后就可以在mavendependies中看到该jar包了,并且保存到了本地仓库

通过maven配置上传jar包

一般开发中,每个部门都有自己的私服仓库,因此需要自己建立本部门的仓库,并且设置权限和用户
在这里插入图片描述

在这里插入图片描述
点击保存。会在仓库中看到自己建的仓库。

然后配置权限:
在这里插入图片描述
填写对应的信息,并且和新建的数据仓库进行绑定。

配置角色:
在这里插入图片描述
填写对应的信息,并且和新建的权限进行绑定。

配置用户:
在这里插入图片描述
填写对应的信息,并且和新建的角色进行绑定。

在maven的setting.xml文件中的servers节点下配置

<!--配置上传权限-->
	 <server>
	   <!--这是仓库的ID-->
      <id>depart2</id>
	  <!--这是用户名-->
      <username>depart2-user</username>
	  <!--这是密码-->
      <password>123</password>
</server>

这样一个上传jar包的一整套流程新建完了,下面进行测试:

在要上传工程的pom文件中加入下面配置:

    <distributionManagement>
        <snapshotRepository>
            <id>snapshots</id>
            <name>snapshots</name>
            <url>http://nexus.izkml.com:55676/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>release</id>
            <name>release</name>
            <url>http://nexus.izkml.com:55676/content/repositories/releases/</url>
        </repository>
    </distributionManagement>

然后选择maven build命令:
输入deploy
查看私服
在这里插入图片描述
在私服上就看到了上传成功的jar包。
一般上传都是批量上传,因此在parent工程中执行该bulid命令,并将依赖的model工程一并上传。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值