I think publishing to Bower would be best so people using Bower would have access to it. That does require Node, but we are already using Node for our JavaScript tests and I'm hopeful that at some point we'll be able to take advantage of sbt-web plugins and/or Nashorn so we won't need Node.
WebJars have the version number in the path, so caching should not be a problem in a Servlet 3 container, or anywhere else. They do provide a nifty [webjars-locator](
https://github.com/webjars/webjars-locator) library that handles finding the current version so you don't need to include it in your HTML. I use that in the snippet I wrote.
In dev mode, I almost always have ChromeTools open, which turns off caching by default, so I'm not concerned about that, but we could change it so that we don't send the caching headers in dev mode if that helps others.
I just pushed my branch so you can see where I'm at if you want. I've only worked on the serving part and it's not quite done.
This is what else needs to be done:
* Make sure it doesn't conflict with serving directly from a Servlet 3 container
* Add serving non-minified artifacts in dev mode
* Don't send caching headers in dev mode ??
As far as publishing to Bower goes, I can work on that. I'll try to work on that in the next few days.
Lastly, I think concatenating resources is best left to the build tool, but I wouldn't be opposed to it. One problem I can think of is you'd have to make Lift aware of your dependencies. The way I have implemented serving webjars only requires you to add the dependency to sbt. You then use the snippet to serve it, like this:
<link rel="stylesheet" data-lift="WebJars.css?src=bootstrap.min.css" />
Tim