精华内容
下载资源
问答
  • 本篇文章主要介绍了Gradle使用Maven仓库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • maven仓库资源包

    2018-11-19 11:02:15
    包含常用的maven jar包有需要请下载..
  • 超全面搭建Maven仓库

    2018-09-08 20:27:11
    超全面搭建Maven仓库:Maven环境变量配置,Maven仓库创建(本地资源库,中央资源库),Eclipse内配置Maven环境
  • 清理maven仓库

    2018-12-07 16:59:38
    放在仓库目录下,直接双击运行,自动获取目录,自动清理删除本文件夹下所有包含"lastUpdated,*.repositories,*.sha1-in-progress" 的文件。请慎用。!!!!!!
  • Maven很Maven仓库

    2017-03-05 22:29:32
    主要是spring4.0.5和mybatis等等jar,之前我配置maven都配置了两天,现在放上来方便大家吧,Maven和maven仓库
  • 将本地jar包上传到maven仓库,刷新仓库后即可使用
  • maven仓库下setting设置文件,localRepository 标签中可设置本地地址
  • 删除maven仓库中的失败文件,删除maven仓库中的失败文件,删除maven仓库中的失败文件,删除maven仓库中的失败文件,删除maven仓库中的失败文件,删除maven仓库中的失败文件,删除maven仓库中的失败文件,
  • maven仓库配置详情

    2018-12-21 10:09:15
    maven配置方法 Eclipse上Maven环境配置使用 (全)  1. 安装配置Maven:  1.1 从Apache网站 http://maven.apache.org/ 下载并且解压缩安装Apache Maven。  Maven下载地址: http://maven.apache.org/download.cgi ...
  • 将jar包添加到本地maven仓库 将jar包添加到本地maven仓库
  • 帮助你清理maven仓库下载不完整的jar包 , REPOSITORY_PATH= 后面写你想清理的maven仓库的地址。之后双击bat文件就行了
  • 多镜像maven仓库配置文件,实测可用,下载后修改节点路径即可使用
  • maven仓库插件

    2018-10-18 20:58:17
    maven仓库插件稳定版!不稳定你打我~(解压密码:123)
  • pom更新maven下载jar包是速度慢,配置了一个国内较快速的下载地址
  • 在maven在下载jar的时候中断了就会产生lastUpdate文件,批量删除Maven仓库未下载成功.lastupdate 的文件
  • 一次清除本地maven仓库所有.lastUpdated文件脚本;或者清除所有未下载完成jar的附属文件。适用于win/mac/linux
  • 搭建Maven私有仓库.docx

    2020-04-11 09:55:02
    Windows Server 2016环境下使用Nexus搭建Maven私有仓库详细过程及常用配置。
  • maven本地仓库

    2018-10-31 10:01:26
    maven本地仓库,里面基本有大部分工程所需要的jar包和我自己初学maven时候记录的一些笔记
  • Maven本地仓库.zip

    2020-05-13 16:38:05
    Maven本地仓库.zip
  • 主要介绍了Maven中央仓库地址配置大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了详解maven中央仓库连不上的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Maven仓库理解和优先级

    千次阅读 2019-06-19 14:28:57
    前言 使用 maven 也有一段时间了,有时候在配置 repository,mirror,...Maven根据坐标寻找构件的时候,它先会查看本地仓库,如果本地仓库存在构件,则直接使用;如果没有,则从远程仓库查找,找到后,下载到本地。 ...

    前言

    使用 maven 也有一段时间了,有时候在配置 repository,mirror,profile的时候,总会导致 jar 拉取不到。所以认真的分析了 maven 获取 jar 包时候的优先级。

    Maven 仓库的分类

    仓库分类:本地仓库和远程仓库。Maven根据坐标寻找构件的时候,它先会查看本地仓库,如果本地仓库存在构件,则直接使用;如果没有,则从远程仓库查找,找到后,下载到本地。

    1)本地仓库
    默认情况下,每个用户在自己的用户目录下都有一个路径名为.m2/repository/的仓库目录。我们也可以在 settings.xml 文件配置本地仓库的地址

    2)远程仓库
    本地仓库好比书房,而远程仓库就像是书店。对于Maven来说,每个用户只有一个本地仓库,但是可以配置多个远程仓库。
    下·

    我们可以在 pom 文件配置多个 repository,但是随着项目越来也多我们每次都要在 pom 文件配置比较麻烦,所以我们可以在
    settings 文件配置 profile (私服)。这样我们每次创建新项目的时候就可以不用配置 repository。

    3)中央仓库
    Maven必须要知道至少一个可用的远程仓库,中央仓库就是这样一个默认的远程仓库,Maven 默认有一个 super pom 文件。
    maven super pom 文件位置
    D:\apache-maven-3.0.4\lib 下的 maven-model-builder-3.0.4.jar 中的 org/apache/maven/model/pom-4.0.0.xml

    ··· 省略其他
    <repositories>
        <repository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    
    ···

    这个时候我们就明白了,我们在 settings 文件配置一个 mirror 的 mirrorOf 为 central 的镜像就会替代 ‘中央仓库’ 的原因了。

    Maven 镜像

    镜像(Mirroring)是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。
    为什么配置镜像?

    1.一句话,你有的我也有,你没有的我也有。(拥有远程仓库的所有 jar,包括远程仓库没有的 jar)
    2.还是一句话,我跑的比你快。(有时候远程仓库获取 jar 的速度可能比镜像慢,这也是为什么我们一般要配置中央仓库的原因,外国的 maven 仓库一般获取速度比较慢)

    如果你配置 maven 镜像不是为了以上两点,那基本就不用配置镜像了。
    注意:当远程仓库被镜像匹配到的,则在获取 jar 包将从镜像仓库获取,而不是我们配置的 repository 仓库, repository 将失去作用

    mirrorOf 标签

    mirrorOf 标签里面放置的是 repository 配置的 id,为了满足一些复杂的需求,Maven还支持更高级的镜像配置:

    external:* = 不在本地仓库的文件才从该镜像获取
    repo,repo1 = 远程仓库 repo 和 repo1 从该镜像获取
    *,!repo1 =  所有远程仓库都从该镜像获取,除 repo1 远程仓库以外
    * = 所用远程仓库都从该镜像获取
    

    私服

    私服是一种特殊的远程Maven仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。
    当Maven需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。
    优点主要有:

    1. 节省外网宽带
    2. 加速Maven构建
    3. 部署第三方构件:可以将公司项目的 jar 发布到私服上,方便项目与项目之间的调用
    4. 提高稳定性、增强控制:原因是外网不稳定
    5. 降低中央仓库的负荷:原因是中央仓库访问量太大
    

    上面大概介绍了 Maven 仓库概念,接下来我们进入正题

    Maven 仓库优先级

    为了方便测试,我准备了以下几个仓库

    • 172.16.xxx.xxx 远程仓库 (私服)
    • dev.xxx.wiki 远程仓库 (远程)
    • localhost 仓库 是我自己在本机搭建的一个仓库 (镜像)
    • maven.aliyun.com 中央仓库(中央)

    本地仓库优先级

    此处输入图片的描述
    Maven 本地仓库拥有该包,而远程、镜像、中央、私服都不包含该包。我们来看下 Maven 是怎么获取的

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

     

    .......

    // 使用本地仓库,优先级(priority)为 10

    [DEBUG] Using local repository at E:\OperSource

    [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for E:\OperSource

    [INFO] Scanning for projects..

    ........

    [INFO] Installing C:\Users\swipal\Desktop\abc\demo\target\demo-1.0-SNAPSHOT.jar to E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\demo-1.0-SNAPSHOT.jar

    [DEBUG] Writing tracking file E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\_remote.repositories

    [INFO] Installing C:\Users\swipal\Desktop\abc\demo\pom.xml to E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\demo-1.0-SNAPSHOT.pom

    [DEBUG] Writing tracking file E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\_remote.repositories

    [DEBUG] Installing com.cjf:demo:1.0-SNAPSHOT/maven-metadata.xml to E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\maven-metadata-local.xml

    [DEBUG] Installing com.cjf:demo/maven-metadata.xml to E:\OperSource\com\cjf\demo\maven-metadata-local.xml

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD SUCCESS

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time: 1.874 s

    [INFO] Finished at: 2017-07-07T10:37:32+08:00

    [INFO] Final Memory: 23M/219M

    [INFO] ------------------------------------------------------------------------

    Process finished with exit code 0

    从上面可以看出 Maven 一开始就使用本地仓库,并将本地仓库的优先级定制为 10 , 最后 jar 包也在本地仓库找到,Maven 成功打包。

    远程仓库优先级

    前面我们知道了,本地仓库的优先级是最高的,现在我们继续研究远程仓库的优先级(以下的所有例子,都默认本地仓库不拥有我们需要的包)

    这一次我们默认配置 profile(私服)为 172.16.xxx.xxx 远程仓库, repository 为 dev.xxx.wiki 远程仓库,mirror 为本地 localhost 仓库,还配置了一个 mirrorOf 为 central 远程仓库为 maven.aliyun.com 的中央仓库,

    以下是配置信息
    settings.xml 文件

     

    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

     

    ······

    <mirrors>

    <mirror>

    <id>localhost</id>

    <name>Public Repositories</name>

    <mirrorOf>foo</mirrorOf> <!--拦截 pom 文件配置的 repository-->

    <url>http://localhost:8081/repository/maven-public/</url>

    </mirror>

    <mirror>

    <id>localhost2</id>

    <name>Public Repositories</name>

    <mirrorOf>foo2</mirrorOf> <!--配置一个拦截 foo2 的远程仓库的镜像-->

    <url>http://localhost:8081/repository/maven-snapshots/</url>

    </mirror>

    <mirror>

    <id>alimaven</id>

    <mirrorOf>central</mirrorOf> <!--覆盖 Maven 默认的配置的中央仓库-->

    <name>aliyun maven</name>

    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

    </mirror>

    </mirrors>

    <!--配置私服-->

    <profiles>

    <profile>

    <id>nexus</id>

    <repositories>

    <repository>

    <id>public</id>

    <name>Public Repositories</name>

    <url>http://172.16.xxx.xxx:8081/nexus/content/groups/public/</url>

    </repository>

    </repositories>

    <pluginRepositories>

    <pluginRepository>

    <id>public</id>

    <name>Public Repositories</name>

    <url>http://172.16.xxx.xxx:8081/nexus/content/groups/public</url>

    </pluginRepository>

    </pluginRepositories>

    </profile>

    </profiles>

    <activeProfiles>

    <activeProfile>nexus</activeProfile>

    </activeProfiles>

    ······

    pom.xml 文件

     

    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

     

    <dependencies>

    <!--xxx-cif-api 存在 172.16.xxx.xxx 仓库-->

    <dependency>

    <groupId>com.xxx.cif</groupId>

    <artifactId>xxx-cif-api</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    </dependency>

    <!--Chapter1 存在 localhost 仓库-->

    <dependency>

    <groupId>com.cjf</groupId>

    <artifactId>Chapter1</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    </dependency>

    </dependencies>

    <!--配置远程仓库-->

    <repositories>

    <repository>

    <id>foo</id>

    <name>Public Repositories</name>

    <url>http://dev.xxx.wiki:8081/nexus/content/groups/public/</url>

    </repository>

    </repositories>

    以下是 Maven 拉取包的日志

     

    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

     

    ······· 省略部分日志信息

    [DEBUG] Using local repository at E:\OperSource

    [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for E:\OperSource

    [INFO] Scanning for projects...

    // 从这里可以看出我们配置的镜像替代了我们在 pom 配置的远程仓库

    [DEBUG] Using mirror localhost (http://localhost:8081/repository/maven-public/) for foo (http://dev.xxx.wiki:8081/nexus/content/groups/public/).

    替代了默认的中央仓库

    [DEBUG] Using mirror alimaven (http://maven.aliyun.com/nexus/content/groups/public/) for central (https://repo.maven.apache.org/maven2).

    // 从这里可以看出 Maven 使用哪些 dependencies 和 plugins 的地址,我们可以看出优先级最高的是 172.16.xxx.xxx,然后就是 localhost 最后才是 maven.aliyun.com

    // 注意:alimaven (http://maven.aliyun.com/nexus/content/groups/public/, default, releases) 从这里可以看出中央仓库只能获取 releases 包,所有的 snapshots 包都不从中央仓库获取。(可以看前面 central 的配置信息)

    [DEBUG] === PROJECT BUILD PLAN ================================================

    [DEBUG] Project: com.cjf:demo:1.0-SNAPSHOT

    [DEBUG] Dependencies (collect): []

    [DEBUG] Dependencies (resolve): [compile, runtime, test]

    [DEBUG] Repositories (dependencies): [public (http://172.16.xxx.xxx:8081/nexus/content/groups/public/, default, releases+snapshots), localhost (http://localhost:8081/repository/maven-public/, default, releases+snapshots), alimaven (http://maven.aliyun.com/nexus/content/groups/public/, default, releases)]

    [DEBUG] Repositories (plugins) : [public (http://172.16.xxx.xxx:8081/nexus/content/groups/public, default, releases+snapshots), alimaven (http://maven.aliyun.com/nexus/content/groups/public/, default, releases)]

    [DEBUG] =======================================================================

    // 寻找本地是否有 maven-metadata.xml 配置文件 ,从这里可以看出寻找不到(后面会详细讲该文件作用)

    [DEBUG] Could not find metadata com.xxx.cif:xxx-cif-api:0.0.1-SNAPSHOT/maven-metadata.xml in local (E:\OperSource)

    // 由于寻找不到 Maven 只能从我们配置的远程仓库寻找,由于 Maven 也不知道那个仓库才有,所以同时寻找两个仓库

    [DEBUG] Using transporter WagonTransporter with priority -1.0 for http://172.16.xxx.xxx:8081/nexus/content/groups/public/

    [DEBUG] Using transporter WagonTransporter with priority -1.0 for http://localhost:8081/repository/maven-public/

    [DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for http://localhost:8081/repository/maven-public/

    [DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for http://172.16.xxx.xxx:8081/nexus/content/groups/public/

    Downloading: http://172.16.xxx.xxx:8081/nexus/content/groups/public/com/xxx/cif/xxx-cif-api/0.0.1-SNAPSHOT/maven-metadata.xml

    Downloading: http://localhost:8081/repository/maven-public/com/xxx/cif/xxx-cif-api/0.0.1-SNAPSHOT/maven-metadata.xml

    [DEBUG] Writing tracking file E:\OperSource\com\xxx\cif\xxx-cif-api\0.0.1-SNAPSHOT\resolver-status.properties

    // 从这里可以看出在 172.16.xxx.xxx 找到 xxx-cif-api 的 maven-metadata.xml 文件并下载下来

    Downloaded: http://172.16.xxx.xxx:8081/nexus/content/groups/public/com/xxx/cif/xxx-cif-api/0.0.1-SNAPSHOT/maven-metadata.xml (781 B at 7.0 KB/sec)

    // 追踪文件,resolver-status.properties 配置了 jar 包下载地址和时间

    [DEBUG] Writing tracking file E:\OperSource\com\xxx\cif\xxx-cif-api\0.0.1-SNAPSHOT\resolver-status.properties

    [DEBUG] Could not find metadata com.xxx.cif:xxx-cif-api:0.0.1-SNAPSHOT/maven-metadata.xml in localhost (http://localhost:8081/repository/maven-public/)

    // 在 localhost 远程仓库寻找不到 xxx-cif-api 的 maven-metadata.xml

    [DEBUG] Could not find metadata com.xxx.cif:xxx-cif-api:0.0.1-SNAPSHOT/maven-metadata.xml in local (E:\OperSource)

    // 跳过的远程请求

    [DEBUG] Skipped remote request for com.xxx.cif:xxx-cif-api:0.0.1-SNAPSHOT/maven-metadata.xml, already updated during this session.

    [DEBUG] Skipped remote request for com.xxx.cif:xxx-cif-api:0.0.1-SNAPSHOT/maven-metadata.xml, already updated during this session.

    // 默认以后获取 xxx-cif-api 的时候将不在从 localhost 寻找了,除非强制获取才会再次从 localhost 寻找这个包

    [DEBUG] Failure to find com.xxx.cif:xxx-cif-api:0.0.1-SNAPSHOT/maven-metadata.xml in http://localhost:8081/repository/maven-public/ was cached in the local repository, resolution will not be reattempted until the update interval of localhost has elapsed or updates are forced

    // 将 172.16.xxx.xxx 优先级升为 0 ,并下载 xxx-cif-api 的 pom 文件

    [DEBUG] Using transporter WagonTransporter with priority -1.0 for http://172.16.xxx.xxx:8081/nexus/content/groups/public/

    [DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for http://172.16.xxx.xxx:8081/nexus/content/groups/public/

    Downloading: http://172.16.xxx.xxx:8081/nexus/content/groups/public/com/xxx/cif/xxx-cif-api/0.0.1-SNAPSHOT/xxx-cif-api-0.0.1-20170515.040917-89.pom

    Downloaded: http://172.16.xxx.xxx:8081/nexus/content/groups/public/com/xxx/cif/xxx-cif-api/0.0.1-SNAPSHOT/xxx-cif-api-0.0.1-20170515.040917-89.pom (930 B at 82.6 KB/sec)

    // _remote.repositories 记录的以后使用那个远程仓库获取 (ps:这个文件作用我要不是很清楚作用,以上观点是自己推测出来的。)

    [DEBUG] Writing tracking file E:\OperSource\com\xxx\cif\xxx-cif-api\0.0.1-SNAPSHOT\_remote.repositories

    [DEBUG] Writing tracking file E:\OperSource\com\xxx\cif\xxx-cif-api\0.0.1-SNAPSHOT\xxx-cif-api-0.0.1-20170515.040917-89.pom.lastUpdated

    // 后面获取 Chapter1 包的流程跟 com.xxx.cif 是一样的,不过最后是在 localhost 寻找到而已,所以这分日志就不贴出来了。

    // 最后在下载包的时候,都到对应的仓库下载

    [DEBUG] Using transporter WagonTransporter with priority -1.0 for http://172.16.xxx.xxx:8081/nexus/content/groups/public/

    [DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for http://172.16.xxx.xxx:8081/nexus/content/groups/public/

    Downloading: http://172.16.xxx.xxx:8081/nexus/content/groups/public/com/xxx/cif/xxx-cif-api/0.0.1-SNAPSHOT/xxx-cif-api-0.0.1-20170515.040917-89.jar

    Downloading: http://172.16.xxx.xxx:8081/nexus/content/groups/public/com/xxx/util/xxx-util/0.0.1-SNAPSHOT/xxx-util-0.0.1-20170514.091041-31.jar

    Downloaded: http://172.16.xxx.xxx:8081/nexus/content/groups/public/com/xxx/util/xxx-util/0.0.1-SNAPSHOT/xxx-util-0.0.1-20170514.091041-31.jar (26 KB at 324.2 KB/sec)

    Downloaded: http://172.16.xxx.xxx:8081/nexus/content/groups/public/com/xxx/cif/xxx-cif-api/0.0.1-SNAPSHOT/xxx-cif-api-0.0.1-20170515.040917-89.jar (68 KB at 756.6 KB/sec)

    [DEBUG] Writing tracking file E:\OperSource\com\xxx\cif\xxx-cif-api\0.0.1-SNAPSHOT\_remote.repositories

    [DEBUG] Writing tracking file E:\OperSource\com\xxx\cif\xxx-cif-api\0.0.1-SNAPSHOT\xxx-cif-api-0.0.1-20170515.040917-89.jar.lastUpdated

    [DEBUG] Writing tracking file E:\OperSource\com\xxx\util\xxx-util\0.0.1-SNAPSHOT\_remote.repositories

    [DEBUG] Writing tracking file E:\OperSource\com\xxx\util\xxx-util\0.0.1-SNAPSHOT\xxx-util-0.0.1-20170514.091041-31.jar.lastUpdated

    [DEBUG] Using transporter WagonTransporter with priority -1.0 for http://localhost:8081/repository/maven-public/

    [DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for http://localhost:8081/repository/maven-public/

    Downloading: http://localhost:8081/repository/maven-public/com/cjf/Chapter1/0.0.1-SNAPSHOT/Chapter1-0.0.1-20170708.092339-1.jar

    Downloaded: http://localhost:8081/repository/maven-public/com/cjf/Chapter1/0.0.1-SNAPSHOT/Chapter1-0.0.1-20170708.092339-1.jar (8 KB at 167.0 KB/sec)

    [DEBUG] Writing tracking file E:\OperSource\com\cjf\Chapter1\0.0.1-SNAPSHOT\_remote.repositories

    [DEBUG] Writing tracking file E:\OperSource\com\cjf\Chapter1\0.0.1-SNAPSHOT\Chapter1-0.0.1-20170708.092339-1.jar.lastUpdated

    [INFO] Installing C:\Users\swipal\Desktop\abc\demo\target\demo-1.0-SNAPSHOT.jar to E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\demo-1.0-SNAPSHOT.jar

    [DEBUG] Writing tracking file E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\_remote.repositories

    [INFO] Installing C:\Users\swipal\Desktop\abc\demo\pom.xml to E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\demo-1.0-SNAPSHOT.pom

    [DEBUG] Writing tracking file E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\_remote.repositories

    [DEBUG] Installing com.cjf:demo:1.0-SNAPSHOT/maven-metadata.xml to E:\OperSource\com\cjf\demo\1.0-SNAPSHOT\maven-metadata-local.xml

    [DEBUG] Installing com.cjf:demo/maven-metadata.xml to E:\OperSource\com\cjf\demo\maven-metadata-local.xml

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD SUCCESS

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time: 10.549 s

    [INFO] Finished at: 2017-07-09T18:13:20+08:00

    [INFO] Final Memory: 26M/219M

    [INFO] ------------------------------------------------------------------------

    ·······

    好了,看了这么多的配置文件信息和日志信息,我们也总结一下 Maven 远程仓库优先级了。

    主要有以下几点:
    1.从日志信息我们得出这几种maven仓库的优先级别为

    本地仓库 > 私服 (profile)> 远程仓库(repository)和 镜像 (mirror) > 中央仓库 (central)

    2.镜像是一个特殊的配置,其实镜像等同与远程仓库,没有匹配远程仓库的镜像就毫无作用(如 foo2)。
    3.总结上面所说的,Maven 仓库的优先级就是 私服和远程仓库 的对比,没有其它的仓库类型。为什么这么说是因为,镜像等同远程,而中央其实也是 maven super xml 配置的一个repository 的一个而且。所以 maven 仓库真正的优先级为

    本地仓库 > 私服(profile)> 远程仓库(repository)

    maven-metadata.xml 文件

    Maven Repository Metadata 可用于表示:

    1. 一个没有版本的工件:它提供有关该工件的可用版本的信息
    2. 快照伪像:它提供有关快照的精确信息
    3. 包含Maven插件工件的组:它提供了有关此组中可用插件的信息。
    

    元数据文件名是:

    远程存储库中的 maven-metadata.xml,
    maven-metadata- <repo-id>.xml在本地存储库中,用于具有repo-id标识符的存储库中的元标记。
    

    以上是 Maven 官网对该文件的解释。

    作用

    问题:有时候我们更新最新包的时候,会发现最新的包被拉取下来的,但是项目使用的包还是旧的包。所以我们要分析下是什么原因导致的。

    首先我们先大概的了解下 maven-metadata.xml 文件。

     

    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

     

    <?xml version="1.0" encoding="UTF-8"?>

    <metadata modelVersion="1.1.0">

    <groupId>com.cjf</groupId>

    <artifactId>Chapter1</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <versioning>

    <snapshot> <!--当前版本下的最新快照信息-->

    <timestamp>20170710.071727</timestamp> <!--快照的时间戳-->

    <buildNumber>6</buildNumber> <!--构件号-->

    </snapshot>

    <lastUpdated>20170710071727</lastUpdated><!--metadata文件被更新的时间-->

    <snapshotVersions>

    <snapshotVersion> <!--当前版本下可用的子快照版本信息-->

    <extension>jar</extension>

    <value>0.0.1-20170710.071727-6</value><!--子快照版本的信息-->

    <updated>20170710071727</updated> <!--这个子快照版本的更新时间-->

    </snapshotVersion>

    <snapshotVersion>

    <extension>pom</extension>

    <value>0.0.1-20170710.071727-6</value>

    <updated>20170710071727</updated>

    </snapshotVersion>

    </snapshotVersions>

    </versioning>

    </metadata>

     

    其中 lastUpdated 是最中要的一个属性,Maven 更新工程的 jar包时,会比较 lastUpdated 时间戳值,哪个值更大,就以哪个文件为准。

    接下来我们看下 Maven 为我们生成了那些文件
    此处输入图片的描述
    我们可以看到 maven-metadata.xml 一共有三个

    1. maven-metadata-local.xml 本地的元数据, Maven install 的时候就会生成。
    2. maven-metadata-snapshots.xml Maven deploy 时会生成
    3. maven-metadata-localhost.xml 远程仓库获取的时候生成 (repository 的 id = localhost)
    

    以上的文件其实都是 Maven 的过渡文件而已

    1. 例如 maven-metadata-snapshots 就是 Maven deploy 先从远程仓库对应包的 maven-metadata.xml 下载下来,然后修改快照信息后在上传到远程仓库上。
    2. 例如 maven-metadata-localhost 的作用是在 Maven 在拉取包的时候,会先跟本地 maven-metadata-local 比较下 lastUpdated 时间戳值,值大用哪个。如果是 Mavne 强制更新 的时候(没有强制更新是不会) 会下载远程的 maven-metadata.xml 比较远程,本地,和之前远程保存下来的 maven-metadata 文件

    所以有时候 maven 库上的 jar 包已经更新,而我们总是拉取不到 maven 的包原因就是本地的 maven-metadata-local 的 lastUpdated 比较大。

    我们验证下 Maven deploy 例子

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

     

    [INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ Chapter1 ---

    // 先从远程下载快照 maven-metadata.xml

    Downloading: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/0.0.1-SNAPSHOT/maven-metadata.xml

    Downloaded: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/0.0.1-SNAPSHOT/maven-metadata.xml (768 B at 3.3 KB/sec)

    // 将项目的 jar 和 pom 文件更新到远程仓库

    Uploading: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/0.0.1-SNAPSHOT/Chapter1-0.0.1-20170710.121310-15.jar

    Uploaded: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/0.0.1-SNAPSHOT/Chapter1-0.0.1-20170710.121310-15.jar (8 KB at 14.1 KB/sec)

    Uploading: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/0.0.1-SNAPSHOT/Chapter1-0.0.1-20170710.121310-15.pom

    Uploaded: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/0.0.1-SNAPSHOT/Chapter1-0.0.1-20170710.121310-15.pom (2 KB at 2.0 KB/sec)

    Downloading: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/maven-metadata.xml

    Downloaded: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/maven-metadata.xml (275 B at 1.6 KB/sec)

    // 上传 maven-metadata.xml 到远程仓库

    Uploading: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/0.0.1-SNAPSHOT/maven-metadata.xml

    Uploaded: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/0.0.1-SNAPSHOT/maven-metadata.xml (768 B at 1.0 KB/sec)

    Uploading: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/maven-metadata.xml

    Uploaded: http://localhost:8081/repository/maven-snapshots/com/cjf/Chapter1/maven-metadata.xml (275 B at 0.4 KB/sec)

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD SUCCESS

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time: 5.231 s

    [INFO] Finished at: 2017-07-10T20:13:13+08:00

    [INFO] Final Memory: 19M/226M

    [INFO] ------------------------------------------------------------------------

     

    总结

    原本以为两天就写好这篇文章,在自己理清思路的时候总是被自己绕晕了。比如在 Nexus 的 Central 配置的中央仓库获取,和 maven-metadata.xml 是如何比较的。

    文章来源:https://swenfang.github.io/2018/06/03/Maven-Priority/

    展开全文
  • 主要介绍了详解如何将JAR包发布到Maven中央仓库,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包
  • 什么是Maven Maven的含义:Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架...

    什么是Maven

    Maven的含义:Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具

    Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为 Maven 使用了一个标准的目录结构和一个默认的构建生命周期。

    在有多个开发团队环境的情况下,Maven 能够在很短的时间内使得每项工作都按照标准进行。因为大部分的工程配置操作都非常简单并且可复用,在创建报告、检查、构建和测试自动配置时,Maven 可以让开发者的工作变得更简单。

    Maven的优势:自动构建,jar包依赖管理,契约编程

    使用Maven可以为我们完成很多相应的功能:清理代码,自动编译,完成测试,生成站点报告,进行打包(jar,war),项目部署。Maven的安装与配置

    Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。

    JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html

    从网上下载 Mavenhttp://maven.apache.org/download.html

    注:安装的路径不要有中文,不要有空格

    配置环境变量:要不全部配置到系统变量或者用户变量

    JDK的安装是咱们前期课程中已经有的,如果忘记的同学可以去回顾一下(注:一个Java程序员如果JDK都配置不了,那也太尴尬了)

    安装maven配置环境变量 mysql配置环境变量都和Java配置环境变量方式一样的

    解压Maven并且进行环境变量配置 

    1. 配置Maven_HOME:配置到maven安装的根路径

    配置PATH:不能把后面配置的内容清空

     

    检查是否配置成功

    mvn -v

    mvn  没有参数

    自动生成两个文件夹:C:\Users\Administrator\.m2\repository  本地仓库目录

     

    配置本地仓库(不能扔c盘啊jar包多了得多大,不过我maven直接就没解压到c盘安装)

    意思一下

    第一步:移动settings.xml文件并设置

    MAVEN_HOME/conf/settings.xml 全局的  找到打开

    这是我想要的本地仓库的位置

     

    目录放在这对标签里面 

    <localRepository>D:/OpenSource/mavenRepository/repository</localRepository>

    顺便放一下如何把下载源改到阿里云吧  往后翻找到<mirros>标签对 cv下面的配置进去 注意位置

     <mirrors>
        
        <mirror> 
          <id>alimaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
         <mirrorOf>central</mirrorOf> 
      </mirror> 

      </mirrors>

    补充一下概念吧

    在 Maven 的术语中,仓库是一个位置(place),例如目录,可以存储所有的工程 jar 文件、library jar 文件、插件或任何其他的工程指定的文件。

    Maven的仓库有两种:本地仓库与远程仓库

    1.本地仓库

    解释:就是自己电脑jar包的地方

    默认路径:~/.m2/repository/

    注:每个用户只有一个本地仓库

     2. 远程仓库

    中央仓库:Maven的默认的远程仓库(http://repo1.maven.org/maven2)

    私服:是一种特殊的远程仓库,它是架设在局域网内的仓库

    镜像:用来替代中央仓库,速度一般比中央仓库快(百度 csdn,oschina,阿里云)

    刚才我就是在maven的settings.xml文件里的mirrors节点,添加上面的节点:

    打开idea的seting 直接搜或者看目录找到maven 配置一下红色箭头的东西 最下面那个自动出来了 apply

     

     

    补充
    每次 使用idea新建maven工程,maven的仓库一直是默认c盘自带的仓库,想使用自己的仓库就需要每次都去修改

    解决方式: 
    设置默认配置 
    这里写图片描述

    修改为自己的本地仓库  

    展开全文
  • maven本地仓库压缩包

    2018-01-31 23:25:07
    maven本地仓库压缩包,maven本地仓库配置教程:http://blog.csdn.net/xianzhixianzhixian/article/details/79222811
  • idea配置maven仓库详细

    千次阅读 2021-01-08 21:51:36
    本章讲的是 idea配置maven仓库 永久设置和本次项目设置 1、首先讲本次项目设置 进入idea maven的安装与配置章节: https://blog.csdn.net/weixin_48190775/article/details/112383517 如果再适用到下次创建时的...

    本章讲的是 idea配置maven仓库 永久设置和本次项目设置

    1、首先讲本次项目设置 进入idea
    在这里插入图片描述
    在这里插入图片描述
    maven的安装与配置章节: https://blog.csdn.net/weixin_48190775/article/details/112383517

    如果再适用到下次创建时的项目,需要选择 Other Setting 中的配置。

    在这里插入图片描述
    在这里插入图片描述
    操作和上面一样

    在这里插入图片描述
    至此 我们就配置完了 我们可以引入一个依赖试试

    <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
    </dependency>
    

    测试

    在这里插入图片描述
    在这里插入图片描述
    配置完成!!!

    展开全文
  • maven-repository仓库

    2018-08-20 17:33:38
    maven仓库所需要的jar包,包含完整的内容,可以去看一下简绍(https://blog.csdn.net/Fly_tom/article/details/81874197),由于csdn网站上传文件的限制,这个只是一部分,另一部分:...
  • gradle配置使用本地maven仓库只是引用已有的依赖包不是完全复用 将GRADLE_USER_HOME配置为maven的仓库依赖包依然会下载到caches目录下

    一、前言  

        gradle配置使用本地仓库的过程并不顺利,度娘出来的文章大多讲的都不够详细、不够明白,对像我这样的小白没什么帮助,甚至有误导的作用。写这篇文章的目的主要是想说说自己经历和总结,希望能给别人一些少许的建议,同时也希望路过的大神们能够留下评论,给些建议。

        我的gradle及maven的相关目录如下:

            gradle目录:C:\dev\gradle-4.0

            maven目录:C:\dev\apache-maven-3.0.5

            maven仓库:C:\dev\apache-maven-3.0.5\repository

       因为gradle可以使用maven本地仓库,所以最开始的期望是配置使得gradle使用maven本地仓库,若依赖不存在就将依赖下载到本地maven仓库下,下载下来的依赖包和maven下载的依赖包结构是一样的。

    二、过程

        最开始的时候搜索到文章大多说的只是将环境变量GRADLE_USER_HOME配置为maven本地仓库即可,因此我就将GRADLE_USER_HOME配置为:

    C:\dev\apache-maven-3.0.5\repository

    在项目的build.gradle的repositories中配置:

    repositories {
        mavenLocal()//最新使用本地仓库
        maven { url 'http://maven.aliyun.com/nexus/content/repositories/central/'}//接着使用阿里云
        mavenCentral()//最后使用中心仓库
    }

    最后发现工程中并没有引用maven本地仓库的依赖,包括本地仓库已存在的依赖包也没有被引用,而是将所有的依赖下载到本地仓库目录下的caches\modules-2\files-2.1目录中:

    好吧,看来这个方法,只好继续找。

    接着有部分文章提到:

      mavenLocal()配置maven的本地仓库后,gradle默认会按以下顺序去查找本地的仓库:

          USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository

    于是在环境变量中将M2_HOME配置为:C:\dev\apache-maven-3.0.5。配置结束后刷新gradle,但是发现并没有什么效果。于是重启了idea再次刷新,这次发现有了效果,maven本地库里存在的依赖包被引了进来,但是不存在的依赖包被下载到本地仓库目录下的caches\modules-2\files-2.1目录中问题并未解决:

        走到了这一步,已经对以前的理解有了怀疑,gradle使用本地maven库并不是完全意义的使用,但还是不能肯定(被误导的太深了),最后又搜索了一些文章(如:Gradle 使用Maven的本地仓库(坑)gradle能否将下载的jar存储到maven本地仓库而不是缓存目录)得了一个结论:gradle使用本地maven仓库并非完成复用,若maven库中存在则用maven的,若不存在则用自己缓存的

    三、结论

        当然,我这个结论并一定是最终的结论,但是一步一步的配置和验证这个结论符合我当前的环境(gradle版本配置等),同时也弄清楚了如下几个问题(符合我当前的环境): 

       1.gradle配置使用本地maven仓库这句话要说清楚,说明白,不然对小白造成很大的误解。

         使用本地maven仓库并不是将maven的仓库做为gradle自己仓库(称为缓存更贴切),而是使用maven仓库中存在的依赖包。当gradle工程需要的依赖包在maven仓库中存在时,gradle会引用maven的,若不存在gradle就会将依赖包下载到caches目录下,再引用(这个是有前提的,首先mavenLocal(),其次是必须要有个下载依赖的配置如mavenCentral()或maven{url '中心仓库地址'})。

      gradle下载到caches中的依赖,maven并一定能够复用。首先

       2.仅仅在环境变量中将GRADLE_USER_HOME配置为本地maven仓库目录就说gradle使用本地maven仓库是很有误导性的。

         在当前我的环境下,只配置GRADLE_USER_HOME=C:\dev\apache-maven-3.0.5\repository根本无法引用maven本地仓库存在的依赖,若要引用除了在项目中将mavenLocal()配置在第一位外还必须满足gradle能够查找到maven本地仓库的条件(后面再讲)。

       另外,还发现GRADLE_USER_HOME的作用只是指定gradle缓存(caches)依赖包的位置,即使不配置为maven本地仓库路径,只要满足以上条件依然会使用maven仓库中的依赖包。而且缓存在本地maven仓库目录下的依赖maven并不一定能够使用(我没测试过),因为二者的目录结构是不同的。

    四、配置使用本地maven仓库中存在的依赖包

     1.工程中将mavenLocal()配置在第一位

    repositories {
        mavenLocal()//最新使用本地仓库
        maven { url 'http://maven.aliyun.com/nexus/content/repositories/central/'}//接着使用阿里云
        mavenCentral()//最后使用中心仓库
    }

    2.配置gradle能够查找到maven本地仓库的条件

        由于gradle默认会按以下顺序去查找本地的仓库:USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository(settings.xml文件中必须正确指定了本地maven仓库,USER_HOME为用户目录),可做如下配置方法:

        方法1:在用目录下创建.m2目录,并将settings.xml文件放入到目录中,然后重启idea刷新gradle

        方法2:不创建.m2目录,但配置环境变量M2_HOME=maven安装目录(我的为:M2_HOME=C:\dev\apache-maven-3.0.5),然后重启idea刷新gradle

       方法3:不创建.m2目录,也不配置环境变量M2_HOME,直接将USER_HOME/.m2/repository做本地maven仓库

    五、结语

       好吧,其实我还是希望gradle能完全的复用本地maven仓库,就是不知道有没有这样的配置。如果有,请路过的大神留下评论,指导指导去怎么配置。

    展开全文
  • 史上最详细的maven仓库详解

    千次阅读 多人点赞 2020-09-15 18:45:05
    maven仓库类型 本地仓库 远程仓库 中央仓库 私服 其他公共库 中央仓库 maven社区提供的仓库,其中包含了大量常用的库。 中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,145
精华内容 58,058
关键字:

maven仓库