所有的 Java 开发者应该是没有没用过 Maven 的吧。Maven 作为 Java 项目管理工具,它不仅可以用作包管理,还有许多的插件,可以支持整个项目的开发、打包、测试、部署等一系列行为。而包管理又是其核心功能,这篇文章简单介绍一下使用 Maven 私服管理依赖包。

当我们再 pom 文件中依赖了某个包后,如果在没有做特殊配置(也就是使用 maven 的默认配置)的情况下,Maven 会首先到本地仓库去搜索,如果本地仓库没有此依赖包,会到中央仓库获取,默认的中央仓库地址是 repo1.maven.org/maven2,服务器在国外,可想而知,速度是没办法保证的。当然国内也有相应的仓库,比如阿里的,速度还是很好的。

但是一般来讲,公司甚至团队内部都会搭建一个 Maven 私服,一来稳定性可以得到保证,再者,比如公司内部的一些基础包或者项目的通过工具包之类的,也可以放到上面来,从而提高项目开发的灵活度。

例如公司有一个底层工具包,没有私服的情况下,我们拿到这个包,要将它安装到本地仓库,需要执行如下命令:

mvn install:install-file
-Dfile=common-util-0.0.1-SNAPSHOT.jar
-DgroupId=com.kite
-DartifactId=common-util
-Dversion=0.0.1-SNAPSHOT
-Dpackaging=jar
复制代码

一旦做了修改,本地还需要重新执行命令,是不是很麻烦。

私服搭建

Nexus 是用来搭建 Maven 私服的可以说是唯一的工具,它的官网上是这样说的:“世界上第一个也是唯一的免费使用的仓库解决方案”。目前的最新版本是 OSS 3.x。提供了针对 Windows、Unix、OS X 三种系统的版本。

这里只简单说明 Linux 下的安装方式,如果是下载的最新版本,它对系统内存和 jdk 版本是有要求的,要求内存大于4G,jdk 最低是1.8版本。

1、下载包,并解压缩,运行命令 tar -zxvf nexus-version-unix.tar.gz;

2、进入 nexus-version/bin/ 目录,运行 ./nexus start ;

3、访问 默认的 8081 端口即可;

通常情况下,以上三步就可以完成安装,如果有问题,并且提示“ NOT RECOMMENDED TO RUN AS ROOT ”,可以通过修改 /bin/nexus 文件,在其中加入 RUN_AS_USER=root ,然后重新启动。

另外,如果是 docker 环境,可以直接获取 nexus 的镜像完成安装。例如我在 mac 上直接搜索了 nexus,然后下载并启动即可。

基本认识

访问 nexus 的首页如下图所示:

默认的账号名是 admin,密码是admin123。管理员登录后,可以在设置页面管理角色、用户等其他一系列的操作。例如创建一个角色,给角色设置某一仓库的管理权限,然后向这个角色中添加人员。具体操作不做过多介绍,一看就明白。

管理员还可以管理仓库,不过一般来说,默认的那几个仓库就可以了。默认有如下几个仓库:

说明一下几种 type。

proxy:这是代理方式,它是用来代理中央仓库的,例如我们依赖的包在本地仓库没有,就会到私服获取,私服没有的话,会到中央仓库先把包下载到这里,然后再下载到本地仓库;

hosted:指的是我们公司或团队内部的包,并且 hosted 类型的仓库会分为 releases 和 snapshots 两个,前者是正式版,后者一般是开发测试版;

group:它的目的就是把多个仓库组合起来,然后我们项目中只需要配置上这个类型的仓库地址,就可以把它里面组合的几个仓库都关联上。

在项目中使用

###获取依赖包

如果是普通项目成员,不需要向私服发布包的,只需要在 pom 文件中加入以下配置即可。

    <repositories><repository><id>maven-public</id><name>maven-public</name><url>http://nexus.local:32768/repository/maven-public/</url><snapshots><enabled>true</enabled></snapshots></repository></repositories>
复制代码

其中 id 要和你的仓库名称一致,url 就是私服的仓库地址,就是type 为 group 的那个,它组合了一个 proxy 类型的和两个 hosted 类型的仓库。设置 snapshots 的 enabled 为ture,表示允许下载 snapshots 版本的包。

###发布包

1、如果需要向仓库中发布包的,首先需要对仓库有权限才可以,没有权限的用户是没办法发布的。

打开 maven 的配置文件 setting.xml ,找到 servers 节点在其中添加 server 节点,用户名和密码也可以是管理员创建的账号,但是需要对仓库有添加权限。

  <server><id>nexus-releases</id><username>admin</username><password>admin123</password></server><server><id>nexus-snapshots</id><username>admin</username><password>admin123</password></server>
复制代码

请注意上面的 id,下面还会用到。

2、然后需要在 pom 文件中配置下面的内容:

    <distributionManagement><repository><id>nexus-releases</id><name>maven-releases</name><url>http://nexus.local:8081/repository/maven-releases/</url></repository><snapshotRepository><id>nexus-snapshots</id><name>maven-snapshots</name><url>http://nexus.local:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>
