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.