文章目录

    • 1. 基础优化
    • 2. 镜像源优化(国内推荐)
    • 3. 插件仓库优化
    • 4. 并行构建提升 30%-80%
    • 5. 下载可靠性优化
    • 6. CI/CD 环境优化
    • 7. 进阶:依赖锁定与预下载
    • 8. 实现效果

Maven settings.xml 终极优化指南,重点是:构建速度提升、依赖下载快、镜像源高效、插件管理智能、并行构建合理。

1. 基础优化

本地仓库配置

<settings><!-- 本地仓库位置,建议放在 SSD 或 NVMe 磁盘 --><localRepository>/data/maven/repository</localRepository>
  • 确保本地仓库在高速磁盘(如 SSD/NVMe),避免频繁 IO 瓶颈。

  • 如果用 CI/CD,推荐在缓存目录挂载(如 GitLab Runner 的缓存,Jenkins 的共享 volume)。

2. 镜像源优化(国内推荐)

<mirrors><!-- 阿里云 Maven 中央库 --><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><url>https://maven.aliyun.com/repository/public</url></mirror><!-- 华为云 --><mirror><id>huaweicloud</id><mirrorOf>*</mirrorOf><url>https://repo.huaweicloud.com/repository/maven/</url></mirror><!-- 中央库备用 --><mirror><id>central</id><mirrorOf>*</mirrorOf><url>https://repo.maven.apache.org/maven2/</url></mirror>
</mirrors>
  • 推荐多配几个源,Maven 会按顺序尝试,减少单点故障。

  • 对内网环境,可以搭建 Nexus3/Artifactory/Harbor-proxy 作为统一代理仓库。

3. 插件仓库优化

<pluginGroups><pluginGroup>org.apache.maven.plugins</pluginGroup><pluginGroup>org.codehaus.mojo</pluginGroup>
</pluginGroups><profiles><profile><id>default-profile</id><repositories><repository><id>central</id><url>https://repo.maven.apache.org/maven2</url></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>https://repo.maven.apache.org/maven2</url></pluginRepository></pluginRepositories></profile>
</profiles>
  • 避免插件解析失败导致的构建停顿。

  • 插件仓库也需要镜像优化,不然会卡在 Downloading plugin …。

4. 并行构建提升 30%-80%

在 settings.xml 中加:

<profiles><profile><id>parallel-build</id><activation><activeByDefault>true</activeByDefault></activation><properties><!-- 并行构建:每核 1-2 线程 --><maven.build.threadCount>4</maven.build.threadCount><maven.build.parallel>true</maven.build.parallel></properties></profile>
</profiles>

或者命令行:

mvn -T 1C clean install
  • 1C = 每核一个线程

  • 1.5C = 每核 1.5 个线程,推荐在 CI/CD 构建机

5. 下载可靠性优化

<settings><profiles><profile><id>download-optimizations</id><activation><activeByDefault>true</activeByDefault></activation><properties><!-- 重试下载 --><maven.wagon.http.retryHandler.count>5</maven.wagon.http.retryHandler.count><!-- 连接超时 --><maven.wagon.http.connectionTimeout>30000</maven.wagon.http.connectionTimeout><!-- 读超时 --><maven.wagon.http.readTimeout>60000</maven.wagon.http.readTimeout></properties></profile></profiles>
</settings>
  • 避免网络抖动导致的构建失败。

6. CI/CD 环境优化

依赖缓存:在 Jenkins/GitLab CI 用 cache/volume 挂载本地仓库目录。

分层 Docker 镜像:

dockerfile

FROM maven:3.9.9-eclipse-temurin-17 AS build
COPY settings.xml /root/.m2/settings.xml
COPY pom.xml .
RUN mvn dependency:go-offline -B
COPY src ./src
RUN mvn package -DskipTests

这样能最大化缓存依赖,构建时间能减少 50%+。

7. 进阶:依赖锁定与预下载

  • 依赖锁定:使用 maven-dependency-plugin 生成依赖清单,减少浮动下载。

  • 预下载依赖:在开发机/CI 构建机定时执行:

mvn dependency:go-offline -B

保证构建时本地已有依赖。

8. 实现效果

  • 构建速度提升 2~5 倍(SSD、本地代理仓库、并行构建)。

  • 网络失败率显著降低(多镜像源 + 重试机制)。

  • 团队环境一致性提升(代理仓库 + 依赖锁定)。

附录;最优setting.xml模板

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/settings-1.0.0.xsd"><!-- 本地仓库目录 (SSD路径最佳,可减少IO瓶颈) --><localRepository>/opt/maven/repo</localRepository><!-- 并行下载优化 (在 MAVEN_OPTS 中设置更优效果) --><!-- export MAVEN_OPTS="-Dmaven.artifact.threads=10 -Dmaven.wagon.httpconnectionManager.ttl=25 -Dmaven.wagon.http.retryHandler.count=3" --><mirrors><!-- 阿里云镜像 --><mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>Aliyun Central Mirror</name><url>https://maven.aliyun.com/repository/public</url></mirror><!-- 华为云镜像 --><mirror><id>huaweicloud</id><mirrorOf>central</mirrorOf><name>Huawei Cloud Maven</name><url>https://repo.huaweicloud.com/repository/maven/</url></mirror><!-- Apache Maven 官方中央仓库备份 --><mirror><id>maven-central</id><mirrorOf>central</mirrorOf><name>Maven Central</name><url>https://repo1.maven.org/maven2/</url></mirror><!-- 企业 Nexus 私服 (如有) --><mirror><id>nexus-private</id><mirrorOf>*</mirrorOf><name>Enterprise Nexus</name><url>http://nexus.mycompany.com/repository/maven-public/</url></mirror></mirrors><profiles><profile><id>default-profile</id><activation><activeByDefault>true</activeByDefault></activation><repositories><repository><id>central</id><url>https://repo1.maven.org/maven2/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository><repository><id>aliyun-public</id><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>https://repo1.maven.org/maven2/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></profile></profiles><!-- 身份认证 (企业 Nexus/Artifactory 私服) --><servers><server><id>nexus-private</id><username>devops</username><password>${env.NEXUS_PASS}</password></server></servers></settings>
  • 配合优化要点

    • 本地仓库放到 SSD
<localRepository>/opt/maven/repo</localRepository>

读写速度快,提升 20~30% 构建速度。

  • 并行下载
    • 在环境变量 MAVEN_OPTS 里设置:
export MAVEN_OPTS="-Dmaven.artifact.threads=10 -Dmaven.wagon.http.retryHandler.count=3 -Dmaven.wagon.httpconnectionManager.ttl=25"

多线程下载依赖,速度提升显著(10-15倍)。

  • 私服 Nexus/Artifactory
    内网代理外部依赖,团队共享构建缓存,避免重复下载。

  • 快照依赖优化
    -nsu 参数跳过 SNAPSHOT 检查,减少网络请求:

mvn clean install -T 4C -nsu

-T 4C 表示 按 CPU 核心数 4 倍开线程。

在这里插入图片描述


“人的一生会经历很多痛苦,但回头想想,都是传奇”。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94833.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94833.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/94833.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RCC_APB2PeriphClockCmd

RCC_APB2PeriphClockCmd 函数在STM32的标准外设库中扮演着“电源开关”的角色。要理解这个函数&#xff0c;我们需要明白STM32微控制器的几个关键概念&#xff1a;1. 外设时钟与低功耗设计STM32内部有非常多的外设&#xff0c;如GPIO&#xff08;A, B, C...D&#xff09;、USAR…

用大语言模型实现语音到语音翻译的新方法:Scheduled Interleaved Speech-Text Training

用大语言模型实现语音到语音翻译的新方法:Scheduled Interleaved Speech-Text Training 在人工智能领域,语音到语音翻译(Speech-to-Speech Translation, S2ST)一直是极具挑战性的任务。传统的做法是将语音识别、文本翻译和语音合成三个步骤串联起来,而近年来,端到端的S2…

