我有一个单项目构建,在Build.scala文件中实现,具有以下设置:
scala
lazy val root = Project(
id = ProjectInfo.name,
base = file("."),
settings = Project.defaultSettings
++ Revolver.settings
++ Revolver.enableDebugging(port = 5050)
++ Twirl.settings
++ // more tasks omitted
++ Seq(
mainClass in Compile := Some(launcherClassName),
mainClass in Revolver.reStart := Some(launcherClassName),
javaOptions in Revolver.reStart ++= List(
"-XX:PermSize=256M",
"-XX:MaxPermSize=512M",
"-Dlogback.debug=false",
"-Dlogback.configurationFile=src/main/resources/logback.xml"
),
resolvers ++= projectResolvers,
libraryDependencies ++= Dependencies.all,
parallelExecution in Test := false,
)
)
我想为项目添加sbt-web托管资产处理,因为我想处理coffeescript,等等。
我将sbt-coffeescript
插件直接添加到plugins.sbt
文件夹中的project
文件中,实际上让它正常运行。所以现在当我运行web-assets:assets
时,我在/src/main/coffeescript/foo.coffee
中有一个coffeescript示例文件,它被编译为target/web/coffeescript/main/coffeescript/foo.js
。
不幸的是,当我只运行compile
或run
任务时,没有任何内容得到处理。如何在开发工作流程compile
期间启用资产处理?
答案 0 :(得分:2)
您遇到的问题是,在项目中指定依赖关系的旧式方法不适用于AutoPlugins(WebPlugin就是这样)。
具体做法是:
val foo = Project(
id = "ok"
base = file("ok")
settings = defaultSettings // BAD!
)
即。如果你手动在项目上设置设置,你会告诉我“我知道我想要在这个项目上设置的所有设置,我想完全覆盖默认设置。”
sbt设置的加载顺序为:
Project
个实例build.sbt
个文件中定义的设置。以上代码重新应用了0.13.x系列中的所有sbt默认设置,这将覆盖AutoPlugins之前启用的所有内容。这是设计上的,因为任何其他机制都不会是“正确的”。
如果您要迁移到使用AutoPlugins,只需将您的构建修改为:
lazy val root = Project(
id = ProjectInfo.name,
base = file("."))
settings =
// NOTICE we dropped the defaultSettings
Revolver.settings
++ Revolver.enableDebugging(port = 5050)
++ Twirl.settings
++ // more tasks omitted
++ Seq(
mainClass in Compile := Some(launcherClassName),
mainClass in Revolver.reStart := Some(launcherClassName),
javaOptions in Revolver.reStart ++= List(
"-XX:PermSize=256M",
"-XX:MaxPermSize=512M",
"-Dlogback.debug=false",
"-Dlogback.configurationFile=src/main/resources/logback.xml"
),
resolvers ++= projectResolvers,
libraryDependencies ++= Dependencies.all,
parallelExecution in Test := false,
)
)
答案 1 :(得分:1)
要在编译时运行资产生成,我这样做了:
settings = ... ++ Seq(
pipelineStages := Seq(rjs),
(compile in Compile) <<= compile in Compile dependsOn (stage in Assets),
// ...
)
当我运行compile时,还会执行stage
命令,从而运行sbt-web的管道。
对我而言,问题是如何使生成的资产成为托管资源的一部分(我正在努力sbt-web
使用xsbt-web-plugin
和liftweb
)