我正在使用Play! 2.0和我有关于构建系统的问题。我有一个多个项目的聚合,我有一个共享模块,其中包含静态文件和一些.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
看起来这里的问题是键是常量val而不是Project的属性。实际上,键是PlayKeys中定义的常量全局值,所以我实际上需要指定范围,但我不知道如何
答案 0 :(得分:1)
AFAIK,你不能依赖项目根目录之外的任何东西 - 包括其他项目的文件。
从那时起,您将需要一项任务。您可以让任务从jar中解压缩数据并将其复制到适当的位置。
您也可以查看tasks that copy things,这可能会提供替代方案。