LLM学习:langchain架构——模型IO

1、什么是模型IO模型 I/O&#xff08;Model I/O&#xff09; 是 LangChain 框架中最核心的模块之一&#xff0c;负责处理与语言模型&#xff08;LLM&#xff09;交互的输入构建、模型调用和输出解析全流程。它主要分为三个模块&#xff1a;Prompts&#xff08;输入构建&#xf…

Windows系统下python新一代三方库管理工具uv及VSCode配置

python新一代三方库管理工具uv uv是什么&#xff1f; uv是用RUST语言写的一个python三方库和项目管理工具&#xff0c;详见官网&#xff08;uv&#xff09;。 uv的安装 官网上提供了两种安装方式&#xff0c;第一种需要在PS终端里运行一下命令进行安装&#xff1a; powersh…

Node.js 多版本管理工具 nvm 的安装与使用教程(含镜像加速与常见坑)

适用人群&#xff1a;前端/后端/全栈开发者&#xff0c;Mac/Linux/Windows&#xff08;nvm-windows&#xff09;用户&#xff1b;需要在多项目间快速切换 Node 版本、或在国内网络环境下稳定安装 Node。一、为什么要用 nvm&#xff1f;一机多版本&#xff1a;不同项目依赖不同 …

Unity Shader unity文档学习笔记(二十一):几种草体的实现方式(透明度剔除,GPU Instaning, 曲面细分+几何着色器实现)

1.透明度剔除&#xff08;性能较差&#xff0c;不同颜色时需要不同材质会导致多个dc&#xff09; clip(_Color.a - _Cutoff); 传入值为0时 剔除 类似的草体效果&#xff1a; 2.GPU Instaning(可以自定义一次性合批最多1023个&#xff0c;能够传递颜色值等等&#xff08;做草…

UX 设计入门终章:让洞察落地!用用户流程图、IA 和旅程图,设计用户与产品的互动故事

欢迎来到本系列课程的最后一课。 如果你把之前的学习比作是绘制一份建筑蓝图&#xff0c;那么今天&#xff0c;你将根据自己收集到的所有用户数据&#xff0c;描绘出空间布局&#xff08;用户流程图&#xff09;、理清结构关系&#xff08;信息架构&#xff09;&#xff0c;并最…

【RAG知识库实践】向量数据库VectorDB

一、概述 1.1 什么是向量库 向量数据库是一种专门为存储、索引和查询高维向量数据而优化的数据库系统。与传统的关系型数据库不同,向量数据库将数据映射到向量空间中,使得数据的相似性计算、聚类、分类和检索变得更加高效和精确 向量数据库一般包括以下几个部分:索引、查询…

EasyExcel 3.x 导出动态表头,动态sheet页

