Per the SBT documentation, "A project is defined by declaring a lazy val of type Project."
That is certainly the norm, and is what we are doing, but I was wondering what if any is the reason it needs to be lazy.
Using a regular val instead of lazy val seems to work. Of course using strict vals results in the project definitions being initialized in order, which means forward references don't work, requiring projects to be defined in dependency order.
For a relatively large build, with 53 interdependent projects, having ordering enforced is actually a Good Thing™, so I was wondering if there's an actual reason for using lazy val -- besides allowing definitions to occur in arbitrary order.