热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

maven私服注意问题nexus搭建maven私服及私服jar包上传和下载

2019独角兽企业重金招聘Python工程师标准http:blog.csdn.netzwc0910articledetails17349111一、nexus搭建maven私服

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

http://blog.csdn.net/zwc0910/article/details/17349111

 

一、nexus搭建maven私服及相关介绍

1、下载nexus-2.12.0-01-bundle.zip(版本随意)

2、以管理员身份运行cmd,cd进入解压文件的bin目录,执行nexus.bat install



若未以管理员身份运行则安装不了,因为权限不够


3、开启nexus服务,访问nexus服务器地址:http://localhost:8081/nexus/,默认登录账户为admin,默认密码为admin123,登录成功后点击Repositories可看到私服有以下类型仓库:



1)hosted,宿主仓库,部署自己的jar到这个类型的仓库,包括releases和snapshot两部分,Releases公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
2)proxy,代理仓库,用于代理远程的公共仓库,如maven中央仓库,用户连接私服,私服自动去中央仓库下载jar包或者插件。 
3)group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置自己的maven连接仓库组。
4)virtual(虚拟):兼容Maven1 版本的jar或者插件 

4、nexus仓库默认在解压文件的sonatype-work\nexus\storage目录中:

apache-snapshots:代理仓库,存储snapshots构件,代理地址https://repository.apache.org/snapshots/

central-m1:virtual类型仓库,兼容Maven1 版本的jar或者插件

releases:本地仓库,存储releases构件。

snapshots:本地仓库,存储snapshots构件。

thirdparty:第三方仓库

public:仓库组

 

二、向maven私服上传写好的jar
 

1、需求:将项目子模块ssm_dao这个工程打包成jar并上传到私服

2、第一步:需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 settings.xml 文件,配置连接私服的用户

和密码。此用户名和密码用于私服校验,因为私服需要知道上传都 的账号和密码 是否和私服中的账号和密码 一致。

在maven文件夹下apache-maven-3.5.0\conf\settings.xml文件添加一下代码:(节点内)

 

[html] view plain copy

  1.   
  2.        
  3.       releases  
  4.         
  5.       admin  
  6.       admin123  
  7.       
  8.       
  9.       
  10.       snapshots  
  11.         
  12.       admin  
  13.       admin123  
  14.       

 

3、在ssm_dao的pom.xml文件中添加一下代码:

[html] view plain copy

  1.   
  2.     
  3.    
  4.       
  5.         releases  
  6. http://localhost:8081/nexus/content/repositories/releases/  
  7.        
  8.       
  9.         snapshots  
  10. http://localhost:8081/nexus/content/repositories/snapshots/  
  11.        
  12.    

根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库。

如:ssm_dao的工程的版本号为0.0.1-SNAPSHOT,则ssm_dao打包好的jar在本地仓库snapshots可见

[html] view plain copy

  1. 4.0.0  
  2.    
  3.    com.nocol  
  4.    ssm_parent  
  5.    0.0.1-SNAPSHOT  
  6.    
  7.  ssm_dao  

4、正式上传:首先启动nexus服务,对ssm_dao工程执行deploy命令,看到BUILD SUCCESS则表示上传成功了


此时在\nexus-2.12.0-01-bundle\sonatype-work\nexus\storage\snapshots下能找到,但是在本地仓库并没有,因为jar包上传在maven私服,接下来介绍如何能让自己上传的jar出现在本地仓库

如图:(本地snapshots)

如图:(私服)

5、此时将ssm_dao工程关闭,可以看到依赖ssm_dao的ssm_service工程出现感叹号(缺少了ssm_dao.jar)

三、maven私服自动下载jar包
1、在没有配置nexus之前,如果本地仓库没有,去中央仓库下载。有了私服之后,本地项目首先去本地仓库找jar,如果没有找到则连接私服从私服下载jar包,如果私服没有jar包私服同时作为代理服务器从中央仓库下载jar包,这样提高了下载速度,项目连接私服下载jar包的速度要比项目连接中央仓库的速度快的多。

2、nexus中包括很多仓库,如上面介绍的hosted中存放的是自己发布的jar包及第三方公司的jar包,proxy中存放的是中央仓库的jar,为了方便从私服下载jar包可以将多个仓库组成一个仓库组,每个工程需要连接私服的仓库组下载jar包,这样在项目中配置下载路径只需要给仓库组路径即可,即:

http://localhost:8081/nexus/content/groups/public/

3、第一步:在客户端的setting.xml中配置私服的仓库,由于setting.xml中没有repositories的配置标签需要使用profile定义仓库(profile节点内)

[html] view plain copy

  1.      
  2.       
  3.    dev     
  4.          
  5.           
  6.           
  7.         nexus     
  8.           
  9.         http://localhost:8081/nexus/content/groups/public/     
  10.           
  11.              
  12.           true     
  13.              
  14.           
  15.              
  16.           true     
  17.              
  18.            
  19.         
  20.          
  21.           
  22.             
  23.               
  24.             public    
  25.             Public Repositories    
  26.             http://localhost:8081/nexus/content/groups/public/    
  27.             
  28.         
  29.       

使用profile定义仓库需要激活才可生效,再在profile结束标签后添加一下代码:

[html] view plain copy

  1.   
  2.     
  3.    dev  
  4.    

4、配置成功后通过eclipse查看ssm_service工程下pom.xml的Effective POM选项,可看到如下代码:

[html] view plain copy

  1.   
  2.       
  3.         
  4.         true  
  5.         
  6.         
  7.         true  
  8.         
  9.       nexus  
  10.       http://localhost:8081/nexus/content/groups/public/  
  11.       
  12.       
  13.         
  14.         false  
  15.         
  16.       central  
  17.       Central Repository  
  18.       https://repo.maven.apache.org/maven2  
  19.       
  20.     
  21.     
  22.       
  23.       public  
  24.       Public Repositories  
  25.       http://localhost:8081/nexus/content/groups/public/  
  26.       
  27.       
  28.         
  29.         never  
  30.         
  31.         
  32.         false  
  33.         
  34.       central  
  35.       Central Repository  
  36.       https://repo.maven.apache.org/maven2  
  37.       
  38.     

表示当该工程需要的jar在本地仓库没有时,根据这里配置的访问路径自动去maven私服下载。此时再update一下父工程,发现ssm_service的感叹号消失(此时ssm_dao还是close状态),说明ssm_service工程已经在maven私服内下载了ssm_dao.jar,同时在本地仓库也存在了该jar。


转:https://my.oschina.net/u/3713770/blog/1558189



推荐阅读
author-avatar
秋秋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有