maven仓库分类

本地仓库、远程仓库。远程仓库又有私服、中央仓库、其它公共库。中央仓库是maven自带的核心仓库。

仓库配置
远程仓库可以配置多个,超级pom中定义的中央仓库

<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>

以下是jboss远程仓库配置

<repositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<layout>default</layout>
</repository>
</repositories>

layout标签:使用default仓库布局,仓库布局就是构件在仓库中的存储路径,默认的构件仓库路径如com\juvenxu\mvnbook\hello-world\1.0-SNAPSHOT。maven2、maven3的布局一样,maven1和他们不一样。

<snapshots><enabled>false</enabled></snapshots>:不从该仓库下载快照版本,即不稳定版本SNAPSHOT。
updatePolicy 从远程仓库检查更新的频率,默认值为daily,每天更新一次;never,从不检查;always,每次构建都检查;interval:X,每间隔X分钟检查一次更新。X为任意整数。
checksumPolicy 忽略

maven的setting.xml不支持直接配置repositories和pluginRepositories。所幸maven还提供了profile机制,能让用户将仓库配置放到setting.xml 中的profile里,如下:

<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<layout>default</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<layout>default</layout>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>

当执行maven构建的时候,激活的profile会将仓库配置应用到项目中去。

maven会区别对待依赖的远程仓库与插件远程仓库

插件的仓库使用pluginRepositories来配置,除了pluginRepositories和pluginRepositorie标签不同之外,其余所有子元素和配置依赖仓库完全一样。

私服不是maven的核心概念,它是一种衍生出来的特殊的maven仓库。
maven官方区别依赖仓库和插件仓库,虽然id、url所有的元素值都相同;nexus的 maven-central 代理仓库不区别依赖仓库和插件仓库,从这里即可以下载普通依赖,也可以下载maven插件。

配置镜像
settings文件

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

该mirrorOf的值为central,表示该配置为中央仓库镜像,任何对于中央仓库的请求都会转至此镜像。

另外三个元素与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称及地址。

镜像一个更常见的用法是结合私服。由私服代理外部的公共仓库,本地配置镜像至私服如下。
<mirror>
  <id>maven-nexus</id>
  <name>this is my nexus</name>
  <url>http://localhost:8081/repository/maven-nexus/</url>
  <mirrorOf>*</mirrorOf>
</mirror>
<mirrorOf>*</mirrorOf> 表示该配置是所有Maven仓库的镜像,对于所有远程仓库的请求都会被转移到http://
<mirrorOf>external:*</mirrorOf> 匹配所有远程仓库,除localhost、file://协议。
<mirrorOf>repo1,repo2</mirrorOf> 匹配仓库1和仓库2
<mirrorOf>*,!repo1</mirrorOf> 匹配所有远程仓库,repo1除外。
由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,maven将无法访问被镜像仓库,无法下载构件。

部署构件至远程仓库
编辑pom文件

<distributionManagement>
<repository>
<id></id>
<name></name>
<url></url>
</repository>
<snapshotRepository>
<id></id>
<name></name>
<url></url>
</snapshotRepository>
</distributionManagement>

repository表示发布版本构件的仓库,后者表示快照版本构件的仓库。

配置后,在命令行运行mvn clear deploy,如果当前项目是快照版本,就部署到快照版本仓库,反之部署到发布版本仓库。

私服、远程仓库、镜像如果需要认证,配置方法都一样。基于仓库或镜像id配置即可。
认证信息必须配置在settings.xml文件中

<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>

这里的id必须和需要认证的仓库或镜像的id一样。

