Maven从入门到精通(三)

一、Settings 配置

settings.xml 用来配置 maven 项目中的各种参数文件,包括本地仓库、远程仓库、私服、认证等信息。

全局 settings、用户 setting、pom 的区别:

  • 全局 settings.xml 是 maven 的全局配置文件,一般位于 ${maven.home}/conf/settings.xml,即 maven 文件夹下的 conf 中。
  • 用户 setting 是 maven 的用户配置文件,一般位于 ${user.home}/.m2/settings.xml,即每位用户都有一份配置文件。
  • pom.xml 文件是项目配置文件,一般位于项目根目录下或子目录下。

配置优先级从高到低:pom.xml > 本地 settings > 全局 settings。如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。

二、maven仓库

如前言所述,我们依赖的外部服务是需要有地方进行存储的,而存储的地方就称之为仓库。其中仓库又分为本地仓库、中央仓库、镜像仓库、私服。

1、本地仓库

当项目在本地编译或运行时,直接加载本地的依赖服务无疑是最快的。默认情况下,不管在 Window 还是 Linux 下,每个用户在自己用户目录下都有一个路径名为.m2/repository/ 的仓库目录。

而原始的本地仓库是为空的,因此 maven 需要知道一个网络上的仓库,在本地仓库不存在时前往下载网络上的仓库,也就是远程仓库。

2、私服

一般来说中央仓库或者镜像仓库都能满足我们的需求,但是当我们在公司内合作开发代码时,可能因为系统保密性原因,有一些其他同事开发的外部依赖只希望能够被本公司的人使用,而如果上传到镜像仓库则保密性就不复存在了。因此私服最主要的功能时存储一些公司内部不希望被公开的依赖服务。

3、镜像仓库

总结来说,镜像仓库就是将国外的中心仓库复制一份到国内,这样一来下载速度以及访问速度都将很快。

4、中央仓库

当 maven 未配置时,会默认请求 maven 的中央仓库,中央仓库包含了这个世界上绝大多数流行的开源 java 构件,以及源码、作者信息、SCM, 信息、许可证信息等,每个月这里都会接受全世界 java 程序员大概 1 亿次的访问,它对全世界 java 开发者的贡献由此可见一斑。

但是由于最常见的例如网络原因等,国外的中央仓库使用起来并不顺利,因此就有了下载地址为国内的中央仓库,也就是镜像仓库。

三、settings 配置详解

主要配置元素‌:包括本地仓库(localRepository)、镜像(mirrors)、服务器(servers)、代理(proxies)、配置文件(profiles)等‌。

1、本地仓库地址:
<localRepository>/path/to/local/repo</localRepository>

指定Maven用来存储下载的插件和依赖的本地仓库位置。

2、远程仓库配置:
<mirrors>
  <mirror>
    <id>mirrorId</id>
    <mirrorOf>repositoryId</mirrorOf>
    <url>http://my.repository.com/repo/path</url>
  </mirror>
</mirrors>

配置镜像仓库,用于代理远程仓库,提高下载速度或稳定性。

3、私服认证信息:
<servers>
  <server>
    <id>serverId</id>
    <username>your_username</username>
    <password>your_password</password>
  </server>
</servers>

配置用于认证的服务器信息,比如私服的用户名和密码。

4、profile激活:
<profiles>
  <profile>
    <id>profileId</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <repositories>
      <!-- 仓库配置 -->
    </repositories>
    <pluginRepositories>
      <!-- 插件仓库配置 -->
    </pluginRepositories>
  </profile>
</profiles>

配置profile,根据条件激活相关配置,比如激活时机或环境变量。

5、代理服务器配置:
<proxies>
  <proxy>
    <id>proxyId</id>
    <active>true</active>
    <protocol>http</protocol>
    <host>proxy.mycompany.com</host>
    <port>8080</port>
    <username>proxyuser</username>
    <password>somepassword</password>
    <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
  </proxy>
</proxies>

如果你处于需要通过代理服务器访问互联网的环境下,可以配置代理服务器的信息。

相关推荐
项目笔记与工具库2 分钟前
Java并发工具类详解:CountDownLatch与CyclicBarrier
java·开发语言·python
亿牛云爬虫专家38 分钟前
如何通过subprocess在数据采集中执行外部命令 —以微博为例
爬虫·python·数据采集·多线程·代理ip·subprocess·微博
技术无疆38 分钟前
ButterKnife:Android视图绑定的简化专家
android·java·android studio·android-studio·androidx·butterknife·视图绑定
ZachOn1y1 小时前
Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾收集器
java·jvm·后端·java-ee·团队开发·个人开发
敲代码不忘补水1 小时前
Python Pickle 与 JSON 序列化详解:存储、反序列化与对比
开发语言·python·json
攸攸太上1 小时前
Java通配符的作用
java·学习·通配符
齐 飞1 小时前
使用jackson将xml和对象、List相互转换
xml·java·spring boot·后端·list
liwulin05061 小时前
java-在ANTLR中BaseListner的方法和词法规则的关系0.5.0
java·开发语言
SofterICer1 小时前
PE-PINCodes 规则
java
归去来兮★2 小时前
c++面向对象
java·开发语言·c++