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

使用sbt-assembly构建Scala胖Jar时遇org/pantsbuild#jarjar;1.6.5资源获取失败

结合你在Windows代理环境下用IntelliJ IDEA、Scala 2.12.4、sbt 1.1.1和Babun构建胖Jar时遇到的sbt-assembly失败问题,我整理了几个针对性的排查和解决方向,你可以逐一尝试:

解决sbt-assembly代理环境下构建失败的方案

1. 统一代理配置,覆盖所有环境

你同时用了Babun终端和IntelliJ的sbt,两边代理没对齐是常见的坑,得确保所有环境都用正确的代理:

  • Babun终端配置:打开Babun,编辑~/.bashrc或~/.zshrc文件,添加代理环境变量:
    export HTTP_PROXY=http://你的代理IP:端口
    export HTTPS_PROXY=http://你的代理IP:端口
    export NO_PROXY=localhost,127.0.0.1,你的内部域名
    
    保存后执行source ~/.bashrc让配置生效。
  • sbt全局代理配置:在Windows用户目录下找到.sbt/1.0/repositories(sbt 1.1.x对应1.0版本目录),修改成带代理的仓库配置:
    [repositories]
    local
    maven-central: http://repo1.maven.org/maven2/, proxy=http://你的代理IP:端口
    bintray-sbt-plugins: http://dl.bintray.com/sbt/sbt-plugin-releases, proxy=http://你的代理IP:端口
    sonatype-releases: https://oss.sonatype.org/content/repositories/releases/, proxy=http://你的代理IP:端口
    
  • IntelliJ IDEA的sbt代理:打开Settings → Build, Execution, Deployment → Build Tools → sbt,在VM options里添加:
    -Dhttp.proxyHost=你的代理IP -Dhttp.proxyPort=端口 -Dhttps.proxyHost=你的代理IP -Dhttps.proxyPort=端口 -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.你的内部域名
    

2. 补全sbt-assembly的插件配置

你提到的project/plugins.sbt里的sonatype仓库地址没写完整,正确的配置应该是:

resolvers += Resolver.url("bintray-sbt-plugins", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
resolvers += Resolver.sonatypeRepo("releases")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

另外,sbt 1.1.1和sbt-assembly 0.14.6版本是兼容的,如果后续还是有问题,可以尝试升级到sbt-assembly 0.14.10(更适配sbt 1.x的版本)。

3. 处理依赖冲突(胖Jar构建的高频问题)

如果代理没问题,大概率是依赖合并时的冲突导致失败。在你的build.sbt里添加合并策略:

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard  // 丢弃重复的MANIFEST文件
  case PathList("META-INF", xs @ _*) => MergeStrategy.first  // 优先保留第一个找到的META-INF下的文件
  case x => MergeStrategy.first  // 其他文件都取第一个
}

如果有特定依赖的冲突(比如某个库的重复配置文件),可以单独指定策略,比如case "reference.conf" => MergeStrategy.concat。

4. 用Babun执行命令,查看详细日志

IntelliJ的sbt日志有时候会截断关键信息,切换到Babun终端,进入项目根目录,执行:

sbt -debug assembly

通过debug日志能精准定位问题:是代理下载依赖超时?还是合并Jar时某个文件重复?根据日志再针对性解决。

5. 验证代理能否访问插件仓库

在Babun里用curl测试代理是否能正常访问sbt-assembly的仓库:

curl -x http://你的代理IP:端口 http://dl.bintray.com/sbt/sbt-plugin-releases/com/eed3si9n/sbt-assembly_2.12_1.0/0.14.6/

如果能正常返回仓库页面,说明代理配置没问题;如果超时或报错,那就是代理的网络权限问题,得联系运维调整。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:10:14