TL; DR:如何在SBT文件更改时完全协调IntelliJ中的所有依赖项
我在IntelliJ中设置了SBT项目。在大多数情况下,如果它像魅力一样,但对我来说非常痛苦,要改变依赖项和编译器的版本。
我希望做的是更新我的SBT文件,然后点击IntelliJ中的清理项目之类的内容,以使其更新。
我找到的最佳菜单项是重建项目。它读取新的依赖项,但保留旧的依赖项,因此外部库包含Scala运行时和第三方库的多个版本。
为了解决这个问题,我可以关闭IntelliJ并删除.idea/libraries
中的所有文件。当我重新启动IntelliJ时,它将重新解析依赖项。它可以工作,但手动删除元数据文件表明我做错了。
答案 0 :(得分:9)
答案 1 :(得分:7)
保存SBT文件时,IntelliJ IDEA通常会刷新项目。但如果没有,你可以手动完成。
SBT面板中有一个刷新所有SBT项目按钮:
在IDEA仍然感到困惑的情况下,没有找到刚添加的软件包:
从“文件”菜单中:
这是一个相当大的锤子,需要重新启动应用程序,并且需要多分钟重建IntelliSense索引。但偶尔也会让IDEA认识到你的新SBT包装。
答案 2 :(得分:4)
之前发生在我身上,是的,是PITA。
我通常做的是手动删除项目中的依赖项,所有这些依赖项,然后让sbt重新导入实际需要的内容。不要在用户界面上这样做,因为即使有多个选择,也会要求确认每个依赖! (您将点击"是的,我确定"确保"一小时),而是直接从.iml
目录上的.idea/modules
项目文件中删除。 / p>
答案 3 :(得分:2)
尝试以下步骤:
请注意,这仅适用于SBT项目
答案 4 :(得分:1)
另一把重锤似乎有效。
* I want to understand what this method does!
文件夹答案 5 :(得分:1)
我在不同的项目中使用了不同版本的sbt和scala,并且IntelJi在某种程度上感到困惑。我只能通过删除sbt
和ivy2
缓存文件夹来解决问题:
rm -rf ~/.ivy2
rm -rf ~/.sbt
答案 6 :(得分:0)
同意,那是PITA。没有什么帮助我(我尝试“无效/重启”,从“.idea / libraries”中删除文件并重新启动)。
解决这个问题的唯一方法是从IntelliJIdea缓存中手动删除与项目相关的文件夹。我从以下地方删除了这些文件夹(我使用OSX和IntelliJ-Idea 14):
这对我有所帮助,希望能为某人节省时间。
答案 7 :(得分:0)
IDEA 2016.2.4
这些解决方案都不适合我。
****在您尝试上述任何一项之前。在问题中备份SBT / IDEA项目*****
如果我更新了'build.sbt',那么项目视图上的外部库依赖项就不会更新。此外,项目结构仍显示旧的依赖项。无论我尝试什么,IDEA都不会刷新。
我可以获得部分恢复的唯一方法是从另一台机器复制'.idea'文件夹。 SBT插件实现已经过了!我事先删除了'.idea / libraries'文件夹,然后IDEA没有恢复此文件夹。我多次尝试导入项目。
非常糟糕 :(
ADDENDUM:我设法使我的项目有效。我认为与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依赖项插件。
答案 8 :(得分:0)
对我有用的是:
1)关闭IntelliJ
2)删除listing_ID list_expires buyer_ID sold_price
内幕
3)启动IntelliJ
4)右键点击.idea/libraries
之后,外部库中没有旧版本和重复库。
答案 9 :(得分:0)
如果通过终端/外壳/命令提示符使用激活器,请使用以下命令:
activator clean
或者只是通过intellij在sbt shell上“清理”
它应该有助于重置内容,并且下次运行或编译时,应从头开始。