You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SBT迁移至AWS CodeArtifact后依赖解析过慢及中介消息问题

问题解决:Scala-SBT迁移至AWS CodeArtifact后的编译速度与Coursier启用问题

一、强制启用Coursier并切换缓存目录

命令行参数-Dsbt.ivy=false -Dsbt.coursier=true可能因sbt版本或全局配置覆盖失效,可通过以下方式修复:

  • 在项目根目录创建.sbtopts文件,写入:
    -Dsbt.coursier=true
    -Dsbt.ivy.home=${HOME}/.cache/coursier/v1
    
    直接指定Coursier专属缓存目录,替代默认的~/.ivy2,同时强制启用Coursier。
  • 检查项目配置:若build.sbt中存在dependencyResolution := IvyDependencyResolution显式配置,删除该行——sbt 1.3+默认集成Coursier,自定义该配置会强制回退到Ivy。
  • 执行sbt clean cache cleanFiles清除旧缓存后重新编译。

二、消除dependency descriptor has been mediated日志

该日志源于sbt的依赖调解机制,AWS CodeArtifact返回的元数据更详细,导致多版本io.netty的冲突调解频繁触发。解决方式:

  • 降低日志级别:启动sbt时添加参数-Dsbt.log.level=warn,或在build.sbt中全局设置:
    ThisBuild / logLevel := Level.Warn
    
    过滤掉调试级别的调解日志。
  • 锁定io.netty版本:在build.sbt中显式指定统一的netty版本,避免依赖冲突触发调解:
    ThisBuild / dependencyOverrides ++= Seq(
      "io.netty" % "netty-all" % "4.1.94.Final", // 替换为项目适配的稳定版本
      "io.netty" % "netty-handler" % "4.1.94.Final",
      "io.netty" % "netty-codec-http" % "4.1.94.Final"
    )
    

三、优化AWS CodeArtifact依赖解析速度

  • 开启并行解析:在.sbtopts中添加参数提升并行下载效率:
    -Dsbt.coursier.parallel=true
    -Dsbt.coursier.maxParallel=10
    
  • 内网访问优化(AWS环境内构建):配置AWS CodeArtifact的VPC端点,通过内网访问仓库,规避公网延迟。
  • 保留本地缓存:确保Coursier缓存目录(如~/.cache/coursier)不被频繁清理,减少重复下载。
  • 精简仓库配置:移除build.sbt中旧的JFrog仓库地址,仅保留必要的AWS CodeArtifact仓库,减少解析时的仓库遍历次数。

内容的提问来源于stack exchange,提问作者Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:35:16