当前位置:   article > 正文

Maven配置私有库_pom repository

pom repository

一、仓库

仓库类型:
本地仓库、远程中央仓库、公司自己搭建的私有仓库

寻找jar的基本优先级顺序:
本地仓库 > settings.xml的profile的仓库 > pom.xml的profile的仓库 >pom.xml的仓库 > 中央仓库

设置仓库的方式有两种,一种是在项目最顶级POM.xml中设置,另一种是在settings.xml中设置。

在POM.xml中设置:

  <repositories>
        <repository>
            <id>nexus</id>
            <name>Team Nexus Repository</name>
            <url>http://192.168.100.100:8181/nexus/content/groups/public</url>
        </repository>
        <repository>
            <id>thirdparty</id>
            <name>Nexus thirdparty</name>
            <url>http://192.168.100.100:8181/nexus/content/repositories/thirdparty/</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>Team Nexus Repository</name>
            <url>http://192.168.100.100:8181/nexus/content/groups/public</url>
        </pluginRepository>
    </pluginRepositories>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

settings.xml中设定:

<?xml version="1.0" encoding="UTF-8"?>
<settings
    xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository>/Users/本地仓库地址/Documents/repo</localRepository>
    <pluginGroups></pluginGroups>
    <proxies></proxies>
    <servers>
        <!--
    发布到仓库中的配置,id要和distributionrepository保持一致
    服务器要打包上传到私服时,设置私服的鉴权信息,否和报错 Return code is: 401, ReasonPhrase: Unauthorized
    -->
        <server>
            <id>release</id>
            <username>deployment</username>
            <password>123456</password>
        </server>
        <server>
            <id>snapshot</id>
            <username>deployment</username>
            <password>123456</password>
        </server>
    </servers>
    <mirrors>
        <!--  设置多个mirrors镜像,镜像只会执行第一个位置mirror。-->
        <!--  配置的多个mirror可以都放着不影响,选取一个镜像下载比较快的放在第一个就行。比如你设置使用自己公司的私有仓库-->
        <!--只有当前一个mirror无法连接的时候,才会去找后一个,类似于备份和容灾。所以当第一个mirror中不存在a.jar的时候,并不会去第二个mirror中查找,甚至于,maven根本不会去其他的mirror地址查询-->
        <mirror>
            <!--      当有id为B,A,C的顺序的mirror在mirrors节点中,maven会根据字母排序来指定第一个,所以不管怎么排列,一定会找到A这个mirror来进行查找,当A无法连接,出现意外的情况下,才会去B查询-->
            <id>aliyun</id>
            <name>阿里云仓库地址</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            <!--覆盖了Maven自带的central-->
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
    <profiles>
        <!-- 全局JDK1.8配置 -->
        <profile>
            <id>jdk1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>
        <!-- 阿里云配置: 提高国内的jar包下载速度 -->
        <profile>
            <id>aliyun-Repository</id>
            <repositories>
                <repository>
                    <id>aliyun</id>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
        <profile>
            <id>suwell-Repository</id>
            <repositories>
                <repository>
                    <id>first</id>
                    <name>Repository first</name>
                    <url>http://192.168.100.100:8181/nexus/content/groups/public</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
        <profile>
            <id>gomain-Repository</id>
            <repositories>
                <repository>
                    <id>second</id>
                    <name>Repository second</name>
                    <url>http://192.168.100.100:8081/nexus/content/groups/public</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
激活仓库配置,拉取依赖会在这些仓库中逐个去找
    <activeProfiles>
        <activeProfile>jdk1.8</activeProfile>
        <activeProfile>first-Repository</activeProfile>
        <activeProfile>aliyun-Repository</activeProfile>
        <activeProfile>second-Repository</activeProfile>
    </activeProfiles>
</settings>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
二、pom.xml

pom.xml 配置文件主要分为两类

  • 用于配置自己的实际依赖
  • 用于声明一些版本和仓库便于版本管理和发布。

pom配置是可以被继承的,父级依赖一般是做版本控制以及指定私有仓库的。
在这里插入图片描述
在这里插入图片描述

三、settings.xml文件

settings 主要由mirrors、servers 和profiles 三部分组成。

1、mirrors
mirrors 主要作用是一个镜像代理,便于内外网厂库切换,或者单独配置内网使用。

如果pom中的repository的id能和mirrorOf的值关联上,那么url以mirror的为准,否则以repository中自己的url为准。

<mirror>
         <id>test-nexus</id>
         <mirrorOf>*</mirrorOf>
         <name>sugon local repository</name>
         <url>http://172.22.5.34:9996/repository/sugoncloud-public/</url>
     </mirror>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

mirrorof 有三种值:

  • *代表 所有仓库请求都走这个配置的镜像代理
  • central 默认是maven 的仓库

2、servers

<server>
         <id>nexus-releases</id>
         <username>deployment</username>
         <password>deployment123</password>
     </server>
  • 1
  • 2
  • 3
  • 4
  • 5

它关联pom中配置的私有仓库id, 在推送依赖包的时候根据id进行认证。

3、profiles
配置全局私用仓库。

注意:
如果只配置mirrors 是不能拉取父pom文件的,如果需要拉取父pom文件那么需要配置repository。

参考文章:
[1] Maven私有仓库nexus配置
[2] Java Maven settings.xml中私有仓库配置详解

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/87921
推荐阅读
相关标签
  

闽ICP备14008679号