如何将Jar库添加到IntelliJ Idea SBT Scala项目中?

问题描述:

我已经创建了一个像Heiko Seeberger's article描述的IntelliJ Idea SBT Scala项目。如何将Jar库添加到IntelliJ Idea SBT Scala项目中?

我想添加一个Jar库(joda-time)在这个项目中使用。这个怎么做?简单地把它们放到项目的/ lib中并没有帮助。如果我在Idea的项目树中右键单击“外部库”,“新建”将变为灰色。

在项目的IntelliJ Idea窗口中,找到File >> Project structure >> Libraries。点击该库选项后,将出现两个窗格。在最左侧窗格的顶部,点击绿色的“+”按钮。

+5

这似乎不适用于版本13.1.5。我添加.jar文件。直到下一次我重新启动IntellJ,或者如果我修改build.sbt文件,它都能正常工作。然后,它只是“消失”。 – chaotic3quilibrium 2014-10-23 22:39:23

+0

同上。与我一样 – 2015-03-13 11:57:49

在IntelliJ IDEA的:

  • 文件>项目结构>库

在NetBeans:

  • 文件>项目属性>库

在Eclipse:

  • 右键单击项目>属性> Java构建路径>库
+0

我认为将jar文件添加到build.sbt是一个更好的选择。 – Daniel 2015-06-10 21:31:16

更好的方式来做到这一点是你的非托管的依赖添加到您的build.sbt和离开你的依赖管理的一部分,切莫你骑。

有关如何定义unmanagedBase和unmanagedJars任务的详细信息,请参阅http://www.scala-sbt.org/release/docs/Library-Management.html

+0

lib文件夹被自动添加到unmanagedJars,这是由IDEA支持吗? – Edmondo1984 2016-05-28 17:17:47

+0

是的,Idea查找unmanagedJars中提到的库,并正确执行所有导航/突出显示。如果你的意思是构建,Idea使用Sbt本身(捆绑或外部)来构建Sbt项目,所以他们不需要额外的支持。 – mcyalcin 2016-06-07 18:30:10

在build.sbt

unmanagedJars in Compile += file(Path.userHome+"/Your-Jar-Path/Full-Jar-Name.jar") 

只需要声明这一点,所需的jar将出现在外部库>非托管罐>全将罐Name.jar。如果jar文件(在提供的路径中)被修改,这也会改变。

对于多模块SBT项目(Intellij 2017.3.4,Scala 12.2.4,sbt 1.1.1),接受的解决方案只能在重新启动或项目刷新之前运行。事实上,“项目设置 - >模块 - >依赖关系”,然后“+”和“JAR或目录”会给出警告“模块X是从Sbt导入的,任何对其配置所做的更改可能会在重新导入后丢失”。

可能的解决方法
的建议通过@zero为我工作如下:

  1. 把JAR(S)到项目的 lib目录。
  2. build.sbt,里面lazy var baseSettings = Seq(...)添加行 unmanagedJars in Compile += file("YourPath/ProjectBla/lib/controlsfx-8.40.14.jar")
  3. 还没有运气?在SBT工具窗口中,模块的sbt设置下的unmanagedBase,非托管源目录(等)尝试调用弹出命令“Show value”和“Inspect”几次。不知何故,它可能会奏效。

    从Eugene Yokota对How can I add unmanaged JARs in sbt-assembly to the final fat JAR?的回答中可以看出,另一个选项(我没有尝试)是为每个需要的模块添加一个单独的lib目录。

希望这些步骤能够解决问题或者至少有助于调试。