【问题标题】:How to fully clean, re-resolve and rebuild a Scala sbt-managed project in IDEA?如何在 IDEA 中完全清理、重新解析和重建 Scala sbt 管理的项目?
【发布时间】:2019-01-24 22:58:37
【问题描述】:

TL;DR:如何在 SBT 文件更改时完全协调 IntelliJ 中的所有依赖项

我在 IntelliJ 中有一个 SBT 项目设置。在大多数情况下,if 就像一个魅力,但改变依赖和编译器的版本对我来说是相当痛苦的。

我希望做的是更新我的 SBT 文件,然后在 IntelliJ 中单击 clean project 之类的内容,使其保持最新状态。

我发现的最好的菜单项是重建项目。它读取新的依赖项,但保留旧的依赖项,因此外部库包含多个版本的 Scala 运行时和 3rd 方库。

为了解决这个问题,我可以关闭 IntelliJ 并删除 .idea/libraries 中的所有文件。当我重新启动 IntelliJ 时,它将重新解决依赖关系。它有效,但手动删除元数据文件表明我做错了。

【问题讨论】:

    标签: scala intellij-idea sbt


    【解决方案1】:

    在 *.sbt 文件中进行更改后刷新 IntelliJ:

    • 打开 SBT 项目窗格(菜单视图/工具窗口/SBT)
    • 右键单击您的 SBT 项目
    • 选择刷新外部项目

    【讨论】:

    • 如果有过时的编译类,您可能必须删除目标和项目/目标目录才能重新编译类。
    • 还需要运行sbt clean和sbt compile。
    【解决方案2】:

    保存 SBT 文件时,IntelliJ IDEA 通常会刷新项目。但如果没有,您可以手动进行。

    SBT 面板中有一个 Refresh All SBT Projects 按钮:

    在IDEA还在迷茫的情况下,找不到你刚刚添加的包:

    从文件菜单:

    这是一个相当大的锤子,需要重新启动应用程序,并在多分钟内重建 IntelliSense 索引。但它有时是唯一能让 IDEA 识别您的新 SBT 包的方法。

    【讨论】:

    • 对我不起作用。只有这有助于“...关闭 IntelliJ 并删除 .idea/libraries 中的所有文件”
    • 我认为这对于清理 sbt 项目仍然很重要,因为“刷新所有 SBT 项目”不能正确清理项目。
    【解决方案3】:

    另一个重锤,但似乎有用。

    1. 关闭 IntelliJ
    2. 删除.idea文件夹
    3. 从现有来源导入应用

    【讨论】:

      【解决方案4】:

      以前发生在我身上,是的,是 PITA。

      我通常做的是从项目中手动删除依赖项,所有这些依赖项,然后让 sbt 重新导入实际需要的内容。但不要在 UI 上执行此操作,因为即使有多项选择,也会要求确认每个依赖项! (您将单击“是的,我确定”一小时),而是直接从.idea/modules 目录中的.iml 项目文件中删除。

      【讨论】:

      • 从 .iml 文件中删除可以保留库。我也想刷新所有的库
      • 不确定你的意思。无论如何,这些库仍然会在您的 Maven 或 Ivy 文件夹中。您的项目不会有引用。如果您愿意,当然可以删除缓存的依赖项。
      • hm 刚刚对其进行了测试,它确实有效,但确切的步骤是: 1-退出 ide 2-删除 .idea/modules/.iml 中的内容 3-launch ide -> throws来自 sbt 菜单的一堆错误 5-refresh 依赖项 - > 项目结构中库选项卡中的旧库确实消失了。我以前在没有退出 ide 的情况下这样做。如果我只删除一个模块的 iml 文件中的条目,仍然不确定为什么它会刷新库选项卡?
      【解决方案5】:

      尝试以下步骤:

      1. 关闭 IntelliJ
      2. 备份整个项目文件夹
      3. 删除.idea文件夹
      4. 删除目标文件夹
      5. 删除项目/目标文件夹
      6. 重新打开 IntelliJ 并作为 sbt 项目导入

      请注意,这仅适用于 SBT 项目

      【讨论】:

        【解决方案6】:

        我在不同的项目中使用了不同版本的 sbt 和 scala,IntelJi 不知何故感到困惑。我只能通过删除 sbt 和 ivy2 缓存文件夹来解决问题:

        rm -rf ~/.ivy2
        rm -rf ~/.sbt
        

        【讨论】:

        • .sbt 可以包含一些全局 sbt 和插件设置,删除整个文件夹很愚蠢
        【解决方案7】:

        同意,那是 PITA。没有任何帮助(我尝试了“无效/重新启动”,从“.idea/libraries”中删除文件并重新启动)。

        对我来说,解决这个问题的唯一方法是从 IntelliJIdea 缓存中手动删除与项目相关的文件夹。我从以下位置删除了这些文件夹(我使用 OSX 和 IntelliJ-Idea 14):

        • /Users/{UserName}/Library/Caches/IntelliJIdea14/compiler/{ProjectName}
        • /Users/{UserName}/Library/Caches/IntelliJIdea14/compile-server/{ProjectName}

        这对我有帮助,希望它能为某人节省时间。

        【讨论】:

          【解决方案8】:

          IDEA 2016.2.4

          这些解决方案都不适合我。

          **** 在您尝试上述任何方法之前。备份有问题的 SBT / IDEA 项目 *****

          如果我更新了“build.sbt”,则项目视图上的外部库依赖项没有更新。此外,项目结构仍然显示旧的依赖关系。不管我怎么试IDEA都不会刷新。

          我可以获得部分还原的唯一方法是从另一台机器复制“.idea”文件夹。 SBT 插件的实现是 ****ed!我事先删除了“.idea/libraries”文件夹,然后 IDEA 没有恢复这个文件夹。我尝试了很多次再次导入项目。

          非常糟糕 :(

          附录:我设法让我的项目工作。我认为带有 IDEA 的 SBT 不再是完全错误的。我的 Apache Ivy 2 缓存可能已损坏。所以我执行了以下命令:

          $ rm -rf ~/.ivy2/cache/org.scalatest/scalatest_2.11/*
          $ rm -rf ~/.ivy2/cache/org.scalactic/scalactic_2.11/*
          

          在文件下拉菜单项下使用无效缓存重新启动 IDEA。这似乎触发了 IDEA 和 SBT 的一些内部行动。我还尝试通过 IDE 手动添加添加 JAR,但它变得非常混乱。故事的寓意是每天在两台不同的笔记本电脑上工作并保持更新。

          还可以从命令行仔细检查 SBT 是否有效。我使用的是 0.13.12

          $ sbt about
          $ sbt clean
          $ sbt test
          

          还要重新检查 SBT 依赖项插件。

          【讨论】:

            【解决方案9】:

            对我有用的是:

            1) 关闭 IntelliJ

            2) 删除.idea/libraries 内部

            3) 启动 IntelliJ

            4) 右击pom.xml Maven > Reimport

            之后,外部库中不再有旧版本和重复库。

            【讨论】:

            • SBT 项目中的 pom.xml?
            【解决方案10】:

            如果您通过终端/shell/命令提示符使用激活器,请使用以下命令:

            activator clean
            

            或者只是通过 intellij 在 sbt shell 上“清理”

            它应该有助于重置,下次运行或编译时,它应该从头开始。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-03-27
              • 2016-05-26
              • 2018-05-31
              • 2021-09-10
              • 2021-09-08
              • 1970-01-01
              • 2014-11-21
              • 1970-01-01
              相关资源
              最近更新 更多