【问题标题】:How to add Jar libraries to an IntelliJ Idea SBT Scala project?如何将 Jar 库添加到 IntelliJ Idea SBT Scala 项目?
【发布时间】:2011-04-17 07:07:08
【问题描述】:

我创建了一个 IntelliJ Idea SBT Scala 项目,如 Heiko Seeberger's article 描述的那样。

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

【问题讨论】:

    标签: scala intellij-idea sbt


    【解决方案1】:

    在项目的 IntelliJ Idea 窗口中,转到文件 >> 项目结构 >> 库。单击该库选项后,将显示两个窗格。在最左侧窗格的顶部,单击绿色的“+”按钮。

    【讨论】:

    • 这在 13.1.5 版本中似乎不起作用。我添加了 .jar 文件。在我下次重新启动 IntellJ 或修改 build.sbt 文件之前,它工作正常。然后,它就“消失”了。
    • 同上@GermánBouzas
    【解决方案2】:

    更好的方法是将非托管依赖项添加到 build.sbt 中,并避免将部分依赖项管理留给 IDE。

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

    【讨论】:

    • lib文件夹自动添加到unmanagedJars,IDEA支持吗?
    • 是的,Idea 会查找 unmanagedJars 中记录的库,并正确完成所有导航/突出显示。如果您指的是构建,Idea 使用 Sbt 本身(捆绑或外部)来构建 Sbt 项目,因此他们不需要做任何额外的事情来支持它。
    • 你确定lib是intellij默认自动使用的吗?
    • 我现在查了一下,插件并没有自动添加到模板中。新的项目模板可能同时发生了变化(很有可能,或者问题的原始所有者已经导入了他们的具有库配置的项目),或者可能一直都是这样。我的“是”是关于那个问题的第二部分。也就是说,如果您将 unmanagedJars 配置添加到 build.sbt 中,IDE 将在其检查/导航/突出显示中将其考虑在内。
    【解决方案3】:

    只需在 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 文件(在提供的路径中)被修改,这也会改变。

    【讨论】:

      【解决方案4】:

      在 Intellij Idea 中:

      • 文件 > 项目结构 > 库

      在 Netbeans 中:

      • 文件 > 项目属性 > 库

      在 Eclipse 中:

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

      【讨论】:

      • 我认为将 jar 文件添加到 build.sbt 是一个更好的选择。
      【解决方案5】:

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

      可能的解决方法
      @zero 的建议对我有用:

      1. 将 JAR 放入项目的 lib目录。

      2. build.sbt 中,在lazy var baseSettings = Seq( ... ) 中添加该行 unmanagedJars in Compile += file("YourPath/ProjectBla/lib/controlsfx-8.40.14.jar").

      3. 还是没有运气?在 SBT 工具窗口中,在一个模块的 sbt settingsunmanagedBaseunmanagedSourceDirectories(等)尝试调用弹出命令“Show值”和“检查”几次。不知何故,它可能会起作用。

        根据 Eugene Yokota 对 How can I add unmanaged JARs in sbt-assembly to the final fat JAR? 的回答,另一个选项(我没有尝试过)是向每个所需模块添加一个单独的 lib 目录。

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

      【讨论】:

        【解决方案6】:

        在您的项目根路径中创建一个 lib 目录,将您的 JAR 粘贴到那里,运行 sbt reload,关闭项目并再次打开它。在 IntelliJ 2018.2.4 和 SBT 1.0 中为我工作

        【讨论】:

          【解决方案7】:

          转到文件 -> 项目结构 -> 模块

          在左侧窗格中选择模块并转到依赖项选项卡

          单击 + 添加 JAR 或目录

          【讨论】:

            【解决方案8】:

            我们可以做的一种方法是在 Intellij 中显式添加 jar,但这种方法的问题是每次构建项目时都需要再次添加它。

            第一种方法是:

            在 Intellij Idea 中:

            文件 > 项目结构 > 库

            另一种方法是在本地发布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")
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-12-05
              • 1970-01-01
              • 2012-02-11
              • 2011-12-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多