V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wtotal
V2EX  ›  Java

如何提高 maven 打包速度?

  •  
  •   wtotal · 4 天前 · 1513 次点击
    我试了 win10 、win11 、Windows2012 ~ 2025 ( vmware 中全新安装、打满补丁、关闭自带杀毒)
    和 CentOS7
    用 jdk1.8 ,maven3.5 、maven3.9 测试了 mvn clean package 一个项目,运行第二次后速度基本都稳定了

    速度最快的是 CentOS7 ( 30s ),是速度最快的 Windows2012 ( 60s )一半时间。
    最慢的 win11(90s)

    其他 server 服务器都差不多( 90s )



    表面看,windows 系列打包时 cpu 占用率都偏低,也不知道什么原因。软件还是 os 问题。
    19 条回复    2024-12-18 21:10:16 +08:00
    Xbluer
        1
    Xbluer  
       4 天前
    mvn -T 参数设置一下试试看
    wzcloud
        2
    wzcloud  
       4 天前 via iPhone
    有 mvnd 项目,非依赖模块可以并行编译
    zhady009
        3
    zhady009  
       4 天前
    mvnd + 模块化 + 多线程
    cslive
        4
    cslive  
       4 天前
    指定多少个线程,跳过测试,使用离线模式
    ratel2018
        5
    ratel2018  
       4 天前
    对于 maven 打包这件事,首先是模块化+多线程,其次同硬件下 windows 最慢,macOS 至少速度翻倍,linux 还能再快 30%以上。
    我测试过最大的差距,windows11 下的耗时达到过 linux 下的 7 倍。另外测试过 windows7 下的速度大概能和 macOS 相当。
    采用 wsl 打包或者装 linux 虚拟机打包或者 linux 真机打包都能获得至少翻倍甚至数倍的速度。
    renfei
        6
    renfei  
       4 天前
    自建 Maven 私有仓库,仓库在本地局域网内的话,拉取速度飞快
    wtotal
        7
    wtotal  
    OP
       4 天前
    @Xbluer 测试的项目有依赖顺序, -T 有时会报错
    renfei
        8
    renfei  
       4 天前
    我自建的: https://maven.renfei.net 你们用的虽然可能不快,但我本地有景象,服务器上打包就飞快
    Aresxue
        9
    Aresxue  
       4 天前
    分本地还是线上,本地环境 3 楼的策略你能搞完绝对够用了,线上环境就要复杂的多了,maven 本身就有一些调优参数。
    wtotal
        10
    wtotal  
    OP
       4 天前
    @renfei 内网已经有了,谢谢
    wtotal
        11
    wtotal  
    OP
       4 天前
    试了 mvnd 和 mvn -T ,一点区别没有,可能我不会用。
    K1W1
        12
    K1W1  
       4 天前
    有时间迁移到 gradle ,迁移成本其实并不算高
    wxw752
        13
    wxw752  
       4 天前
    可能很多人都帮不上忙,好多年不在本地打包了,不太在意时间问题
    cutecore
        14
    cutecore  
       4 天前
    @wtotal -T 6 或者-T 2C ;加上后 75s > 30s
    unco020511
        15
    unco020511  
       4 天前
    迁移到 gradle
    viqbgrg
        16
    viqbgrg  
       4 天前   ❤️ 1
    https://stackoverflow.com/questions/6916011/how-do-i-get-windows-to-go-as-fast-as-linux-for-compiling-c

    fsutil behavior set disable8dot3 1
    fsutil behavior set disablelastaccess 1
    这些操作之后还会加快一点,但是好像还是快不过 linux,除非杀毒软件的影响还可能有文件索引之类的影响
    sam384sp4
        17
    sam384sp4  
       4 天前
    要快建议用 gradle
    night98
        18
    night98  
       3 天前
    mvn -T 1C 基本上够用了,依赖顺序如果项目结构正常是没问题的,除非说项目结构有问题,这种情况只能直接指定打包顺序来解决
    tuimaochang
        19
    tuimaochang  
       3 天前
    i7 12700h 、64g 内存的 win11 ,打 jar 包用时 12 秒
    R7-7840HS 、96g 内存的 debian12 ,打 jar 包用时 6 秒
    同事 m2 、32g 内存的 macbook ,打 jar 包用时 6 秒。
    同一个项目,事先已经把依赖下载到本地,纯打包。
    差距太大了……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2771 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:42 · PVG 21:42 · LAX 05:42 · JFK 08:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.