当前位置: 首页 > news >正文

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>

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 力扣3014.输入单词需要的最少按键次数I
  • 11、LLaMA-Factory自定义数据集微调
  • 区块链的可伸缩性以及面临的挑战
  • 3D点云目标检测数据集标注工具 保姆级教程——CVAT (附json转kitti代码)
  • Python 3 速成技巧
  • 如何编写智能合约——基于长安链的Go语言的合约开发
  • 三方共建 | 网络安全运营中心正式揭牌成立
  • Linux环境变量详解命令行参数
  • Android平台RTMP|RTSP播放器如何回调YUV或RGB数据?
  • 虚拟现实智能家居实训系统实训解决方案
  • Rust 变量基础知识
  • 如何彻底清除电脑上的数据?保护你的隐私安全
  • 阿里云服务器 篇八:图片展示和分享网站(纯静态,数据信息和展示页面分离)
  • 关于RabbitMQ消息丢失的解决方案
  • 怎么修复松下相机死机视频只有0字节(0KB)的MDT文件【实测可修复】
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Laravel5.4 Queues队列学习
  • nodejs实现webservice问题总结
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Vue组件定义
  • zookeeper系列(七)实战分布式命名服务
  • 阿里云Kubernetes容器服务上体验Knative
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 目录与文件属性:编写ls
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 如何胜任知名企业的商业数据分析师?
  • 如何实现 font-size 的响应式
  • 首页查询功能的一次实现过程
  • 我看到的前端
  • 系统认识JavaScript正则表达式
  • 线上 python http server profile 实践
  • 硬币翻转问题,区间操作
  • 用Visual Studio开发以太坊智能合约
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # Apache SeaTunnel 究竟是什么?
  • # Redis 入门到精通(七)-- redis 删除策略
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • ${ }的特别功能
  • (07)Hive——窗口函数详解
  • (12)Hive调优——count distinct去重优化
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (二)测试工具
  • (二)丶RabbitMQ的六大核心
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (一)VirtualBox安装增强功能
  • (原创)可支持最大高度的NestedScrollView