Module registry

Module registry allows the transitive build to carelessly walk on the filesystem and find codebase for modules involved in the build.

The transitive build knows what must be built before what, but also needs to know where the relevant code resides.

For this reason, buildozer introduces the concept of module registry, which is a simple mapping between logical module identification and its physical codebase on the filesystem.

Manual registry changes

The module registry is stored in ~/.buildbox/var/modules.txt - see the following sample excerpt:

...
net.sf.buildbox:zer:1-SNAPSHOT /data/pk/src/buildbox/tools/buildozer
net.sf.buildbox:buildbox-meta:0 /data/pk/src/buildbox
net.sf.buildbox.meta:buildbox-common-meta:0 /data/pk/src/buildbox/common
net.sf.buildbox:devmodel-ant-tasks:3-SNAPSHOT /data/pk/src/buildbox/devportal/ant
net.sf.buildbox:maven-xmlbeans-model:4.0.0-SNAPSHOT /data/pk/src/buildbox/devportal/maven-xmlbeans-model
net.sf.buildbox:devmodel-test:3-SNAPSHOT /data/pk/src/buildbox/devportal/it-devmodel
...

As you can see, the format is pretty straightforward; each line contains module ID and basedir location, meaning that the basedir contains module identified by the ID.

Currently buildozer does not support the case with multiple locations containing module with same ID; this usecase is being explored and will be implemented later.

Command zer reg - Adding modules to registry (registering)

To add directories with Maven modules to the module registry, use the reg command:

zer reg [<dir>]

Example using application "proficio" from http://www.maestrodev.com/better-build-maven :

~/bbwm/proficio$ zer reg .
Buildozer 1.0.0-alpha-4 (C) 2006-9 by Petr Kozelka <pkozelka@gmail.com>
registering directory /home/pk/bbwm/proficio for module com.devzuz.mvnbook.proficio:proficio:1.0-SNAPSHOT
registering directory /home/pk/bbwm/proficio/proficio-cli for module com.devzuz.mvnbook.proficio:proficio-cli:1.0-SNAPSHOT
registering directory /home/pk/bbwm/proficio/proficio-model for module com.devzuz.mvnbook.proficio:proficio-model:1.0-SNAPSHOT
registering directory /home/pk/bbwm/proficio/user-guide for module com.devzuz.mvnbook.proficio:user-guide:1.0-SNAPSHOT
registering directory /home/pk/bbwm/proficio/proficio-api for module com.devzuz.mvnbook.proficio:proficio-api:1.0-SNAPSHOT
registering directory /home/pk/bbwm/proficio/proficio-stores for module com.devzuz.mvnbook.proficio:proficio-stores:1.0-SNAPSHOT
registering directory /home/pk/bbwm/proficio/proficio-stores/proficio-store-xstream for module com.devzuz.mvnbook.proficio:proficio-store-xstream:1.0-SNAPSHOT
registering directory /home/pk/bbwm/proficio/proficio-stores/proficio-store-memory for module com.devzuz.mvnbook.proficio:proficio-store-memory:1.0-SNAPSHOT
registering directory /home/pk/bbwm/proficio/proficio-core for module com.devzuz.mvnbook.proficio:proficio-core:1.0-SNAPSHOT

Command zer unreg - Removing modules from registry (unregistering)

To unregister all modules below selected subdirectories, use this:

zer unreg [<dir>]

Conflicts and inconsistencies

  • duplicate ids
  • duplicate dirs
  • dir does not exist
  • dir contains different module