sbt插件依赖无法从Nexus解析:连接超时问题求助
解决Play 2.5.3项目在IntelliJ中sbt刷新卡在sbt-uglify插件的问题
你遇到的问题主要来自两个核心点:sbt版本不兼容和sbt-uglify插件的依赖无法通过企业Nexus正常解析,下面分步骤帮你逐一解决:
1. 必须使用匹配的sbt版本(0.13.11)
Play Framework 2.5.x系列是基于sbt 0.13.x开发的,sbt 1.x是完全不兼容的后续大版本,所以你必须放弃使用sbt 1.1.0,切换回sbt 0.13.11:
- 先安装sbt 0.13.11(可以从sbt官方归档渠道下载对应版本),并确保系统环境变量优先指向这个版本,通过
sbt -version命令验证当前使用的版本。 - 在项目根目录的
project/build.properties文件中明确锁定sbt版本,避免IntelliJ自动使用高版本:sbt.version=0.13.11 - 在IntelliJ中同步配置:打开
File → Project Structure → Project Settings → Modules,找到你的sbt模块,在右侧sbt设置里选择Launcher version为0.13.11。
2. 解决sbt-uglify插件的依赖解析超时问题
sbt-uglify是Typesafe官方提供的插件,默认从Typesafe专属仓库拉取,你的企业Nexus大概率没代理这些仓库,导致连接超时:
- 检查Nexus代理配置:联系公司运维,确认Nexus是否代理了以下两个关键仓库:
- Maven仓库:
https://repo.typesafe.com/typesafe/maven-releases/ - Ivy仓库:
https://repo.typesafe.com/typesafe/ivy-releases/
只有代理了这些仓库,Nexus才能正确拉取sbt-uglify的依赖包。
- Maven仓库:
- 临时项目仓库配置(应急方案):如果暂时无法修改Nexus配置,可以在项目的
project/plugins.sbt中添加Nexus代理后的Typesafe仓库地址(优先用企业内部地址):resolvers += "Typesafe Ivy Releases" at "https://your-nexus-url/repository/typesafe-ivy-releases/" resolvers += "Typesafe Maven Releases" at "https://your-nexus-url/repository/typesafe-maven-releases/" addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "1.0.3") // 这个版本适配Play 2.5.x - 清理本地缓存:删除sbt和ivy的本地缓存,避免旧缓存导致的解析异常:
rm -rf ~/.sbt/boot rm -rf ~/.ivy2/cache/com.typesafe.sbt/sbt-uglify - 检查网络与代理:确认IntelliJ可以正常访问企业Nexus服务器:
- 用curl命令测试Nexus地址的连通性,看是否能正常响应。
- 如果公司网络需要HTTP代理,在IntelliJ中配置:
File → Settings → Appearance & Behavior → System Settings → HTTP Proxy,选择Manual proxy configuration并填入公司的代理地址和端口。
3. IntelliJ的优化设置
- 确保IntelliJ的sbt插件是适配2017.3版本的最新版:打开
File → Settings → Plugins,找到sbt插件,检查并安装对应版本的更新。 - 启用sbt shell进行构建:在
File → Settings → Build, Execution, Deployment → Build Tools → sbt中,勾选Use sbt shell for build and import,用sbt原生shell处理依赖解析,稳定性会更高。
内容的提问来源于stack exchange,提问作者Vanessa
相关产品推荐
相关产品推荐

