Is it a necessity for the dependencies to be marked provided in the module poms, or could we move the provided markings to the top-level pom?
I would argue that scopes are best put in module poms, because the same artifact may have two different scopes in two different modules in a multi-module project, and it gets confusing when the default "compile" scope is explicit in some cases (to override the parent) and implicit in other cases.
Specifying scopes this way, also helps simplify the copy-dependencies plugin configuration a lot, and makes the behavior of plugins that use the scopes more predictable (vs. the extra configuration in our assembly to get around the messiness of picking and choosing what to include). It also makes our integration testing environment much more realistic. The biggest downside I'm aware of is that provided scope is not resolved transitively in the unit testing phase of the build lifecycle.
When I try to init, it throws an exception because it can't find log4j.
I don't get that. Have you figured this out yet?