IntelliJ Build按钮未执行sbt compile依赖的script任务求助
这是个刚接触IntelliJ和SBT时很容易踩的坑——核心原因是:IntelliJ默认的Build按钮用的是它自身的增量构建系统,而非直接调用SBT的compile任务,所以你在build.sbt里定义的compile := (compile in Compile).dependsOn(script).value这种依赖关系,不会被IntelliJ的原生构建器识别。
而你在IntelliJ的SBT窗口手动执行compile时,是直接和SBT进程交互,完全遵循你写的SBT配置逻辑,所以脚本能正常生成。
给你几个针对性的解决办法:
让IntelliJ用SBT Shell执行构建
打开IntelliJ的偏好设置(Mac上是Preferences,Windows/Linux是Settings),依次进入Build, Execution, Deployment→Build Tools→SBT。在Build区域里,勾选Use sbt shell for build and import选项,之后重启IntelliJ或重新导入项目。这样设置后,点击IntelliJ的Build按钮时,就会调用SBT原生的compile任务,自然会触发你定义的script依赖。验证SBT项目导入配置
确保你的项目是按照SBT规范导入的:导入时选择"Import project from external model"并选中SBT,不要手动创建模块。如果之前导入有异常,可以尝试删除.idea文件夹和*.iml文件,重新导入项目。考虑升级IntelliJ版本(可选)
你使用的2017.3.5是比较早期的版本,后续IntelliJ版本对SBT的支持做了不少优化,默认可能已倾向于用SBT Shell处理构建,升级后能减少这类兼容性问题。不过如果暂时不想升级,前面的设置也能解决当前问题。
内容的提问来源于stack exchange,提问作者Than21

