认识Maven仓库

一 什么是Maven仓库

Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理。Maven仓库是专门用来存放jar文件的管理工具(也可以用来存放项目war,zip,pom,aar等文件)。Maven仓库中为每个jar文件分配了一个坐标,Maven仓库能很方便的对项目依赖库进行版本的控制。简单地说Maven仓库就是帮我们统一管理项目依赖的工具。

二 Maven仓库的作用

用过eclipse开发项目的开发人员,都知道每个项目中往往都有libs这样一个文件夹,

用来存放工程依赖的jar文件。每次建一个新工程时都会有这样一个libs文件夹,然后将需要的jar复制进lib文件夹并执行add path让项目产生依赖,当依赖库有bug修复或者增加功能产生版本更新时,需要挨个项目去替换,很显然有大量的重复工作。

而Maven能够帮我们解决这些问题,自动帮我们完成依赖包的管理,我们需要做的就是指定依赖jar包的名称、版本号。Maven会自动下载,并且递归地去下载依赖包进一步依赖的其它库文件(比如依赖库A库中指定了依赖BCD库,那么当新项目构建时指定依赖了A库时,Maven会自动去下载A,B,C,D库)。同时,如果对于某个依赖库想要始终保持最新而不是频繁去手动更新版本号,也可以指定-SNAPSHOT(快照版本:Maven 每次构建都会在远程仓库中检查新的快照,即使本地已经下载过了此库)。

下图为App-UI-WAR项目依赖APP-Code-lib和APP-Data-lib的配置文件:

三 Maven仓库的分类

