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,一经查实,立即删除!

相关文章

mysql查询_MYSQL查询

-- 单表查询SELECT sc.*FROM scSELECT * FROM course-- 分页 LIMIT 从0开始检索SELECT * FROM course LIMIT 0,3SELECT * FROM course limit 3,3SELECT * FROM course LIMIT 6,1-- 多表连接查询-- 1.等值与非等值连接查询SELECT * FROM student;SELECT * FROM course;SELECT *…

微软封闭服务器切换,执行服务器切换:Exchange 2013 帮助 | Microsoft Docs

执行服务器切换2021/6/1本文内容适用于:Exchange Server 2013 SP1服务器切换是一个任务,执行该任务以将当前邮箱服务器的所有活动邮箱数据库副本移动到数据库可用性组 (中的一个或多个其他邮箱) 。 此任务作为为当前邮箱服务器的计划中断做准备的一部分执…

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;我们将演示如何设置持续集成系统以自动…

fedora mysql 初始化_Linux(fedora)下启动MySQL,结果显示:env: /etc/init.d/mysql:权限不够。 我已经将权限切换到su了...

展开全部Linu下启动MySQL结果显示&#xff1a;env: /etc/init.d/mysql: 是脚e69da5e887aa62616964757a686964616f31333365646235本执行的问题解决办法&#xff1a;依次执行下面的命令(执行失败的话&#xff0c;检查路径是否正确)&#xff1a;cp /etc/init.d/mysql /etc/init.d/…

3.Android的新虚拟ART与原虚拟机DVM的区别

Android在4.2之前的虚拟机叫做 DVM 在4.2的时候多了一个虚拟机选择&#xff0c;这是新的虚拟机 ART。Android Runingtime 那时ART还不够成熟&#xff0c;需要测试&#xff0c;所以默认虚拟机是DVM。国内的ROM厂商直接把ART给割了。 Android5.0起&#xff0c;默认使用ART虚拟…

mysql binlog 统计_对MySQL binlog日志解析,统计每张表的DML次数

想要获取每天数据库每张表的DML的次数&#xff0c;统计热度表&#xff0c;可以使用该脚本# coding:utf-8# 解析binlog&#xff0c;统计热度表&#xff0c;表的DML个数import sysimport os# mysqlbinlog解析binlog日志def binlog_output():binlog_file sys.argv[1]file_num bi…

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、…

mysql seconds_behind_master_MySQL中的seconds_behind_master的理解

通过show slave status查看到的Seconds_Behind_Master&#xff0c;从字面上来看&#xff0c;他是slave落后master的秒数&#xff0c;一般情况下&#xff0c;也确实这样&#xff0c;我们可以通过Seconds_Behind_Master数字查看slave是否落后于master&#xff0c;但是在一些环境中…

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;提高应用程序的开发…

wordpress支持MySQL5.5_wordpress数据库版本为5.5以上导出不能在5.5以下的版本导入的问题解决...

自从wordpress4.2版本出现以后&#xff0c;已经可以支持utf8mb4数据编码&#xff0c;那么如果您的php空间的数据库版本是mysql5.1的&#xff0c;那么很多站长朋友从mysql5.5导出来再导入到5.1的数据中的时候&#xff0c;那么问题来了&#xff0c;就会报错Unknown collation ‘u…

i++与++i的区别

代码&#xff1a; int i1; int ai;//先赋值&#xff0c;然后再自增&#xff0c;它等价于 a i ; i i 1System.out.println("a"a);System.out.println("i"i);System.out.println("---------------");int j1; int bj;//先自增&#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 5.7 密码过期_mysql5.7 密码过期了怎么办

mysql5.7 密码过期了怎么办发布时间&#xff1a;2020-05-08 14:11:09来源&#xff1a;亿速云阅读&#xff1a;148作者&#xff1a;三月下文主要给大家带来mysql5.7 密码过期了怎么办&#xff0c;希望这些文字能够带给大家实际用处&#xff0c;这也是我编辑mysql5.7 密码过期了怎…

我的开源项目

Android App 循环访问网站app app介绍&#xff1a;http://blog.csdn.net/zengmingen/article/details/78016167 开源地址&#xff1a;https://gitee.com/zengmg/VistWeb

初始化bean(二)—— 缓存部分

上一篇博客&#xff0c;讲了下spring如何初始化bean的 当然&#xff0c;当时只讨论了很简单的一种情况&#xff1a;初次加载bean时候&#xff0c;并且只考虑了单例。 这篇博客会试着理清楚spring在加载bean的时候的一部分缓存。关于解决循环引用所使用的缓存&#xff0c;可以看…

chkconfig: 2345 20 80

#chkconfig: 2345 20 80 2345表示系统运行级别是2&#xff0c;3&#xff0c;4或者5时都启动此服务&#xff0c;20&#xff0c;是启动的优先级&#xff0c;80是关闭的优先级&#xff0c;如果启动优先级配置的数太小时如0时&#xff0c;则有可能启动不成功&#xff0c;因为此时可…

android 按键上浮动画_android – 浮动动作按钮动画

从Zielony的回答中,我确切地说到了我想要的地方.下面是正确应用效果的代码.scale_fab_in.xmlandroid:duration"500"android:fromXScale"0"android:fromYScale"0"android:pivotX"50%"android:pivotY"50%"android:toXScale&qu…