1:本地资源库、中央存储库、远程存储库 

  

1.1   本地资源库

  当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖需要下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – http://repo1.maven.org/maven2 查找,然后下载到本地仓库。

  Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件),这些文件被Maven下载到本地文件夹。当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。默认情况下,Maven的本地资源库默认为 .m2 目录文件夹:Windows – C:\Documents and Settings\用户名\.m2

  修改从Maven中心仓库下载到本地的jar包的默认存储位置:打开settings.xm(包含仓库地址、镜像、插件、代理等配置)l文件,在conf文件夹下面。

加入<localRepository>D:\maven\mvnRespo</localRepository>这句代码;其中中间填写自己想要保存的本地库位置路径。例如:<localRepository>E:/repository</localRepository>

<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
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
-->
<localRepository>D:\maven\mvnRespo</localRepository>

1.2 中央存储库

  (1)查看中央资源库位置,从解压的目录下面进入\lib文件夹,里面有好多jar包,解压maven-model-builder-3.2.5.jar.在maven-model-builder-3.2.5\org\apache\maven\model下面的pom-4.0.0.xml文件里面打开,可找到下面代码:其中https://repo.maven.apache.org/maven2为中央仓库地址。

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

在使用中有可能会更换中央资源库位置:有两种方式:

  • 在pom.xml放入下面代码,将ID,name,URL改成自己需要的。<pluginRepositories>,这是配置Maven从什么地方下载插件构件。
<repositories>
<repository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name >
<url>http://maven.net.cn/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name>
<url>http://maven.net.cn/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
  • 在setting.xml中进行配置,如果好多项目都需要在同一新仓库下载,每个项目的pom.xml下进行改变,重复工作太多,因此在根目录下conf文件夹下面的setting.xml进行改变。

打开setting.xml文件,找到 <profiles>属性,然后将里面代码进行替换。提供了一种用户全局范围的仓库配置。

<profiles>
<profile> <id>自己填写</id>
<!-- repositories and pluginRepositories here-->
</profile>
</profiles>

     

1.3 远程存储库

  默认情况下,Maven从Maven中央仓库下载所有依赖关系。但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到。

  • 添加Java.net远程仓库的详细信息在“pom.xml”文件。
<project ...>
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
</project>
  • 添加JBoss远程仓库的详细信息在 “pom.xml” 文件中。
<project ...>
<repositories>
<repository>
<id>JBoss repository</id>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
</repositories>
</project>

2:启用代理服务器(不是非必须)

  如果你的公司正在建立一个防火墙,并使用HTTP代理服务器来阻止用户直接连接到互联网。如果您使用代理,Maven将无法下载任何依赖。为了使它工作,你必须声明在 Maven 的配置文件中设置代理服务器:settings.xml。

点击打开settings.xml文件:在conf文件夹下面

打开setting.xml文件:找到下面这段代码,然后去掉注释,将里面的服务器信息换成自己的代理服务器信息保存后即可。

 <!-- proxies
| This is a list of proxies which can be used on this machine to connect to the network.
| Unless otherwise specified (by system property or command-line switch), the first proxy
| specification in this list marked as active will be used.
|-->
<proxies>
<!-- proxy
| Specification for one proxy, to be used in connecting to the network.
|
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
-->
</proxies>

3:maven依赖库管理

  原始情况下我们是这么处理的:以log4j为例

  1. 访问 http://logging.apache.org/log4j/
  2. 下载 Log4 j的 jar 库
  3. 复制 jar 到项目类路径
  4. 手动将其放到项目的依赖

所有的管理需要一切由自己做,如果有 Log4j 版本升级,则需要重复上述步骤一次。

  在maven中的方式:你需要知道 log4j 的 Maven 坐标(在pom.xml中体现),例如:

<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>

它会自动下载 log4j 的1.2.14 版本库。如果“version”标签被忽略,当有新的版本时它会自动升级库时

  1. 当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库
  2. 所有由 Maven 管理

传统构建和maven构建对比下:可以发现当建立一个Maven的项目,pom.xml文件将被解析。eg:如果看到 log4j 的 Maven 坐标,然后 Maven 按此顺序搜索 log4j 库:

  1. 在 Maven 的本地仓库搜索 log4j ,搜索不到执行2;
  2. 在 Maven 中央存储库搜索 log4j,搜索不到执行3;
  3. 在 Maven 远程仓库搜索 log4j(如果在 pom.xml 中定义),搜索不到报错。

https://mvnrepository.com/

