导入Play 2.3.4项目至IntelliJ遇HTTPS Required错误,如何启用自定义settings.xml?
咱们先抓住核心问题:你遇到的SERVER ERROR: HTTPS Required本质是旧版sbt(0.13.5)默认用HTTP访问Maven中央仓库,但现在中央仓库已经强制禁用HTTP了,而你之前调整的Maven settings.xml其实对sbt构建的Play项目不生效——因为sbt有自己独立的仓库配置体系,和Maven不是一套逻辑。
下面是具体的解决步骤:
1. 配置sbt的仓库文件(关键!)
sbt会优先读取用户目录下的repositories文件,而不是Maven的settings.xml。你需要创建/修改这个文件:
- Linux/Mac:路径是
~/.sbt/repositories - Windows:路径是
C:\Users\<你的用户名>\.sbt\repositories
把文件内容改成以下内容(全部替换成HTTPS地址):
[repositories] local maven-central: https://repo1.maven.org/maven2/ typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sbt-plugin-releases: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
2. 让IntelliJ加载这个sbt配置
打开IntelliJ的设置(File > Settings 或快捷键 Ctrl+Alt+S),按以下路径找到sbt配置:Build, Execution, Deployment > Build Tools > sbt
在VM parameters输入框中添加:
- Linux/Mac:
-Dsbt.repository.config=~/.sbt/repositories - Windows:
-Dsbt.repository.config=C:\Users\<你的用户名>\.sbt\repositories(注意替换成你的实际用户名)
同时确保:
- 选择Use sbt shell(旧版IntelliJ可能叫“Use external build”)
- 强制指定sbt版本为
0.13.5,不要用IntelliJ内置的版本
3. 检查项目内的硬编码仓库地址
打开项目的build.sbt和project/plugins.sbt,看看有没有硬写的HTTP仓库地址(比如resolvers += "SomeRepo" at "http://xxx"),如果有,全部改成HTTPS。
4. 测试验证
做完以上步骤后,点击IntelliJ的File > Invalidate Caches...,选择Invalidate and Restart,重启后重新导入项目。或者在sbt shell里执行update命令,看看是否还会出现HTTPS相关的错误。
为什么之前的Maven settings.xml没用?
因为sbt和Maven是独立的构建工具,sbt默认不会读取Maven的settings.xml——除非你专门配置了sbt的maven插件。你之前调整的IntelliJ里的Maven设置,只对纯Maven项目生效,对sbt构建的Play项目完全不适用,这就是问题的关键所在。
内容的提问来源于stack exchange,提问作者Paco1

