我在 IntelliJ 中遇到了类似的问题,并且似乎正在解决 IntelliJ 中的错误。
我的版本:
- IntelliJ Ultimate 2018.2.4
- IntelliJ Scala 插件 2018.2.11
- 操作系统:Windows
- Scala:2.12.6(目前 Ammonite 当前版本 1.2.1 尚未针对 Scala 2.12.7 发布,请参阅 #879 及以下版本)
没有 IntelliJ 项目
如果我只打开 .sc 文件而不打开项目,则会收到提示
- 项目 JDK 未定义
- 模块中没有 Scala SDK
- 通知:“将所有 Ammonite 标准依赖项添加到项目中?”
通知很快消失。如果我在修复 JDK 之前单击“添加”按钮,则导入不起作用,并且添加按钮消失了。修复 jdk 和 scala,然后在 eventlog 中找到“Add all Ammonite...”并单击“add”,然后就可以了。
但是,下次我重新打开 IntelliJ 时,所有设置更改都会丢失。
使用 IntelliJ 项目
- 创建新项目 Scala sbt 项目,基于默认目录的项目。
- 我将我的 sc 文件放在某处
现在 IntelliJ 会记住 sc 文件的设置。我什至可以直接从 IntelliJ 的 explorer/total commands 中打开 sc 文件,不过我更喜欢在 IntelliJ 中配置“打开方式...”。
不允许 IntelliJ 通过通知自动导入 sbt 项目设置,这似乎破坏了库导入,我需要重新创建项目才能恢复。
Scala 版本问题
库自动导入“添加”按钮仅适用于发布 Ammonite 的 Scala 版本。见Maven Central Ammonite releases。在撰写本文时,尚未针对 scala-2.12.7 发布 Ammonite 1.2.1,尽管当前不稳定的 ammonite 版本已发布。见Ammonite bug-report #879。添加按钮只是默默地失败,这很糟糕,尤其是。对于像我这样的新手。
自动生成的 sbt 构建文件如下所示
name := "Ammonite"
version := "0.1"
scalaVersion := "2.12.6"
这是成功加载库后在项目设置中的样子:
这里是使它编译的依赖项。请注意,“SBT:”依赖项是通过 SBT 文件自动生成的(似乎),其他是由 scala 插件 ammonite 通知功能添加的库
当 IntelliJ 无法加载 ammonite 库时,上述库列表为空。
带有 SBT 的 IntelliJ(因为 IntelliJ 丢失了菊石进口,并且用于 $ivy)
IntelliJ 似乎经常丢失其菊石进口。如果我有 SBT 设置来提供导入,那么这并不重要。此外,IntelliJ $ivy 对 ammonite 的支持仅在文件已经本地缓存在 ivy-cache 中时才有效,并且在我的 Windows 上运行 Ammonite 脚本会将文件缓存在不同的位置,这意味着 IntelliJ $ivy 导入有效地不起作用。因此,我使用 SBT 来设置我在脚本中使用的导入的总和。
我的 build.sbt
scalaVersion := "2.12.7"
// https://mvnrepository.com/artifact/com.lihaoyi/ammonite
libraryDependencies += "com.lihaoyi" % ("ammonite_" + scalaVersion) % "1.2.1-16-48ce533"
// Extra example dependency
libraryDependencies += "org.jsoup" % "jsoup" % "1.11.3"