maven私有库搭建

为什么要搭建maven私有库?

有位博主在2008年时这样写道:

如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。
总之,在本地构建私服的好处有:
1)加速构建;
2)节省带宽;
3)节省中央maven仓库的带宽;
4)稳定(应付一旦中央服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库

但对于现在(2018年)的带宽和网络情况来说,上面的好处已经不那么明显了。
结合本人maven使用经验来回答:
在多人协同开发时,开发人员开发的项目jar包如果还是在开发人员本地电脑的maven库上是不合理的,需要一个可以大家都能访问的maven库。
这个库是maven公共库吗?如第三方的阿里巴巴maven库?maven中央库?
显然是不可以的,只要是商业项目,谁愿意把自己的代码maven install 到别人的maven库里,这样别人就知道你的代码了,相当于开源一样了,除非做开源项目。
还有项目有时候会加入购买的第三方商业工具,这些工具的jar包也要放到一个maven仓库里。

为什么要用Sonatype Nexus做maven的私有仓库?

原因很简单,Sonatype Nexus就是仓库管理工具,而且稳定好用。

Sonatype Nexus2.x支持的仓库:



Sonatype Nexus3.x支持的仓库:



Sonatype Nexus官网:http://www.sonatype.org/nexus/
本文以2.x版本,因为maven仓库的支持够了。
3.x的版本更新太大了,安装文件目录结构都变了。

搭建过程

1、下载Nexus 2.x版本
2、解压
# mkdir nexus  
# tar -zxvf nexus-2.11.2-03-bundle.tar.gz -C nexus  
# cd nexus  
# ls  
nexus-2.11.2-03  sonatype-work  
(一个nexus 服务,一个私有库目录)  

3、编辑Nexus 的nexus.properties 文件,配置端口和work 目录信息
# cd nexus-2.11.2-03  
# ls  
bin  conf  lib  LICENSE.txt  logs  nexus  NOTICE.txt  tmp  
查看lib下的jar包,发现是基于jetty 运行  
(保留默认,不用改,除了端口8081看看是否冲突)   
# cd conf  
# vi nexus.properties  
# Jetty section  
application-port=8081  
application-host=0.0.0.0  
nexus-webapp=${bundleBasedir}/nexus  
nexus-webapp-context-path=/nexus  
  
# Nexus section  
nexus-work=${bundleBasedir}/../sonatype-work/nexus  
runtime=${bundleBasedir}/nexus/WEB-INF  
  
  
4、编辑nexus 脚本, 配置RUN_AS_USER 参数  
# vi /root/nexus/nexus-2.11.2-03/bin/nexus  
#RUN_AS_USER=  
改为:  
RUN_AS_USER=root  
  
5、防火墙中打开8081 端口  
# vi /etc/sysconfig/iptables  
添加:  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT  
保存后重启防火墙  
# service iptables restart  
  
6、启动nexus  
# /root/nexus/nexus-2.11.2-03/bin/nexus start  
****************************************  
WARNING - NOT RECOMMENDED TO RUN AS ROOT  
****************************************  
Starting Nexus OSS...  
Started Nexus OSS.  
  
 
7、配置开机启动
vi /etc/rc.local
增加下面行
/root/nexus/nexus-2.11.2-03/bin/nexus start  
 
8、浏览器中打开:http://192.168.78.132:8081/nexus/  
9、登录,默认用户名admin,默认密码admin123


10、Nexus 配置 (登录后)  
1、菜单Administration/Server 配置邮箱服务地址
该邮箱发送通知消息用


                                                                              
 给用户配置邮箱地址,方便忘记密码时找回,和接受通知
 

仓库类型



group  仓库组:Nexus 通过仓库组的概念统一管理多个仓库,
这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。

hosted 宿主仓库:主要用于发布内部项目构件或第三方的项目构件(如购买商业的构件) 
以及无法从公共仓库获取的构件(如  oracle  的  JDBC  驱动)  

proxy 代理仓库:代理公共的远程仓库

virtual 虚拟仓库:用于适配 Maven 1
 
一般用到的仓库种类是hosted、proxy  
  
Hosted 仓库常用类型说明:  
releases  内部的模块中release 模块的发布仓库,发行版,稳定版,可用于生产  
snapshots 内部的模块中SNAPSHOT 模块的仓库 ,内测版,开发版
3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去  
  

Maven 依赖包下载流程


如果构建的Maven 项目本地仓库没有对应的依赖包,那么就会去Nexus 私服去下载,  
如果Nexus私服也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。  
Nexus 私服下载成功后再下载至本地Maven 库供项目引用。  


设置proxy 代理仓库准许远程下载

设置Apache Snapshots/Central/Codehaus Snapshots等proxy代理仓库允许远程访问





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse maven访问maven私有库

1、Windows本地maven下载 https://maven.apache.org/download.cgi 2、maven setting 文件配置 进入maven 目录下 conf。apache-maven-3.2.3\conf 新建.xml 文件&#xff0c;内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?><set…

入门系列之在Ubuntu 16.04使用Buildbot建立持续集成系统

欢迎大家前往腾讯云社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 本文由angel_郁发表于云社区专栏 介绍 Buildbot是一个基于Python的持续集成系统&#xff0c;用于自动化软件构建&#xff0c;测试和发布过程。 在本教程中&#xff0c;我们将演示如何设置持续集成系统以自动…

strapi 开源api 内容管理平台试用

strapi 是一个开源的api && 内容管理平台&#xff0c;功能操作起来还是比较方便简单的。 安装 使用docker && docker-compose 代码clonegit clone https://github.com/strapi/strapi-docker && cd strapi-docker 启动 docker-compose up -d 访问 首次初…

1.android体系结构介绍

一、Android的介绍 android介绍见百度百科&#xff1a;Android的介绍&#xff0c;度娘把Android介绍的这么清楚&#xff0c;如果谷歌是Android的爹&#xff0c;那度娘就是娘了。 二、Android的架构图 android系统主要分四层&#xff1a; 从上致下&#xff1a; 1、应用层 2、…

2.JVM和DVM之间的区别

1、JVM .java----->.class----->.jar 运行在内存的 栈 栈虚拟机 2、DVM .java----->.class------>.dex-----(加上其它资源文件)---->apk 运行在CPU的 寄存器 寄存器虚拟机 ---------------------------------------------------------- 3、DVM与JVM的区…

Node.js模块以及模块加载机制

2019独角兽企业重金招聘Python工程师标准>>> Node.js中的模块 在Node.js中&#xff0c;以模块为单位划分功能&#xff0c;通过一个完整的模块加载机制使得开发人员可以将应用程序划分为多个不同的部分。模块的使用可以提高代码重用率&#xff0c;提高应用程序的开发…

获取数据库名称dbName

2019独角兽企业重金招聘Python工程师标准>>> Autowired DataSource ds; connection ds.getConnection(); tring dbName connection.getCatalog(); connection.close(); 转载于:https://my.oschina.net/u/2351011/blog/1925838

mysql连接idea详细教程_idea配置连接数据库的超详细步骤

学习时&#xff0c;使用IDEA的时候&#xff0c;需要连接Database&#xff0c;连接时遇到了一些小问题&#xff0c;下面记录一下操作流程以及遇到的问题的解决方法。一、 连接操作简介&#xff1a;介绍如何创建连接&#xff0c;具体连接某个数据库的操作流程。1.1 创建连接打开i…

redis单节点安装

1、下载 redis &#xff1a;https://redis.io/ redis 提供的是 源码包&#xff0c;需要编译。 2、Linux下安装gcc 和 tcl tcl介绍 命令&#xff1a;yum install gcc tcl 3、将redis的源码包&#xff0c;放到 /usr/local/src 下 tar -zxvf redis-4.0.6.tar.gz 4、安装redi…

ManicTime软件破解

这款软件用来记录电脑上程序的运行时间。方便天天用电脑的查看&#xff1a;今天我的时间都去哪儿了&#xff1f; 专业版不免费&#xff0c;而且需要 67 美元。 免费版和专业版的区别 破解补丁和官方软件下载&#xff08;截止博文发布&#xff0c;官方最新版本 版本&#xff1…

mysql根据ID的顺序查找_求救:mysql 如何根据给定的 ID顺序查找结果?

各位大神&#xff0c;现在我遇到了一个难题需要你们的帮助。有下面两个表post表&#xff1a;文章表。record表:记录表&#xff0c;用于记录用户阅读顺序。record表 根据用户的阅读文章顺序用一个字段 postid 记录 post 表的主键ID&#xff0c;既 record.postid 的外键为 post.i…

python入坑指南_Rust入坑指南:万物初始

有没有同学记得我们一起挖了多少个坑&#xff1f;嗯…其实我自己也不记得了&#xff0c;今天我们再来挖一个特殊的坑&#xff0c;这个坑可以说是挖到根源了——元编程。元编程是编程领域的一个重要概念&#xff0c;它允许程序将代码作为数据&#xff0c;在运行时对代码进行修改…

maven引用公共包_使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴...

使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中&#xff0c;避免团队中多个项目之间代码的复制粘贴。1、首先在本地maven位置的配置文件setting.xml(没有该文件就新建这个文件)中&#xff0c;添加配置maven仓库的地址。我用的是我的GitHub仓库…

WPF之鼠标滑动切换图片

原文:WPF之鼠标滑动切换图片在网上找了一会儿也没找到我想要的效果&#xff0c;还是自己动手&#xff0c;丰衣足食吧。 需求&#xff1a;当前面板中只显示一张图片&#xff0c;图片栏的下部有用来显示当前图片处于图片队列中的位置的圆球&#xff0c;并且点击下部栏内的圆球可以…

mysql in 子查询优化_mysql in 子查询 容易优化

mysql in 子查询 简单优化 大数量下&#xff0c;不要使用 in 嵌套子查询&#xff0c;性能很差&#xff0c;很容易卡死。 ? 简单调整方式如下&#xff1a; select uid,nick_name from uc_users where uid in(select fid from uc_follow where uid#uid#) ? 可拆解成&#xff1a…

谷歌浏览器插件入门示例

2019独角兽企业重金招聘Python工程师标准>>> 实现&#xff1a;任何网址实现图片下载和获取当前域名的cookies的json字符串。 图片下载是给小白用的&#xff0c;可以选中批量下载&#xff0c;获取cookies 是为了方便程序员调试用。 获取cookies: git地址&#xff1a;…

Fiddler中response乱码的解决方案

原文连接&#xff1a;http://blog.csdn.net/quiet_girl/article/details/50577828 ---------------------------------------------------------- 有时候我们看到Response中的HTML是乱码的&#xff0c; 这是因为HTML被压缩了&#xff0c; 我们可以通过两种方法去解压缩。 解决…

线程带来的风险

线程安全性问题 多线程环境下 多个线程共享一个资源对资源进行非原子性操作。 以上三者都存在就会发生线程安全性问题 如文中的卖火车票问题&#xff1a;http://blog.csdn.net/zengmingen/article/details/53217229 原因是&#xff1a;一行java代码转成.class字节码文件后是…

vue内引入语音播报功能

为什么80%的码农都做不了架构师&#xff1f;>>> 在vue项目中引入语音播报&#xff0c;使用的科大讯飞语音接入&#xff0c; 具体思路为每次接收到语音信息后存入一个数组&#xff0c;然后监听这个数组&#xff0c;开始冲第一个索引播放&#xff0c;并且同时根据vue…

Mysql中的触发器

原文地址&#xff1a;https://www.cnblogs.com/zyshi/p/6618839.html ---------------------------------------------------------什么是触发器 简单的说&#xff0c;就是一张表发生了某件事&#xff08;插入、删除、更新操作&#xff09;&#xff0c;然后自动触发了预先编写好…