动态导出sheet页Overridepublic void exportAnswerListV1(HttpServletResponse response, SmtSurveyUserAnswerRecord smtSurveyUserAnswerRecord) {// 1. 准备问卷数据String formType smtSurveyUserAnswerRecord.getFormType();if (ObjectUtil.isEmpty(formType)) {throw ne…

重学JS-004 --- JavaScript算法与数据结构(四)JavaScript 表单验证

文章目录HTMLlabel 属性input 属性button 属性fieldset 属性select 属性option 属性div 属性scriptgetElementByIdquerySelectorAllnull循环模版文字函数事件监听器regex举例StringMathArrayHTML HTML 属性应该用双引号引起来。 label 属性 for“” input 属性 id“” typ…

本地搭建 Redis/MySQL 并配置国内镜像加速(Docker/原生安装 | macOS/Linux/Windows)

适用人群&#xff1a;前端/后端/数据/测试工程师&#xff1b;需要在单机上快速搭建 Redis 与 MySQL 的开发环境&#xff1b;同时在国内网络环境下加速下载&#xff08;容器镜像、系统包仓库&#xff09;。文章结构&#xff1a;一图流 → TL;DR → Docker 方式 → 原生安装&…

SynClub-百度在海外推出的AI社交产品

本文转载自&#xff1a;SynClub-百度在海外推出的AI社交产品 - Hello123工具导航 ** 一、&#x1f916; SynClub 是什么&#xff1f; SynClub 是百度出海的 AI 社交产品&#xff0c;主打 "打造专属 AI 朋友" 的创新概念&#xff0c;让你在虚拟世界拥有真正懂你的贴…

Easy Rules规则引擎:轻量级Java规则处理实践指南

引言:业务规则与代码解耦的艺术 在现代软件开发中,业务规则频繁变更与核心逻辑稳定性之间的矛盾日益突出。传统硬编码的if-else语句在面对复杂业务场景时会导致: 代码臃肿:成百上千的条件分支难以维护 耦合度高:业务逻辑与系统架构深度绑定 变更成本高:微小规则调整需要…

机器人 - 无人机基础(5) - 飞控中的传感器

目录 一、加速度计 1.1 加速度计原理 1.2 加速度计校准 1.2.1 误差模型 1.2.2 关于MPU6050校准方式 与 代码思路 二、陀螺仪 2.1 陀螺仪原理 2.1.1 科里奥利力 2.1.2 陀螺仪原理 2.2 陀螺仪校准 三、加速度计与陀螺仪滤波部分 四、磁力计 4.1 磁力计原理 4.2 磁力…

PHP - 线程安全 - 疑问与答案

线程安全问题&#xff08;多线程环境需加锁&#xff09; 怎么理解 php有线程安全问题吗要理解 PHP 中的线程安全问题&#xff0c;需要结合 PHP 的运行模式和线程安全的本质来分析&#xff1a;1. 线程安全的本质线程安全问题的核心是&#xff1a;当多个线程同时访问共享资源&…

使用脚本进行监测以nginx状态页为例

1、首先打开nginx的状态页 location /nginx_status {stub_status on;}2、进行访问测试 curl http://127.0.0.1/nginx_statusActive connections: 1 server accepts handled requests1 1 1 Reading: 0 Writing: 1 Waiting: 03、在客户端编写脚本进行数据采集 编写脚本方便采集不…

prettier、eslint、stylelint在项目中使用

prettier 1&#xff09;vscode中使用 a. 安装插件(Prettier)安装成功后&#xff0c;在你打开支持的文件时&#xff0c;下方文件信息状态栏会有prettier标致&#xff1a;双击它或者直接在输出命令窗口那里查看prettier的日志信息&#xff1a;从日志这里可以看出&#xff0c;它是…

【C++】类对象内存布局与大小计算

1. 计算类对象的大小类实例化的对象中只存储成员变量&#xff0c;不存储成员函数&#xff0c;函数要用是通过 this 指针拿的。因为一个类可以实例化出 N 个对象&#xff0c;每个对象的成员变量都可以存储不同的值&#xff0c;但是调用的函数却是同一个。如果每个对象都成员函数…

容易忽视的TOS无线USB助手配网和接入USB使用: PC和TOS-WLink需要IP畅通,

引言&#xff1a;我们常常把重心放在了TOS-WLink的加入路由器&#xff0c;获取IP&#xff1b;常常忽视了其实是要求PC和TOS-WLink需要IP畅通TOS无线USB助手首次蓝牙配网, 无线接入USB设备到电脑, 分为是两个过程&#xff1a;1, 蓝牙连接TOS-WLink&#xff0c;如果配置的WIF…

学习Python中Selenium模块的基本用法(7:元素操作-1)

定位网页元素后&#xff0c;Selenium模块支持点击、发送文本或按键、清除内容等操作。本文以百度网站为例学习并测试这几类操作的基本用法。首先是发送文本或按键&#xff0c;主要用到send_keys函数&#xff0c;如果是发送文本&#xff0c;则直接将文本内容作为函数入参即可&am…