maven 远程仓库、私服及镜像配置的更多相关文章

  1. (十一)Maven远程仓库的各种配置

    1.远程仓库的配置 在平时的开发中,我们往往不会使用默认的中央仓库,默认的中央仓库访问的速度比较慢,访问的人或许很多,有时候也无法满足我们项目的需求,可能项目需要的某些构件中央仓库中是没有的,而在其他 ...

  2. Maven远程仓库的各种配置

    1.远程仓库的配置 在平时的开发中,我们往往不会使用默认的中央仓库,默认的中央仓库访问的速度比较慢,访问的人或许很多,有时候也无法满足我们项目的需求,可能项目需要的某些构件中央仓库中是没有的,而在其他 ...

  3. Maven 教程(11)— Maven远程仓库的各种配置

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79545408 1.远程仓库的配置 在平时的开发中,我们往往不会使用默认的中央仓库 ...

  4. Maven项目使用Nexus作为远程仓库的settings.xml配置

    Maven项目使用Nexus作为远程仓库的settings.xml配置(转) 在自己电脑C:\Users\hanmm\.m2\下的setting.xml. 1.服务器配置 <server> ...

  5. IntelliJ IDEA配置maven远程仓库

    最近在搭建springMVC+mybatis的框架,在添加jar包的时候出问题了.以前都是直接将jar包放到lib里面即可,但是看到现在用maven的比较多,就去配置maven.然后发现,在添加某个版 ...

  6. Maven远程仓库:pom依赖以及jar包下载

    Maven远程仓库:pom依赖xml配置以及jar包下载: 地址1: http://mvnrepository.com/ 地址2: http://172.16.163.52:8081/nexus/#w ...

  7. Maven远程仓库的配置

    在很多情况下,默认的中央仓库无法满足项目的需求,可能项目需要的构件存在于另外一个远程仓库中,如JBoss Maven仓库.这时,可以在POM中配置该仓库,见代码如下: <!-- 远程仓库的配置 ...

  8. Maven远程仓库的认证

    大部分远程仓库无须认证就可以访问,但有时处于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库.为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名及密码. 这时,为了能让Maven访问仓库 ...

  9. Maven远程仓库

    根据Apache Maven声明:"只有当在本地和中心仓库找不到所需的依赖文件,才会到远程仓库去下载". 当在Maven里声明了一个本地和中心仓库都没有的库文件时,Maven会停止 ...

随机推荐

  1. 详解Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下:     join():    连接字符串数组.将字符串.元组.列表中的元素以指定的 ...

  2. 2018春招-今日头条笔试题-第四题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...

  3. php 实现繁体转简体代码效率对比

    第一份代码: <?php Header("Content-Type:text/html;charset=utf-8"); function microtime_float() ...

  4. seq2seq attention

    1.seq2seq:分为encoder和decoder a.在decoder中,第一时刻输入的是上encoder最后一时刻的状态,如果用了双向的rnn,那么一般使用逆序的最后一个时刻的输出(网上说实验 ...

  5. 高级网络功能(Docker支持的网络定制配置)

    网络的高级知识,包括网络的启动和配置参数.DNS的使用配置.容器访问和端口映射的相关实现. 在一些具体场景中,Docker支持的网络定制配置,通过Linux命令来调整.补充.甚至替换Docker默认的 ...

  6. lucene源码分析(2)读取过程实例

    1.官方提供的代码demo Analyzer analyzer = new StandardAnalyzer(); // Store the index in memory: Directory di ...

  7. Vue双向绑定的关键:Object.defineProperty()

    这个方法了不起啊.vue.js和avalon.js 都是通过它实现双向绑定的.而且Object.observe也被草案发起人撤回了.所以defineProperty更有必要了解一下了. 先上几行代码看 ...

  8. 【WePY小程序框架实战二】-页面结构

    [WePY小程序框架实战一]-创建项目 项目结构 |-- dist |-- node_modules |-- src | |-- components |-- a.wpy |-- b.wpy |-- ...

  9. JBoss 实战(1)

    转自:https://www.cnblogs.com/aiwz/p/6154594.html JBOSS的诞生 1998年,在硅谷SUN公司的SAP实验室,一个年轻人正坐在电脑前面思考,然后写着什么东 ...

  10. dev的控件放在没有runat="server"的标签中,回调出现的问题

    dev的控件放在没有runat="server"的标签中,第一次回调是会刷新页面, 有runat="server"时不会刷新页面