SBT:访问子项目的托管资源?

erw*_*wan 5 plugins scala sbt

在SBT插件中,我正在尝试访问子项目的托管资源.

这是构建文件:

import sbt._
import Keys._
import play.Project._

object ApplicationBuild extends Build {
  val appName         = "demo"
  val appVersion      = "1.0-SNAPSHOT"
  val appDependencies = Seq(
    "org.jruby" % "jruby-complete" % "1.7.1"
  )

  val widgets = play.Project("widgets", appVersion, appDependencies, path = file("widgets"))
  val main = play.Project(appName, appVersion, appDependencies, path = file("demo"))
    .dependsOn(widgets)

}
Run Code Online (Sandbox Code Playgroud)

我正在使用plugins.sbt中定义的SBT插件.

现在,我需要在编译父项目(演示)期间使用子项目(小部件)中的资源文件.

到目前为止,我最接近的是buildDependencies设置键 - 但我只获得了ProjectRef对象,唯一的信息是构建基础和项目ID.我找不到进入该项目资源目录的方法.

tys*_*njh 0

不幸的是我不相信这是可能的。我正在尝试类似的操作,但在文档中发现了以下内容:

注意:在运行时,所有构建的所有插件都加载到构建的类加载器的单独父类加载器中。这意味着插件不会看到构建定义中的类或资源

请参阅:SBT 插件

  • 引用指的是插件类加载器中可用的类和资源。这意味着“Class.forName(..., getClass.getClassLoader)”和“getClass.getClassLoader.getResource(...)”。此外,它仅讨论为构建定义定义的类和资源。也就是说,是“project/”中的项目,而不是主项目。插件仍然可以像往常一样使用设置/任务来获取与项目的资源和类相对应的“文件”。 (2认同)