score:0

we have eventually ended up with the following configuration:

we have an sbt root project (which happen to be also a git project)
and this project contains no code, and only acts as an aggregator for sbt subprojects.

the sbt subprojects (which also happen to be standalone git repos) contain all configuration needed to be independent standalone sbt projects (with their own build.sbt and plugins.sbt definitions).

pros:

  • each subproject has it's own version.
  • the ci system can concentrate on the subprojects without knowing anyhthing about the parent root project.
  • we can open all those project at once with intellij from the root sbt project.

cons:

  • can not aggregate mutual configurations for sbt subprojects in one place.
  • the only value of the root project is in the ability it provides us opening all subprojects inside the same intellij instance.
    the commits for the root project are pretty useless, so the "git multimodule" overhead ceremony is really something to consider twice.

next step: we are considering to remove the root project from git and staying just with the subprojects as standalone git repos.
yes it will eliminate the possibility to clone "everything needed at once" and each team member will have to maintain the root aggregator project as a local directory, but on the other side maintaining a 'git with submodules' project requires continuous effort as well.


Related Query

More Query from same tag