On 1 Apr 2009, at 13:21, Galder Zamarreno wrote:
Manik Surtani wrote:
> This stems from a discussion Adrian and I had about the maven
> module structure for Infinispan and how it could change to be more
> modular.
What's the aim for making Infinispan more modular? Release individual
modules independently? Make it easier for people to select which
modules they need?
The last one. They will not be released independently, but it helps
consumers control bloat/dependencies. E.g., if you have a maven
project which just uses the core Infinispan API, you would just declare a
dependency on infinispan-core. If you also used a FileCacheStore, you
need not add anything, but if you used a BdbjeCacheStore you would add
a dependency on infinispan-cachestore-bdbje which in turn would pull down
bdbje jars.
Do you expect different people to own different modules?
You mean from a development perspective? Not necessarily, although it
may naturally work out that way for smaller modules.
> /pom.xml <-- parent POM, used to build/test the entire
project
> /project <- project details such as team and common factors across
> all modules (Artifact Id: infinispan-project)
> /distribution <-- aggregator POM to build a complete and coherent
> distribution (Artifact Id: infinispan-distribution)
> /core <-- core code + tests. (Artifact Id: infinispan-core)
Shouldn't project/ and distribution/ just live under core/?
It could, but then you have issues where you may want to build/test
just core versus the entire distribution. There may be sense in
combining project and core though, since project is just a common
parent for all modules.
> /cachestore/* <-- several sub-modules here, for cache stores that
> have external dependencies. Such as JDBC, BDBJE, S3 so that
> external dependencies can be mapped separately. Typical artifact
> ids: infinispan-cachestore-bdbje
So, each sub-module would have pom.xml? Would there also be another
pom.xml at the root of cachestore/?
Maybe not at the root of cachestore. The subdirs are just for
organization and to make it clear that those modules are cachestore
modules.
Cheers
--
Manik Surtani
Lead, JBoss Cache
http://www.jbosscache.org
manik(a)jboss.org