Maven 仓库有三种类型:

  • 本地(local):每个Maven项目搭建后本地的缓存
  • 中央(central):Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到(https://search.maven.org/search)
  • 远程(remote):Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

四 Maven项目完成构建的流程

使用Maven 仓库完成一次构建的流程如下:

  1. 先从本地仓库获取;
  2. 本地获取不到时中央仓库及其它远程仓库获取;
  3. 从远程仓库获取成功后缓存到本地仓库供下次使用,如果配置的远程仓库遍历后都找不到,将停止Build并报错:无法找到依赖的文件。
  4. Maven 仓库默认在国外, 国内使用难免很慢,我们通常会配置一个国内的远程镜像仓库,如阿里云的Maven仓库:http://maven.aliyun.com/nexus/content/groups/public/。

为什么要搭建局域网仓库

上面我们清楚地了Maven库的工作流程,其实已经很明显了,搭建局域网仓库,就是给团队(部门、小组、公司)开一个私服,在中间做代理仓库和二级缓存。

  1. 节省自己的外网宽带【多终端只需下一次】
  2. 加速Maven构建【局域网走内网,下载较快】
  3. 部署第三方构件【私有化的、业务相关、有版权限制的等】
  4. 增强控制【多人员,多项目可以做统一配置管理】
  5. 降低中央仓库的负荷【毕竟人家Maven、阿里云镜像都没盈利的,带宽都是钱,能省则省吧】
  6. 增强稳定性【突发情况公司断网或者中央仓库出现故障】

既然在局域网搭建私服有这么多的好处,那么怎么去实现这一目标呢?接下来就是今天的主角nexus上场了。

nexus是什么

nexus可不是Google的亲儿子NEXUS品牌手机,而是一个......

专业描述:

nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问。

nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据。

nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过IDEA和Eclipse集成使用。

nexus支持webDAV与LDAP安全身份认证。

nexus提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,占用较少的内存,基于简单文件系统而非数据库。

简单描述:

nexus就是帮你快速搭建并管理Maven库的一个好工具,不管你是要搭建一个内网私服还是要做一个公网镜像站,nexus都将是你最好的选择。国内开发常用到的http://maven.aliyun.com/nexus/content/groups/public/就是用nexus搭建的。

如何正确的使用nexus搭建一个局域网仓库

一 下载和安装

下载

官方下载页:https://www.sonatype.com/download-oss-sonatype

The world's first and only universal artifact repository that's FREE to use.

世界上第一个也是唯一一个免费提供的通用工件存储库。

这首页的宣传语也是厉害了。

!由于是国外的网站,所以访问时挺不稳定的,也是经历了许多破折,最终来到了下载页,支持windows,unix(包括linux),mac这三个版本;

实际下载时由于频繁中断,最后还是科学上网下载完成,这里给出Windows版本的3.29.2-02版本网盘链接(截至目前还是最新版本,如果后续还有更新,大家只能去官网下了)。

链接:https://pan.baidu.com/s/1pDiiQ41MkNwzJuPFrwtrDw

提取码:NEXU

安装

相比较于下载,安装就方便多了,直接找到下载的压缩包,解压缩到自己指定的目录即可(文件夹及目录避免用中文)

然后将nexus安装目录(nexus\nexus-3.29.2-02\bin)中的bin文件夹配置到环境变量Path中去,方便后面调用启动服务。

二 启动服务

配置好环境变量后就可以直接在命令行执行nexus命令了。

nexus /start

如果你了解过或者看过网上其他人的博客,基本都是先调用nexus install,再调用nexus start,然而却发现没有install和start命令。不要慌,版本不一样命令变了很正常,命令行找不到已经要记得先--help一下:

使用之前通过nexus /install命令安装私服,然后通过nexus /start启动私服,看到下图Started Sonatype Nexus OSS 3.29.2-02提示就是服务正常启动了。nexus私服有自己内置的服务器,默认的访问端口号是8081,访问地址是:http://localhost:8081/.

登录并重置密码

  1. 浏览器打开http://localhost:8081/
  2. 之前看大家都说默认帐号是admin,默认密码admin123;然而我去登录了却发现并不是那么回事儿,原来改版后不是默认密码了,而是随机生成了一长串密码放在了一个隐秘的角落。

  1. 按照提示找到admin.password文件,打开获取默认密码,登录成功;
  2. 按照提示设置更新新密码;
  3. 按照提示继续设置,建议选择Enable,启用匿名访问权限,方便后面其它机器访问;

  1. 初始化完成

三 配置

1. 查看所有仓库

点击设置图标,选择Repository-Repositories,可以看到nexus默认给我们添加了这些仓库。

  • hosted 宿主仓库,用来发布一些私有化、第三方不允许的组件,比如oracle驱动等商业软件的jar包
  • proxy 代理远程的仓库,比如上面写得三个maven远程仓库。如果本地不存在某些jar文件时就会到这些代理站点去下载。
  • releases 内部的模块中release模块的发布仓库
  • snapshots 发布内部的snapshot模块的仓库
  • group 组仓库,用来添加其他的仓库,方便开发人员设置【如上面maven-public是包含了maven-central和maven-releases、maven-snapshots】

2. 修改仓库配置

点击maven-central一行,可以进入设置页,可以删除仓库、重建索引、清除缓存、禁止健康检查;

注意Online要勾选,否则停止更新下载,会影响依赖库的下载;

可更改Proxy代理服务器地址,nexus默认的代理地址是https://repo1.maven.org/maven2/,如果想访问更快可以选择更改为国内代理地址;更推荐增加新的仓库地址,并将国内服务放在前面;

3. 添加新的仓库

选择Create repository新建仓库,选择Maven2(proxy),填入NameProxy信息,滚动到最底部有Save保存按钮。

如这些代理仓库

http://maven.aliyun.com/nexus/content/repositories/jcenter

http://maven.aliyun.com/nexus/content/repositories/google

http://maven.aliyun.com/nexus/content/repositories/gradle-plugin

http://maven.aliyun.com/nexus/content/groups/public/

保存成功过后会看到列表新增了自己的仓库。nexus服务正在对新增的镜像站进行健康检查,通过后状态变为可用。

4. 修改仓库组

通过检查变为可用状态的仓库,可以在marven-public(也可以新建仓库组maven2 group)中编辑仓库组包含哪几个仓库,可以调换优先级,将使用多的,访问速度快仓库放前面可以增加项目的构建速度。

四 使用

使用前记得更新一下所有仓库的索引(索引相当于仓库中所有依赖包的目录,更新较慢)

找到你要引用的仓库,通常是maven-public,点击copy按钮

获取到仓库地址,配置到你的项目中即可。

不同的编译器(Android StudioEclipse/NetBeans/IntelliJ等)配置方法不同,这里演示的是在Android studio中build.gradle文件的配置

使用效果

配置后执行sync ,同步成功,build成功。

之后再回到http://localhost:8081/#browse/browse,查看maven-public仓库,发现已经多了许多目录和库文件。表示私有化仓库已经开始工作并缓存文件了。

选择Seach按钮,搜索eventbus,可以搜索到,点击还可以查看它的具体版本信息和来源及大小。

此时再将公司网络中断,项目clean,rebuild,甚至添加新的依赖(即使本项目中未用过,只要私有库下载过一次)就再也不用因为网络问题导致项目无法build了。

结束语

实际下载时由于频繁中断,最后还是科学上网下载完成,这里给出Windows版本的3.29.2-02版本网盘链接(截至目前2021年1月还是最新版本,如果后续还有更新,大家只能直接去官网下载,感谢度娘提供的免费云盘服务)。

链接:https://pan.baidu.com/s/1pDiiQ41MkNwzJuPFrwtrDw

提取码:NEXU

参考

菜鸟Maven 仓库 https://www.runoob.com/maven/maven-repositories.html

官方下载页:https://www.sonatype.com/download-oss-sonatype

Windows下安装Nexus3.x及配置:https://blog.csdn.net/yzhl008/article/details/105409293/

Nexus3.x安装及配置 https://cloud.tencent.com/developer/article/1147232

Nexus Maven管理器 https://www.oschina.net/p/nexus

使用nexus搭建局域网私服Maven仓库(Windows版)相关推荐

  1. centos利用nexus搭建局域网docker私有仓库

    centos利用nexus搭建局域网docker私有仓库 1.官网下载nexus oss版本 https://sonatype-download.global.ssl.fastly.net/repos ...

  2. Android 使用Nexus搭建本地私有Maven仓库

    一.前言 在Android开发中,经常有一种场景:需要将写好的某个lib用于各个不同的项目中. 做法有二:1.将lib直接导入到项目中,缺点:繁琐,一旦lib项目出现bug,所有导入的项目都要去修改. ...

  3. Nexus3 搭建私服 maven 仓库

    一.Nexus3 上篇文章实验了使用Nexus3搭建私服 docker 仓库及代理仓库,本篇文章继续使用 Nexus3 搭建私服maven 仓库,有关 Nexus3 的安装请参考上篇博客: https ...

  4. 从零开始通过 Artifactory 搭建公网的 maven 仓库

    来自我的 Blog Danny's Dream 起因 最近在给公司的 SDK ,做一个 maven 的仓库,方便 CP 嵌入.花了整两天的时间,身为移动开发的我之前没怎么接触过服务器相关的内容,这里做 ...

  5. Nexus 3.X(Maven仓库私服)仓库迁移与备份

    注意修改端口号:根目录/etc/nexus-default.properties,application-port=端口号 Linux 仓库迁移 Nexus的构件仓库都保存在sonatype-work ...

  6. nexus搭建npm私服

    第一步:下载安装包 官网地址(下载了很多次才成功,真的是很多次很多次,有时候网速不好直接页面打不开): https://www.sonatype.com/nexus/repository-oss-do ...

  7. Maven Nexus搭建本地私服 上传jar包或本地项目到私服

    Nexus就是Maven的私服 在日常开发中我们在使用maven时经常会遇到下面的问题 1.一些无法从外部仓库下载的构件,例如内部的项目部署到私服上,以便供其他依赖项目使用. 2. 为了节省带宽和时间 ...

  8. 在centos7中如何搭建局域网yum源仓库

    1.#输入命令rmp -q -vsftpd,查看是否安装了该包. 2.#创建挂载点,把光盘挂载到该点 3.#使用命令用rpm-ivh 安装vsftpd安装包 4.#启动vsftpd服务,设为下次开机启 ...

  9. gitee 拉取其他分支_如何使用 Gitee 快速搭建 ESP-IDF 开发环境(Windows 版)

    前言 为更好地服务国内用户,构建中文需求沟通平台,帮助用户快速下载乐鑫开源代码,乐鑫将 GitHub 中的主要仓库(包含 ESP-IDF.ESP-ADF.ESP-MDF 以及阿里.腾讯.京东等国内云平 ...

最新文章

  1. python在线翻译代码_Python 20行简单实现有道在线翻译的详解
  2. delphi 运行外部程序函数winexec WinExecAndWait32 CreateProcess
  3. QT编程中遇到的问题总结
  4. linux php c 扩展,linux下编写php5.6的C扩展模块(双向链表)
  5. springcloud config服务端配置(一)
  6. Spring MVC —— 前后台传递JSON
  7. C++---之Arraylist
  8. 如何在水晶报表9中实现选择打印机打印?
  9. python env虚拟环境
  10. Mybatis 插入与批量插入以及多参数批量删除
  11. STC学习:可振动感应的电子音乐
  12. 推荐几个优秀的求职简历模板(附电子版个人简历word下载 )
  13. Win10台式电脑怎么不拔网线断网
  14. /opt/hbase/conf 中不能启动hbase_北京现代伊兰特不能启动
  15. android 手机桌面,安卓手机桌面介绍:教你认识安卓手机桌面
  16. Gulp折腾记 - (2)常用任务构建的demo
  17. c++11新特性--decltype
  18. 常见电子面试知识(2/4)
  19. 树莓派安装Opencv+Contrib和 QT 详细教程
  20. CF Edu 47E. InterCity Travelling 期望线性,打表

热门文章

  1. Java中合法的关键词_优秀程序员必须掌握的java中50个关键字
  2. rfcn 共享_RFCN 精简讲解
  3. 目标检测:FasterRCNN,RFCN和Light-RCNN的对比分析
  4. 读书-《软技能2-软件开发者职业生涯指南》
  5. 南京大学双学位计算机科学与技术有周末课吗,关于开展2018年双学位教育工作的通知-教务处...
  6. 前端获取用户ip地址,并放在请求头上(uniapp和H5)
  7. idea jdk没法弄
  8. 软件工程导论——可行性研究总结
  9. matplotlib 几种常用的图表使用方法总结
  10. AutoCAD快速入门(二十八):布局