Nexus-3.16x版本构建Maven私有仓库的使用

之前文章已经对Nexus-3.16x版本如何搭建局域网内的私有仓库做了说明,这篇文章我们主要介绍关于如何使用我们的私有仓库以及可能遇到的一些问题。

Windows环境下使用Nexus-3.16x版本构建Maven私有仓库

一、环境

系统环境:Windows10    JDK版本:1.8.0_11     Maven版本:3.3.9     Nexus版本:3.16.0-01    IDE版本:IntelliJ IDEA 2017.2.5

二、本地Maven的配置

前提:在配置使用环境之前我们一定要明确,几种Maven仓库的调用优先级,这一点十分重要,在明确了这一点之后,项目上进行配置时就会相对可以灵活很多,这里直接给出结论。

Maven中的localRepository(本地仓库) > Maven中的profile(远程仓库) > Pom中的repository> Maven中的mirror(远程仓库)

说明:IDE在构建项目时,首先在Maven配置文件settings.xml所配置的的localRepository(本地仓库)路径下中查找jar依赖文件,若未找到相应依赖,则按照本地Maven所配置的profile(远程仓库)节点远程查找依赖,此时若找到则下载到本地仓库进行项目构建,若未找到则按照项目中的配置文件pom.xml中所配置的repository节点查找依赖,若找到则下载到本地仓库进行项目构建;若未找到则按照Maven中的配置文件settings.xml中所配置的mirror节点查找依赖若找到则下载到本地仓库进行项目构建,若未找到则项目构建失败。

1. 修改Maven安装目录【..\apache-maven-3.3.9\conf】的配置文件【settings.xml】

Nexus-3.16x版本构建Maven私有仓库的使用_第1张图片

2. 相关配置如下,解析已在文件中注明



    
    D:\Java\maven\repository
    
    
    
    
        
            nexus-releases
            Nexus用户名
            Nexus密码
        
        
            nexus-snapshots
            Nexus用户名
            Nexus密码
        
    
    
    
        
            nexus
            central
            nexus repository
            http://IP:端口号/repository/maven-public/
        
    
    
    
        
        
            env-dev
            
                
                    maven-public
                    http://IP:端口号/repository/maven-public/
                    
                        true
                    
                    
                        true
                        always
                    
                
            
            
                
                    maven-public
                    http://IP:端口号/repository/maven-public/
                    
                        true
                    
                    
                        true
                        always
                    
                
            
        
        
        
            jdk-1.8
            
                true
                1.8
            
            
                1.8
                1.8
                1.8
            
        
    
    
    
        env-dev
    

三、IntelliJ IDEA及项目pom.xml配置

IntelliJ IDEA配置

1. 设置【Maven】

Nexus-3.16x版本构建Maven私有仓库的使用_第2张图片

 项目pom.xml配置

1. 在pom.xml的【project】节点下,添加如下配置:

备注:repository的id节点需要和Maven配置文件settings.xml中server的id一致

 
 
    
        nexus-aliyun
        nexus-aliyun
        http://maven.aliyun.com/nexus/content/groups/public/
        
            true
        
        
            false
        
    




    
        nexus-releases
        Releases
        http://IP:端口号/repository/maven-releases
    
    
    
        nexus-snapshots
        Snapshot
        http://IP:端口号/repository/maven-snapshots/
    

 附加

此外还有一种相对简单地配置方式,即在项目pom.xml文件中不配置repository节点,直接在Maven的配置文件setting.xml中配置mirror节点。即直接获取我们私库中的数据,流程变成:Maven中的localRepository(本地仓库) > Maven中的mirror(远程仓库)

配置如下:

1.Maven的配置文件setting.xml



    
    D:\Java\maven\repository
    
    
    
    
        
            nexus-releases
            Nexus用户名
            Nexus密码
        
        
            nexus-snapshots
            Nexus用户名
            Nexus密码
        
    
    
        
            nexus
            nexus repository
            http://IP:端口号/repository/maven-public/
            central
        
    

2.项目配置文件pom.xml


    
        
            nexus-releases
            Releases
            http://192.168.15.175:8088/consmation/nexus/repository/maven-consmation.releases/
        
        
        
            nexus-snapshots
            Snapshot
            http://192.168.15.175:8088/consmation/nexus/repository/maven-consmation.snapshots/
        
    

四、Nexus3.xx版本第三方jar上传

官方文档说明:https://help.sonatype.com/repomanager3/user-interface/uploading-components

前提条件

1. jar文件上传到私库的类型只能是hosted类型

2. 所操作的角色必须对目标私库读写权限

方式一:命令行执行

命令行,例:

mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 -Dpackaging=jar -DrepositoryId=nexus-3rd-party -Dfile=D:\Code\ojdbc6-11.2.0.4.jar -Durl=http://IP:端口号/repository/maven-3rd.party/ -DgeneratePom=false

说明

DgroupId、DartifactId、Dversion:构成了该jar包在pom.xml的坐标位置。
Dpackaging:打包类型。
Dfile:待上传的jar包的本地绝对路径。注:此处的jar包位置不能与本地仓库下的jar包路径一样。
Durl:私服上第三方仓库的地址。
DrepositoryId:服务器的唯一id,即在Maven配置文件setting.xml中所配置的serverId。例如上文所配置的nexus-releases。

方式二:管理界面执行

1. 登录Nexus,选择所要上传的私库。

Nexus-3.16x版本构建Maven私有仓库的使用_第3张图片

2. 填写相关的必选项及上传文件

Nexus-3.16x版本构建Maven私有仓库的使用_第4张图片

五、常见问题

1.在IDEA中使用maven plugin的deploy命令将项目打包部署到私库中时,出现如下错误:

Failure to find commons-logging:commons-logging:jar:1.2 in 私库url was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced -> [Help 1]

问题原因:意为在私库中未存在该jar依赖,当前jar依赖被占用等问题。

解决方法:将本地Maven仓库数据全部删除,重新在IDEA中导入依赖即可。

你可能感兴趣的:(Maven,IDE问题,Nexus)