复制代码

我们看到其中配置了一个 repository ,另外还有一个 snapshotRepository,上面表示的是 releases 版。同样注意 id 要和 setting.xml 里 server 下的 id 一致,不然会出现权限问题。url 分别指定 maven-releases 和 maven-snapshots 的地址。

只要在项目中配置 1.0-SNAPSHOT 这样,带有 SNAPSHOT 的就会到 snapshots 仓库,如果不加 SNAPSHOT 就会到 releases 仓库。

还有要注意的是,你要发布的包不应该是上级,也就是不能有 parent 依赖。否则在获取依赖的时候会有问题。

3、最后执行 mvn clean deploy 命令,即可发布包到私服仓库中。

通过以上配置和操作,就可以完成包的发布过程。

最后

本篇只是一个简单的介绍,好多细节没有一一说明,相信没有用过的小伙伴也能很快配置并使用。如有问题,请留言或者直接在公众号内回复。

Maven 私服的简单使用相关推荐

  1. Maven私服的简单搭建教程(Nexus)

    2019独角兽企业重金招聘Python工程师标准>>> 第一步,下载nexus的安装包并解压 链接:http://pan.baidu.com/s/1jIhpZ98 密码:6bqx 如 ...

  2. linux设置nexus开机自启动_在linux中使用nexus搭建maven私服

    首先介绍下为什么要搭建maven私服,简单点说就是就是把项目工程中的Jar包放在一个服务器上,每次Jar包的修改都能去私服上面Down到本地.可以对整个项目组的人形成一个统一的管理. 2.下载完之后就 ...

  3. AndroidStudio使用进阶二:搭建自己的maven私服,并使用Gradle统一依赖管理

    前言: 最近我们老大组织了我们软件团队开了一个小会,说了一些存在的问题,平时在技术上的交流还是比较少的,尤其是在不同的项目之间的开发人员,然而经过这次会议我突然发现,我的缺陷不仅是在基础的能力上,还有 ...

  4. Maven 私服搭建指南

    序言 Maven 作为 Java 项目管理工具,它不仅可以用作包管理,还有许多的插件,可以支持整个项目的开发.打包.测试.部署等一系列行为. 而包管理又是其核心功能,除非是个人项目,我们获取包都是从中 ...

  5. Maven学习总结(九)——使用Nexus搭建Maven私服

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(九)--使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要搭建nexus私服,原因很 ...

  6. Maven学习 使用Nexus搭建Maven私服(转)

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  7. 使用nexus3搭建maven私服(超详细,建议收藏)

    目录 1.搭建Maven私服背景 2.安装Nexus,并初次启动Nexus 3.将nexus配置为系统服务 4.配置nexus和熟悉它 第一步,跟随着说明文档,看看下载nexus下来之后,有两个目录 ...

  8. Maven学习-使用Nexus搭建Maven私服

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  9. Maven:私服Nexus的安装

    QUESTION:Maven:私服Nexus的安装 目录 QUESTION:Maven:私服Nexus的安装 ANWSER: 1.1 简介: 1.2 下载: 1.3 配置nexus 1.4 nexus ...

最新文章

  1. Vue、angular等框架实现双向绑定的原理,核心机制是使用了Object.defineProperty
  2. pcb 布线电容 影响延时_信号在PCB走线中传输时延
  3. 【HDU - 3172】Virtual Friends(带权并查集--权为集合元素个数)
  4. jquery添加未来元素时,其绑定事件不起作用解决办法
  5. No dashboards are active for the current data set. 解决tensorboard无法启动和显示问题
  6. 使用swagger作为restful api的doc文档生成
  7. 项目经理的商务指南系列之四:认识谈判(不做传声筒,不做顶门闩,进退之策,进退之法,有机事者必有机心)...
  8. java表述环形链表_数据结构环形链表(java实现)
  9. 【TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 1130期】
  10. 学习操作系统心得体会
  11. 分享11个web前端开发实战项目案例+源码
  12. Gartner Hype Cycle (技术成熟度曲线)
  13. python 监控键盘输入_python 监控键盘输入
  14. Golang修改图片JPEGjpg的大小和质量
  15. oracle的Minus的使用
  16. matlab 计算物理,计算物理与MATLAB课程设计.doc
  17. 电影推荐系统 python简书_基于django和协同过滤/cnn的电影推荐系统
  18. dbca asm ora 01017错误
  19. bios 传统测试软件性能,设置主板BIOS上的CPU部分及性能测试_技嘉 GA-G1.Sniper B5_主板评测-中关村在线...
  20. [转载] iOS问题汇总

热门文章

  1. SQL CE与SQL Server数据交换
  2. WebRequest msdn整理
  3. DHTML【9】--Javascript
  4. 图解 Scala 基本语法 V2018.12.17
  5. 关于TLS升级的问题
  6. Java基础巩固——排序
  7. restTemplate设置访问超时
  8. 集成Silverlight 2的AJAX框架 Visual WebGui
  9. Android--多选自动搜索提示
  10. Mysql查看编码方式专题