Toward this goal, I think I have found a way to make each maven artifact independently buildable (and even releasable). The key is to remove the cross project dependencies on having other checked-out things.
To do this I would make these 3 changes: 1) separate pom functions: into parent poms (whose function is to factor out common things) and "aggregate" poms (whose function is to aggregate other modules - so they can be built and released as one thing). 2) replace our docbook tooling with the maven docbkx plugin - I've tried this on a small piece of documentation, and it seems like with a bit of work, it could be configured to fit our docbook usage. 3) replace our dependency on copying license/notice boilerplate from the uimaj-distr project checkout, with the approach used in the apache.org pom - using the maven remote-resources plugin to get it. When this is done, it will no longer be important exactly how svn checkouts occur, since we won't be depending on relative directory coordinates to do builds (with the exception of aggregate poms). For aggregate poms, these would always be checked out with the sub-modules they are aggregating, since that's their purpose. But with this, if someone wanted to checkout and build a sandbox annotator, they could just do that one project. With this approach, we could transition to a scheme whereby we would not update submodules that don't change from release to release, if we so desired (I think that would be a good idea). I'll push forward with seeing if I can get our big docbooks to build properly using the docbkx plugin. What do others think about this direction? -Marshall
