我创建了一个 IntelliJ Idea SBT Scala 项目,就像Heiko Seeberger 的文章所描述的那样。
我想在这个项目中添加一个 Jar 库(joda-time)。这个怎么做?简单地将它们放入项目的 /lib 没有帮助。如果我在 Idea 的项目树中右键单击“外部库”,“新建 >”是灰色的。
我创建了一个 IntelliJ Idea SBT Scala 项目,就像Heiko Seeberger 的文章所描述的那样。
我想在这个项目中添加一个 Jar 库(joda-time)。这个怎么做?简单地将它们放入项目的 /lib 没有帮助。如果我在 Idea 的项目树中右键单击“外部库”,“新建 >”是灰色的。
在项目的 IntelliJ Idea 窗口中,转到文件 >> 项目结构 >> 库。单击该库选项后,将显示两个窗格。在最左侧窗格的顶部,单击绿色的“+”按钮。
更好的方法是将非托管依赖项添加到 build.sbt 中,并避免将部分依赖项管理留给 IDE。
有关如何定义 unmanagedBase 和 unmanagedJars 任务的详细信息,请参阅http://www.scala-sbt.org/release/docs/Library-Management.html 。
只需在 build.sbt 中声明
unmanagedJars in Compile += file(Path.userHome+"/Your-Jar-Path/Full-Jar-Name.jar")
并且所需的 jar 将出现在 External Library>unmanaged-jars>Full-Jar-Name.jar 中。如果 jar 文件(在提供的路径中)被修改,这也会改变。
在 Intellij 理念中:
在 Netbeans 中:
在 Eclipse 中:
对于多模块 SBT 项目(Intellij 2017.3.4、Scala 12.2.4、sbt 1.1.1),接受的解决方案仅在重新启动或项目刷新之前有效。实际上,“项目设置-> 模块-> 依赖项”,然后“+”和“JAR 或目录”会给出警告“模块 X 是从 Sbt 导入的。重新导入后对其配置所做的任何更改都可能丢失”。
可能的解决方法:
@zero 的建议对我有用,如下所示:
将 JAR(s) 放入项目的
lib
目录中。
在 build.sbt
,里面lazy var baseSettings = Seq( ... )
添加一行
unmanagedJars in Compile += file("YourPath/ProjectBla/lib/controlsfx-8.40.14.jar")
。
还是没有运气?在 SBT 工具窗口中,在unmanagedBase下 的模块sbt 设置中,unmanagedSourceDirectories(等)尝试调用弹出命令“Show value”和“Inspect”几次。不知何故,它可能会奏效。
来自 Eugene Yokota 对How can I add unmanaged JARs in sbt-assembly to the final fat JAR 的回答?另一种选择(我没有尝试过)是为lib
每个必需的模块添加一个单独的目录。
希望这些步骤能够解决问题或至少有助于调试。
我们可以做的一种方法是在 Intellij 中显式添加 jar,但这种方法的问题是每次构建项目时都需要再次添加它。
第一种方法是:
在 Intellij 理念中:
文件 > 项目结构 > 库
另一种方法是在本地发布 jar
Step 1 : Place the jar in any accessible folder.
Step 2 Create a build.sbt file which contains the detail of the jar.
Step 3 Open cmd to that path and execute command sbt publishLocal.
Step 4 Build your code and you would observe that you are able to access the classes belong to that jar.
build.sbt 看起来像这样:
organization := "com.abc.core"
name := "abc-test-logging"
version := "1.0-SNAPSHOT"
crossPaths := false
packageBin in Compile := file(s"${name.value}-${version.value}.jar")
转到文件 -> 项目结构 -> 模块
在左窗格中选择模块并转到依赖项选项卡
单击 + 添加 JAR 或目录
在你的项目根路径中创建一个 lib 目录,将你的 JAR 粘贴到那里,运行 sbt reload,关闭项目并再次打开它。在 IntelliJ 2018.2.4 和 SBT 1.0 中为我工作