繁体   English   中英

在具有SBT的多项目构建中重用设置

[英]Re-using settings in multi-project build with SBT

正在使用Play! 2.0 with和我对构建系统有疑问。 我有多个项目的集合,并且有一个共享模块,其中包含静态文件和一些.less文件,这些文件被编译为CSS。

如何将静态文件以及已编译样式表的输出复制到其他项目中? 我试图自己理解,但看起来,尽管我可以轻松地将一个项目应用到设置,但无法从另一个项目中检索到该设置。

我已经调查了Play! 2.0键

val playAssetsDirectories = SettingKey[Seq[File]]("play-assets-directories")

val incrementalAssetsCompilation = SettingKey[Boolean]("play-incremental-assets-compilation")

val playExternalAssets = SettingKey[Seq[(File, File => PathFinder, String)]]("play-external-assets")

但是我不知道如何使用此信息来修改我的构建文件。

object ApplicationBuild extends Build {

    val appName         = "Website"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
      // Add your project dependencies here,
    )

    val common = PlayProject(
        appName + "-common", appVersion, path = file("modules/common"),mainLang=SCALA,
    lessEntryPoints <<= baseDirectory(_ / "app" / "assets" / "stylesheets" ** "bootstrap.less")
    )



    val website = PlayProject(
        appName + "-website", appVersion, path = file("modules/website"),mainLang=SCALA,

    ).dependsOn(common)

    val adminArea = PlayProject(
        appName + "-admin", appVersion, path = file("modules/admin"),mainLang=SCALA,

    ).dependsOn(common)

    val main = PlayProject(
        appName, appVersion,appDependencies,mainLang=SCALA
    ).dependsOn(
        website, adminArea
    )
}

我基本上想说的是:

website.playExternalAssets += common.playAssetsDirectory(IncludingCompiled)

但这显然是不合法的。

我实际上已经了解了一些,以下代码似乎几乎正确:

  val website = PlayProject(
        appName + "-website", appVersion, path = file("modules/website"),mainLang=SCALA

    ).dependsOn(common).settings(playExternalAssets <<= common.playAssetsDirectory(IncludingCompile))

除了common.playAssetsDirectory不起作用之外:

[info] Loading project definition from G:\project1\project [error] G:\project1\project\Build.scala:26: value playAssetsDirectory is not a member of sbt.Project [error]         ).dependsOn(common).settings(playExternalAssets <<= common.playA ssetsDirectory(IncludingCompile)) [error]                              ^ [error] one error found [error] {file:/G:/project1/project/}default-436781/compile:compile: Compilati on failed

看起来这里的问题是键是恒定值而不是Project的属性。 实际上,键是PlayKeys中定义的常量全局值,因此我实际上需要指定范围,但我不知道如何

啊,这个话题误导了我。 您不想共享设置,您想复制内容。 您可以依赖其他项目,这将使您的JAR可用-然后可以使用getResource检索资源。

AFAIK,您不能依赖项目根目录以外的任何内容,包括其他项目上的文件。

从那时起,您将需要一个任务。 您可能需要执行一个任务,从jar中解压缩数据并将其复制到正确的位置。

您还可以研究复制事物的任务 ,这可以提供替代方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM