我正在处理遗留代码仓库,我想将Scala项目添加到其中。这是目录树:
LegacyFolder
|
--JavaSourceDir1
|---SymLink to "LegacyFolder"
--JavaSourceDir2
|---SymLink to "LegacyFolder"
--MyProject
我想在我的项目中使用JavaSourceDir1和JavaSourceDir2中的Java文件(作为依赖项)。第一个想法是将它们添加为非托管源文件。像这样:
unmanagedSourceDirectories in Compile += baseDirectory.value / "../JavaSourceDir1"
unmanagedSourceDirectories in Compile += baseDirectory.value / "../JavaSourceDir2"
问题在于JavaSourceDir1/2
内的所有符号链接,它们使SBT变得疯狂并且它在运行/编译命令上挂起。这是有道理的,因为SBT处于无限循环中以查找文件。
那么,我该如何解决这个问题呢?有没有办法只能非递归地在这些文件夹中获取Java文件,并以某种方式将它们作为依赖项添加?
答案 0 :(得分:2)
您可以定义一个直接在名为*.java
的给定目录下检索legacyJavaSources
个文件的函数,并将结果提供给unmanagedSources in Compile
:
lazy val root = (project in file("."))
.settings(
unmanagedSources in Compile ++=
legacyJavaSources(baseDirectory.value.getParentFile / "JavaSourceDir1"),
unmanagedSources in Compile ++=
legacyJavaSources(baseDirectory.value.getParentFile / "JavaSourceDir2")
)
def legacyJavaSources(dir: File): Vector[File] = {
(dir * "*.java").get.toVector
}