"sbt package" is faster than "sbt publish-local". One trick is using "sbt publish-local" only the first time. Then later, after updating module1 source code, use "sbt package". I usually use this trick when developing xitrum and xitrum-demos.
1. sbt publish-local only the first time
2. cd ~/ivy2/local/tv.cntt/xitrum-modularized-demo-module1_2.9.2/1.0-SNAPSHOT/jars/
3. rm xitrum-modularized-demo-module1_2.9.2.jar
4. Create symlink from the jar file in the source code directory to here: ln -s ~/src/xitrum-modularized-demo/module1/target/scala-2.9.2/xitrum-modularized-demo-module1_2.9.2-1.0-SNAPSHOT.jar xitrum-modularized-demo-module1_2.9.2.jar
5. When updating module1 source code, use "sbt package"
> Something where no publish-local or restart is necessary
Currently, you can use JRebel to reload things other than routes.
> public folder of a module would be merged with the application
Because module is packaged as a jar file, you should use "resources/<module name>/public" as demonstrated in xitrum-modularized-demo. I think the meaning of the word "module" itself is "encapsulation". Once packaged, it should not be changed.