包中的webappResources:= Seq(baseDirectory.value ....)throws解析表达式时出错

时间:2014-12-08 10:55:38

标签: scala sbt xsbt-web-plugin

我尝试配置sbt(版本0.9.0),在sbt中运行package task时使用webapp / dist作为webappResource目录,运行container:start命令时webapp / app作为webappResource目录,遵循以下描述:

How to have different webapp resources for container:start and package tasks in SBT

但它会引发以下错误:


    error: eof expected but 'package' found.
    webappResources in package := Seq(baseDirectory.value / "webapp" / "dist") 
                       ^
    [error] Error parsing expression.

我猜这个包也是sbt conf文件中的保留字,是否有任何其他方式来覆盖包任务中的设置?

这样做的原因是我使用gulp来管理webclient。 Gulp从app文件夹运行项目,并将webclient项目编译(缩小等)到dist文件夹。当我开发时,我使用如下所述的webapp / app文件夹:


    webappResources in Compile := Seq(baseDirectory.value / "webapp" / "app")

当我创建一个版本时,我首先使用gulp将webapp客户端构建(缩小等)到webapp / dist中。然后我想将webapp / dist内容打包到最后的战争中。

但是在使用套餐任务时,我无法覆盖上面的设置以使用webapp / dist。

我也试过像这样创建自己的配置:


    webappResources in Compile := Seq(baseDirectory.value / "src" / "main" / "webapp" / "app")

    lazy val ReleaseWarConfig = config("release-war") extend (Compile)

    val root = (project in file(".")).
      configs(ReleaseWarConfig).
      settings(inConfig(ReleaseWarConfig)(webSettings): _*).
      settings(
        webappResources in Compile := Seq(baseDirectory.value/"src"/"main"/"webapp"/"dist")
    )
    // I have also tried webappResources in ReleaseConfig instead of Compile ..

但它仍然使用webapp / app目录而不是webapp / dist目录。

非常感谢任何帮助!!!!

1 个答案:

答案 0 :(得分:0)

项目的目录布局是什么?听起来你有 [myproject] / webapp / dist / 的Web应用程序资源目录,这意味着你有 WEB-INF / WEB-INF / web [myproject] / webapp / dist / 下的.xml (以及各种其他可选资源)。这是对的吗?

要将Web应用程序资源目录的位置设置为 [myproject] / webapp / dist / ,请将以下设置添加到您的sbt配置中:

build.sbt

webappSrc in webapp <<= (baseDirectory in Compile) map  { _ / "webapp" / "dist" }

您可以详细了解此设置in the readme