devDomm devDomm - 1 year ago 77
Less Question

Playframework 2.5.4 sbt less compilation fails

I finally had the time to set up a new play (version 2.5.4) project with the activator using the "play-java" template.
In my build.sbt i added the following line to use bootstrap with less, as described here.

"org.webjars" % "bootstrap" % "3.3.7"

I also created the folder structure as discribed in the documentation

|---> assets
|---> stylesheets

There's just a simple main.less containing the following lines:

@import "lib/bootstrap/less/bootstrap.less";

body {
color: aqua;

Now when I'm calling
activator run
activator stage
activator dist
everything compiles without an error and on calling localhost:9000 the bootstrap is included in the main.css as expected.

EDIT: first i thought the following problem only occurs with heroku but when using
sbt clean compile stage
on my local machine I also get the following error:

[info] LESS compiling on 1 source(s)
[error] /tmp/scala_buildpack_build_dir/app/assets/stylesheets/main.less:1: 'lib/bootstrap/less/bootstrap.less' wasn't found. Tried - /tmp/scala_buildpack_build_dir/app/assets/stylesheets/lib/bootstrap/less/bootstrap.less,/tmp/scala_buildpack_build_dir/app/assets/lib/bootstrap/less/bootstrap.less,/tmp/scala_buildpack_build_dir/target/web/less/main/lib/bootstrap/less/bootstrap.less,/tmp/scala_buildpack_build_dir/public/lib/bootstrap/less/bootstrap.less,/tmp/scala_buildpack_build_dir/target/web/web-modules/main/webjars/lib/bootstrap/less/bootstrap.less,lib/bootstrap/less/bootstrap.less
[error] @import "lib/bootstrap/less/bootstrap.less";
[error] ^
[error] one error found
[error] (web-assets:less) com.typesafe.sbt.web.CompileProblemsException
[error] Total time: 5 s, completed Aug 10, 2016 2:53:01 PM
! ERROR: Failed to run sbt!

It seems that with sbt the less compilation can't handle the inclusion of the bootstrap.less coming from an external library while compiling. the activator works fine.

Has anyone else encountered a similar problem, or has an idea what could cause this error?

Answer Source

Normally the less files of the bootstrap webjar should be extracted into target/web/web-modules/main/webjars/lib/bootstrap/less/bootstrap.less during the build.

But the Jar file of the version you are using misses this files:

bootstrap-3.3.7.jar\META-INF\resources\webjars\bootstrap\3.3.7\ css fonts js webjars-requirejs.js webjars-requirejs.js.gz

In the version 3.3.4 the less files are existing.