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

Reply via email to