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>

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

相关推荐
承渊政道18 分钟前
飞算Java炫技赛:Java×Unity数字孪生园区平台的从零落地记录
java·开发语言·unity·技术分享·vibe coding·飞算javaai·飞算java ai炫技赛
wdfk_prog6 小时前
嵌入式面试真题第 10 题:高优化等级下共享状态可见性、内存模型与系统级同步设计
java·linux·开发语言·面试·职场和发展·架构·c
卓怡学长6 小时前
w255基于springboot仓库管理系统
java·数据库·spring boot·spring·intellij-idea
闻道且行之9 小时前
TurboOCR:基于PP-OCRv6的极速Windows离线OCR工具,深度解析3.4GB依赖背后的技术架构
c++·人工智能·python·qt·机器学习·ocr
这个DBA有点耶9 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
许彰午10 小时前
95_Python内存管理与垃圾回收
开发语言·python
csdn2015_10 小时前
springboot读取配置的方法
java·spring boot·spring
骄阳如火10 小时前
Python 性能深度剖析:从“被诟病的慢”到“Rust 重塑”的拐点
python
AOwhisky10 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm
满怀冰雪11 小时前
03-第一个 Paddle 程序:Tensor 创建、计算与设备管理
人工智能·python·paddle