maven学习(2)仓库和配置的更多相关文章

  1. Maven三种仓库的配置

    转自:https://www.cnblogs.com/jack1995/p/6925879.html Maven三种仓库的配置 1 本地仓库的配置 在第一篇中我们介绍过,Maven的仓库有三类,这里不 ...

  2. Maven学习笔记—仓库

    Maven仓库 1 什么是Maven仓库 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以成为构件,而Maven通常在某个位置统一的存储所有Maven项目共享的构件,这个统一的位置就是Ma ...

  3. Maven学习之 仓库镜像

    使用仓库镜像 仓库可以声明在项目中,但有时,你可能想要使用某个仓库的镜像,而不去修改项目文件. 使用镜像的原因: 有一个同步镜像,且速度更快. 想使用你自己控制的内部仓库. 想运行repository ...

  4. maven学习--1.安装与配置

    转自 http://www.cnblogs.com/xdp-gacl/p/3498271.html 1.下载地址:http://maven.apache.org/download.cgi 2.解压缩包 ...

  5. Eclipse中Maven的本地仓库引导配置

    简单整理一下,方便理解操作. 1.本地拷贝maven文件后,打开maven中的.setting 文件: 2.配置文件: <?xml version="1.0" encodin ...

  6. Maven学习笔记—安装和配置

    Maven的安装和配置 1 在windows上安装maven 1.1 下载maven 访问maven的下载页面:http://maven.apache.org/download.cgi,选择版本下载即 ...

  7. maven 学习笔记--仓库,聚合和继承,私服搭建

    仓库 http://blog.csdn.net/wanghantong/article/details/36427433 聚合和继承 http://www.cnblogs.com/xdp-gacl/p ...

  8. 【Maven学习】Nexus OSS私服仓库的安装和配置

    背景 公司的代码依赖是通过Maven进行管理的,而Maven的私库我们使用的是Nexus,目前使用的版本是Nexus Repository Manager OSS 2.12.1. 但是由于之前我们搭建 ...

  9. 【Maven学习】远程仓库的配置

    很多情况下,默认的中央仓库无法满足项目的需求,我们可能需要配置新的远程仓库,此时我们可以这样配置: <repository> <id>java-net</id> & ...

随机推荐

  1. RabbitMQ(二):RabbitMQ高级特性

    RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.作为一名合格的开发者,有必要了解一下相关知识,RabbitMQ(一)已经入门RabbitMQ,本文介绍Rabb ...

  2. nginx连接资源管理

    本文介绍在nginx中连接资源(即ngx_connection_t)的管理与使用. 连接池的初始化 在ngx_cycle_t结构体中维护了几个和连接相关的数据,具体如下 struct ngx_cycl ...

  3. HHyperledger Fabric 之 TLS (fabric-java-sdk)使用grpcs方式访问fabric

    我在很多fabric的技术群中,很多使用javasdk连接fabric的同友,初始的时候很多都没有成功的使用TLS进行区块链交易: 是sdk不支持,还是我们没有找到解决方案? 其实不然,我这里使用的是 ...

  4. Python学习1——Python中的 split() 函数

    函数:split() Python中有split()和os.path.split()两个函数,此处简单介绍split()函数:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的 ...

  5. spring 事务隔离级别导致的bug

    事情是这样的,ios进货单有一个数量加一手,减一手的功能,每加减一次就会异步调用后台的接口,后台判断sku如果不存在就插入,存在就更新.   问题描述: 当ios发了多次请求后, 在第二次请求的时候, ...

  6. Nginx服务器安全加固tips整理

    公司各业务网站大多用到Nginx,花了点时间整理了一下Nginx服务器安全加固的各类tips. 默认配置文件和Nginx端口 /usr/local/nginx/conf/-Nginx配置文件目录,/u ...

  7. 从零开始react实战:云书签-1 react环境搭建

    总览篇:react 实战之云书签 本篇是实战系列的第一篇,主要是搭建 react 开发环境,在create-react-app的基础上加上如下功能: antd 组件库按需引入 ,支持主题定制 支持 l ...

  8. 【Android Studio】提示代码忽略大小写

    在 Preference... 中找到如下,设置 Case sensitive completion 为 None 即可,如下图: PS: 该截图是 Intellij IDEA (Android St ...

  9. Linux 文件系统相关的基本概念

    本文介绍 Linux 文件系统相关的基本概念. 硬盘的物理组成 盘片硬盘其实是由单个或多个圆形的盘片组成的,按照盘片能够容纳的数据量,分为单盘(一个硬盘里面只有一个盘片)或多盘(一个硬盘里面有多个盘片 ...

  10. golang文档、中文、学习文档

    Golang中文文档地址 http://zh-golang.appspot.com/doc/ Golang非英文文档地址: https://github.com/golang/go/wiki/NonE ...