我在Play 2.3.1中使用了LESS编译器。我在我的plugins.sbt文件中安装了sbt-less插件(v1.0.4),并在build.sbt中启用了它:
lazy val root = (project in file("."))
.enablePlugins(PlayJava)
.enablePlugins(SbtWeb)
调用LESS编译器并在target \ web \ public \ main \ stylesheets目录中构建main.css。文件的内容是正确的。
在我的index.scala.html文件中,我有:
<link rel="stylesheet" type="text/css" href='@routes.Assets.at("stylesheets/main.css")' />
然而,当我将浏览器指向应用程序时,找到了main.css,但大小为零。 http状态代码为304,未修改。
如果我使用activator打包我的应用程序进行部署,则生成的.jar文件中的main.css也为零。我无法理解激活器从哪里获得零长度main.css以及为什么它没有得到LESS生成的那个。任何帮助表示赞赏。
更新
有趣的是,如果我们随意将@routes.Assets.at("stylesheets/main.css")
改为&#34; test2.css&#34;,Play会生成一个名为test2.css的空文件并将其返回。
因此,似乎LESS正在生成的main.css与@routes.Assets
返回的main.css之间没有关系。这表明LESS没有将文件放在@routes.Assets
期望的位置。
解决吗
我们搜索了应用程序的模块,发现了一些零大小的样式表/ main.css文件。我们删除了那些并开始工作的东西。我猜他们混淆了背景中发生的任何魔法。
结论
这是一个多模块项目。我正在使用main但已经设置了模块目录,可能是从某个地方复制过来的。其中一些模块具有零大小的public / stylesheets / main.css文件。 &#34;真实&#34;由LESS生成的main.css首先被复制到输出,然后被其中一个空的main.css文件覆盖。一旦它们被移除,我们就得到了预期的结果。