deploy和手动上传jar包至nexus

一、nexus的好处

       Maven默认提供的中央仓库是在远程网络服务Appache提供的,这对于我们开发时不合理的。如果我们没网了或者什么情况,我们怎么办?我们需要的jar包中央库没有或者是要收费怎么办?也就是说我们队中央仓库的依赖性太大。而Nexus私服则可以解决我们这个问题。

deploy和手动上传jar包至nexus_第1张图片

        这样就相当于在我们本地的局域网搭建了一个类似中央仓库的服务器,我们开始将中央仓库的一些资料下载到私服务器上,然后平时我们的maven项目就是直接访问局域网内的私服即可,既节省了网络带宽也会加速项目搭建的进程,这样对我们开发来说,对公司来说都是非常好的选择。项目内部和项目与项目之间也可以共享jar包,达到代码的最大化利用。

一般有两种情况需要我们上传jar包至nexus,一个是本地项目生成的jar包,另一个是我们从第三方拿过来的的中央库中不存在的jar包,前者采用maven工程deploy的方法,后者采用手动上传的方式。

二、手动上传jar包

对于一些第三方jar包,在maven中央库中下载不到的,我们可以手动上传至nexus库中。

首先登陆nexus,进入3rd party,选择Artifact Upload,如图:

deploy和手动上传jar包至nexus_第2张图片

nexus提供了两种上传jar到私服的方式From POM和GAV Parameters。
From POM方式使用场景:上传的jar还依赖别的jar时,如何把jar和他的依赖一起传到私服。例如:我们想传a.jar到私服,但是a.jar还依赖b.jar,假如只传a.jar到私服,在项目中会因为找不到a.jar的依赖(b.jar)而报错。
使用参考链接:https://blog.csdn.net/wabiaozia/article/details/76098727

本项目还未使用到From POM的方式,所以只介绍GAV Parameters方式。

示例中使用的jar包为:geogson.jar包,基本信息:


  com.nsn.geogson
  geogson
  1.0.0

deploy和手动上传jar包至nexus_第3张图片
deploy和手动上传jar包至nexus_第4张图片

导入成功后,search该包显示如下:

deploy和手动上传jar包至nexus_第5张图片

在本地工程中加入本项目依赖,会自动下载jar包至本地maven仓库文件夹中。

三、deploy jar至nexus库

工程pom文件中,配置发布构件的基本信息:

 maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写),如下:

cc.mzone
m1
0.1-SNAPSHOT
jar

 maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在mvn deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。

配置deploy的地址:

 
    
        
            release                    
            user release resp   
            http://192.168.1.11:9083/nexus/content/repositories/releases/
        

        
            snapshots
            user snapshot
            http://192.168.1.11:9083/nexus/content/repositories/snapshots/
        
    

distributionManagement配置参考:     https://blog.csdn.net/yeguxin/article/details/77110622

中的 && 各自的含义

  • maven仓库分为两种 release发布仓库() 和 snapshot快照仓库()
  • snapshot快照仓库用于保存开发过程中的不稳定版本
  • release正式仓库用来保存稳定的发行版本
  • 定义一个组件/模块为快照版本  只需要在pom文件中的该模板的版本号后面加上 -SNAPSHOT就可以了.  注意:必须是大写
  • maven会根据模块的版本号(pom文件中的版本号)中是否带有-SNAPSHOT来判断这个是快照版本还是正式版本.
  • 如果是快照版本:
  • 在mvn deploy时会自动发布到快照版本库中.
  • 而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本
  • 如果是正式发布版本:

  • 那么在mvn deploy时会自动发布到正式版本库中,
  • 而使用正式版本的模块,在不更改版本号的情况下,编译打包时,如果本地已经存在该版本的模块则使用本地的而不是主动去镜像服务器上下载

本地maven文件夹conf目录下,setting.xml文件中配置nexus的账号和密码:




D:\maven\repo

    
    
     
       
        central 
        dev 
        dev123 
       
       
        snapshots 
        dev 
        dev123 
       
       
        releases 
        dev 
        dev123 
       
    
    
        
            nexus-public
            central
            central repository
            http://192.168.1.11:9083/nexus/content/groups/public/
        
    

    
         
            nexus 
             
                 
                    central 
                    
                    Nexus Release Snapshot Repository 
                    
                    http://192.168.1.11:9083/nexus/content/repositories/releases
                    
                        true
                     
                    
                        true
                     
                

                
                    snapshots
                    http://192.168.1.11:9083/nexus/content/repositories/snapshots
                    true
                    true
                

             
             
                 
                    central 
                    Nexus Release Snapshot Repository 
                    http://192.168.1.11:9083/nexus/content/repositories/releases
                    
                        true
                     
                    
                        true
                    
                 
                 
                    snapshots
                    http://192.168.1.11:9083/nexus/content/repositories/snapshots
                    true
                    true
                 
             
        
       
    
    
        nexus 
    

需要注意的是,settings.xml中server元素下id的值必须与POM中repository或snapshotRepository下id的值完全一致。maven在处理发布时会根据id查找用户名称和密码进行登录和文件的上传发布。

最后点击deploy即可发布。

deploy和手动上传jar包至nexus_第6张图片

你可能感兴趣的:(CICD)