【问题标题】:Adding a Java unfinished project to SBT dependencies将 Java 未完成项目添加到 SBT 依赖项
【发布时间】:2012-04-22 02:23:17
【问题描述】:

我是 SBT 的新手,我正在考虑将我的工作迁移到 IntellijIDEA。

我有一个使用 eclipse 创建的 Java 项目,现在我想将它与 scala 一起使用。

但是,Java 项目在不断变化,我不想每次都编译一个 jar 并放入 lib 文件夹。

有没有简单的方法来添加这个依赖?

【问题讨论】:

    标签: java scala dependencies sbt


    【解决方案1】:

    假设你有两个项目:

    1) 在/main-project 中,您有build.sbt 包含name := "main-project-id"

    2) 在/other-project 中,您有build.sbt 包含name := "other-project-id"

    您可以通过添加文件/main-project/project/Build.scala来创建从主项目到其他项目的依赖项:

    import sbt._
    import Keys._
    
    object MainProjectBuild extends Build {
      lazy val main = Project(id = "main-project-id", base = file(".")) dependsOn(other)
      lazy val other = Project(id = "other-project-id", base = file("other-project"))
    }
    

    然后在/main-project 中添加指向/other-project 的链接。比如:

    cd /main-project
    ln -s ../other-project other-project
    

    这样您现在在名为/main-project/other-project/ 的目录中就有了other-project

    完成此操作后,如果您运行 sbt compile/main-project 内的任何内容,它将按预期工作。

    编辑

    另一种可能更简单的方法是创建一个指向您的 java 源代码的链接,使其看起来像是在同一个源目录中。

    因此,如果您的 Scala 代码在 /main-project/src/main/scala/somepackage/... 中,而您的 java 代码在 /other-project/src/main/java/otherpackage/... 中,那么您可以这样做:

    cd /main-project/src/main
    ln -s /other-project/src/main/java java
    

    那么目录/main-project/src/main/java 将只是指向依赖源,但 sbt 会将它们一起构建。

    【讨论】:

    • Hmm... 真的有必要再创建一个 build.sbt 还是仅仅指出目录工作?另外,我真的需要将文件夹移动到main-project/ 文件夹吗?
    • @Tiago,用一个可能更简单的想法编辑
    • 我想工作时必须一直打电话给 ln 吗?似乎不简单。而且我仍然有必须移动项目位置的问题。但可能我不想复杂化。我会尝试搬到 Intellij 看看。感谢您提供这两个选项。
    • @Tiago,ln 命令创建一个符号链接。您只需执行一次,然后文件系统将看到源文件夹同时出现在两个不同的位置,因此您无需移动原始文件夹。
    • 啊,但我不在 linux 上工作:)。不管怎样,我生成了 IntelliijIDEA 文件,似乎这不起作用:(
    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 2020-01-20
    • 2013-12-06
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多