Improve the module hierarchy and dependencies


The current organization of modules is as follows:

  • The core API defines the CARGO API and many utilities (around XML, file handling, etc.)

  • Each container is independent and depends on the core API

  • Each container uses commons-discovery to auto-register itself to CARGO

  • The core API, all containers and all containers' commons-discovery modules are merged together in the uberjar

  • The uberjar uses the maven-shade-plugin, and this generates a dependency reduced pom file

  • The CARGO samples, that test CARGO on each container, uses the uberjar

  • CARGO ANT tasks use the uberjar

  • CARGO Maven2 plugin uses the uberjar

This model has certain limitations:

  • We might forget to copy dependencies

  • The uberjar is used in the Maven2 plugin, even if one container is always used

  • The dependency tree is "messy"

This has been discussed in various ML threads such as:

This needs to be improved. The latest idea for improvement is the following:

  • Have an "uberpom" that is a pom project with all the containers

    • The Maven plugin would depend on the uberpom

  • The uberjar depends on uberpom

    • Samples and ANT tasks use the uberjar


Savas Ali Tokmen


Savas Ali Tokmen


Fix versions