加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:30:10 所属栏目:安全 来源:网络整理
导读:在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" %
在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,path = file("demo"))
    .dependsOn(widgets)

}

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

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

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

解决方法

我不熟悉编写插件,但至少在你的build.sbt中你可以 define the resource file.

或者,再次在build.sbt中你可以create a “common” project that others reference,如:

lazy val common = (project in file("common"))
  .settings(
    Seq(
      includeFilter in unmanagedResources := new SimpleFileFilter(_.getCanonicalPath.startsWith((sourceDirectory.value / "main" / "resources").getCanonicalPath))
    )
  )

然后其他代码(例如任务)可以引用它,如:

lazy val doSomething = taskKey[Seq[File]]("Does something useful")
lazy val doSomethingSetting = doIt := {

  val resourceDir = (resourceDirectory in common in Compile).value
  println(resourceDir)

}

所以你的其他项目可以运行这个或reference that directory

希望有一种直接的方法来实现插件与构建的解决方案之一?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读