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

当我们再 pom 文件中依赖了某个包后,如果在没有做特殊配置(也就是使用 maven 的默认配置)的情况下,Maven 会首先到本地仓库去搜索,如果本地仓库没有此依赖包,会到中央仓库获取,默认的中央仓库地址是 http://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. Centos 基础开发环境搭建之Maven私服nexus

    hmaster 安装nexus及启动方式 /usr/local/nexus-2.6.3-01/bin ./nexus status Centos 基础开发环境搭建之Maven私服nexus . 软件  ...

  2. Maven私服Nexus3.x环境构建操作记录

    Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件.Ma ...

  3. Maven学习 (四) 使用Nexus搭建Maven私服

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

  4. Ubuntu server下搭建Maven私服Nexus

    Ubuntu server下搭建Maven私服Nexus Maven私服Nexus的作用,主要是为了节省资源,在内部作为maven开发资源共享服务器来使用. 1.下载 通过root用户进去Ubuntu ...

  5. Maven——使用Nexus搭建Maven私服

    原文:http://www.cnblogs.com/xdp-gacl/p/4068967.html Maven学习总结(九)--使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要 ...

  6. maven仓库总结,maven私服搭建

    配置pom.xml依赖包时在这里找包的描述: http://search.maven.org/#browse 以java为根目录. mvn archtype:generate -DgroupId=zt ...

  7. centos7搭建nexus maven私服

    前置条件: 1.安装jdk,可参考 http://www.cnblogs.com/grey-wolf/p/6480489.html 2.nexus仓库管理器,分为两个版本,Nexus Reposito ...

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

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

  9. Linux下Maven私服Nexus3.x环境构建操作记录【转】

    Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件.Ma ...

随机推荐

  1. 利用sfc文件构建网络渗透

      收集哈希 SCF(Shell命令文件)文件可用于执行一组有限的操作,例如显示Windows桌面或打开Windows资源管理器,这并不是什么新鲜事.然而,一个SCF文件可以用来访问一个特定的UNC路 ...

  2. 用js编解码base64

    以下是编码和解码的方法 function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef ...

  3. java实现单链表的增删功能

    JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ...

  4. Java飞机大战源代码

    刚学不久java,做了一个飞机大战的小小小小游戏,现在把这个思路总结以及代码分享出来.大佬别吐槽(emmmmmm .....开发环境:jdk1.7 开发工具:eclipese PlanelJPanel ...

  5. 目前微服务/REST的最佳技术栈

    服务端 日期 编程语言 Web Framework DbAccess/ORM 数据库 2017-09-07 Node.js 8.4 Koa 2.3 sequelize 4.8 MySQL 2017-0 ...

  6. jquery easyui+spring mnv 样式引不进,需要加载静态资源

    前台用的EasyUI,页面中引入了easyUI的js与css(引入路径正确),但是无论如何都显示不出来, 如下图: EasyUI的样式没有,看控制台:警告,找不到 21:26:25,643 WARN  ...

  7. Catch That Cow_bfs

    Catch That Cow 题目大意:FrammerJohn找奶牛,给出n和k.FJ在n处.每次他可以向左移动一格.向右移动一格或者移动到自己当前格子数乘2的地方.求FJ最少移动多少次.其中,FJ和 ...

  8. 深入理解Android中View

    文章目录   [隐藏] 一.View是什么? 二.View创建的一个概述: 三.View的标志(Flag)系统 四.MeasureSpec 五.几个重要方法简介 5.1 onFinishInflate ...

  9. Mybatis-no getter for property named 'col_name' in 'class com.xxx.onebean'

    Mybatis中出现该异常 There is no getter for property named 'col_name' in 'class com.xxx.onebean 意思是onebean这 ...

  10. java基础笔记(3)----函数

    前言引入函数前,所有的代码都写在main主函数中,代码过多,代码冗余,可读性差. 引入函数后,函数是实现某一特定功能的代码块.一个类中可以定义多个函数,每个函数和main主函数都是并列关系. 函数: ...