一、Maven仓库的分类
Maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
Maven中的仓库模型:
- 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找,默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows 用户目录。
- 远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。
- 中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。
二、Maven本地仓库的配置
Maven默认在/.m2/repository/下存储依赖和构件,那么我们是不是可以改变自定义这个位置?答案是肯定的,settings.xml 该文件是maven的配置文件,我们可以在该文件中通过标签<localRepository></localRepository>来配置本地仓库的位置。
打开settings.xml文件,查找到<localRepository>标签,修改内容即可,这里是创建为D盘下的路径,可以根据自己的情况修改。
三、全局settings与用户settings
maven 仓库地址、私服等配置信息需要在 setting.xml 文件中配置,分为全局配置和用户配置。在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project项目,它作为 maven 的全局配置。如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在:${user.dir}/.m2/settings.xml 目录中,${user.dir} 指windows 中的用户目录。maven会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。
四、settings.xml配置文件
当我们下载安装好Maven时,在其安装目录的conf下存在一个settings.xml的配置文件,这是一个全局的maven配置文件,为了不影响这台计算机上的其他用户,一般选择将该文件copy到 ~/.m2/下边,作为一个用户层面的配置文件。
settings.xml文件中主要包含以下的元素:
- localRepository:本地仓库的目录。默认是用户目录下面的.m2/repository目录。
- interactiveMode:表示是否使用交互模式,默认是true;如果设为false,那么当Maven需要用户进行输入的时候,它会使用一个默认值。
- offline:表示是否离线,默认是false。这个属性表示在Maven进行项目编译和部署等操作时是否允许Maven进行联网来下载所需要的信息。
- mirrors:定义一系列的远程仓库的镜像,用于缓解远程仓库的压力。
- profiles:用于指定一系列的profile。
- activeProfiles:指定当前正在活跃的profile。
- servers:表示当需要连接到一个远程服务器的时候需要使用到的验证方式。
- <mirrors></mirrors>:镜像,如果一个仓库可以提供另外一个仓库存储的所有内容,那么就可以前者是后者的一个镜像。使用<url></url>中配置的http://nexus.d.xxx.net/nexus/content/groups/public来代理所有的远程仓库,其实这个代理一般情况下是内网搭建的私服,在局域网内,加快访问速度等作用。
- profiles: 可以配置构件和插件的远程仓库,并且可以通过<id>来配置多个profile,最后通过<activeProfiles>来指定当前处于活跃状态(即有效的)的profile配置是哪一个
Being away from home, we have nothing but a desire to make a figure