【发布时间】:2012-04-22 02:23:17
【问题描述】:
我是 SBT 的新手,我正在考虑将我的工作迁移到 IntellijIDEA。
我有一个使用 eclipse 创建的 Java 项目,现在我想将它与 scala 一起使用。
但是,Java 项目在不断变化,我不想每次都编译一个 jar 并放入 lib 文件夹。
有没有简单的方法来添加这个依赖?
【问题讨论】:
标签: java scala dependencies sbt
我是 SBT 的新手,我正在考虑将我的工作迁移到 IntellijIDEA。
我有一个使用 eclipse 创建的 Java 项目,现在我想将它与 scala 一起使用。
但是,Java 项目在不断变化,我不想每次都编译一个 jar 并放入 lib 文件夹。
有没有简单的方法来添加这个依赖?
【问题讨论】:
标签: java scala dependencies sbt
假设你有两个项目:
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 会将它们一起构建。
【讨论】:
main-project/ 文件夹吗?
ln 命令创建一个符号链接。您只需执行一次,然后文件系统将看到源文件夹同时出现在两个不同的位置,因此您无需移动原始文件夹。