如何在IDEA中完全清理、重新解决和重建Scala sbt管理的项目?

如何在IDEA中完全清理、重新解决和重建Scala sbt管理的项目?,scala,intellij-idea,sbt,Scala,Intellij Idea,Sbt,TL;DR:当SBT文件更改时,如何完全协调IntelliJ中的所有依赖关系 我在IntelliJ中设置了一个SBT项目。在大多数情况下,if的工作方式很有魅力,但对我来说,更改依赖项和编译器的版本是一件非常痛苦的事情 我希望做的是更新我的SBT文件,然后单击IntelliJ中的clean project之类的内容,使其成为最新的 我找到的最好的菜单项是“重建项目”。它读取新的依赖项,但保留旧的依赖项,因此外部库包含多个版本的Scala运行库和第三方库 为了解决这个问题,我可以关闭Intelli

TL;DR:当SBT文件更改时,如何完全协调IntelliJ中的所有依赖关系

我在IntelliJ中设置了一个SBT项目。在大多数情况下,if的工作方式很有魅力,但对我来说,更改依赖项和编译器的版本是一件非常痛苦的事情

我希望做的是更新我的SBT文件,然后单击IntelliJ中的clean project之类的内容,使其成为最新的

我找到的最好的菜单项是“重建项目”。它读取新的依赖项,但保留旧的依赖项,因此外部库包含多个版本的Scala运行库和第三方库


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

以前也发生过,是的,这是一个PITA


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

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

SBT面板中有一个“刷新所有SBT项目”按钮:

在这个想法仍然混乱的情况下,没有找到您刚才添加的包:

从文件菜单:


这是一个相当大的问题,需要重新启动应用程序,并在几分钟内重建IntelliSense索引。但是,偶尔,这是唯一能让你意识到你的新SBT软件包的东西。

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

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

  • /用户/{UserName}/Library/Caches/IntelliJIdea14/compiler/{ProjectName}
  • /用户/{UserName}/Library/Caches/IntelliJIdea14/compile server/{ProjectName}

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

又是一把重锤,但似乎有效

  • 近距离智能
  • 删除
    .idea
    文件夹
  • 从现有源导入应用程序
  • 尝试以下步骤:

  • 近距离智能
  • 备份整个项目文件夹
  • 删除.idea文件夹
  • 删除目标文件夹
  • 删除项目/目标文件夹
  • 重新打开IntelliJ并作为sbt项目导入
  • 注:这仅适用于SBT项目

    IDEA 2016.2.4

    这些解决方案都不适合我

    ****在您尝试上述任何一种方法之前。备份相关SBT/IDEA项目*****

    如果我更新了“build.sbt”,则项目视图上的外部库依赖项不会更新。此外,项目结构仍然显示旧的依赖关系。无论我尝试了什么,这个想法都不会更新

    我获得部分还原的唯一方法是从另一台机器复制“.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/*
    
    在文件下拉菜单项下使用invalidate cache重新启动IDEA。这似乎触发了IDEA和SBT中的一些内部操作。我还尝试通过IDE手动添加JAR,但它变得非常混乱。这个故事的寓意是每天在两台不同的笔记本电脑上工作并保持更新

    同时从命令行仔细检查SBT的工作情况。我使用的是0.13.12

    $ sbt about
    $ sbt clean
    $ sbt test
    

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

    要在*.SBT文件中进行更改后刷新IntelliJ,请执行以下操作:

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

    对我有效的是:

    1) 近距离智能

    2) 删除
    .idea/libraries
    内部

    3) 启动IntelliJ

    4) 右键单击
    pom.xml Maven>重新导入


    此后,外部库中没有旧版本和重复库。

    我在不同的项目中使用不同版本的sbt和scala,IntelJi不知怎么搞糊涂了。我只能通过删除
    sbt
    ivy2
    缓存文件夹来解决此问题:

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

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

    activator clean
    
    或者只是通过intellij“清理”sbt外壳


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

    不适合我。只有这有助于“…关闭IntelliJ并删除.idea/libraries中的所有文件”我认为这对于清理sbt项目仍然是必要的,因为“刷新所有sbt项目”无法正确清理项目。从.iml文件中删除会保留库。我想刷新所有的库,我不知道你说的是什么意思。这些库在任何情况下都会存在于Maven或Ivy文件夹中。不会有来自您的项目的引用。当然,如果您愿意,您可以删除缓存的依赖项。hm刚刚对其进行了测试,并且成功了,但确切的步骤是:1-退出ide 2-