有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

scala添加包含要生成的符号链接的Java源文件夹。sbt文件

我正在处理一个遗留代码repo,我想将我的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文件,并以某种方式将它们添加为依赖项


共 (1) 个答案

  1. # 1 楼答案

    您可以定义一个函数,直接在名为legacyJavaSources的给定目录下检索*.java文件,并将结果馈送到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
    }