There are several possible solutions to your problem, the most common of which are:
1) You could combine several projects together, if all of them should build and form a dependency tree in any case, into a single set of modules. It uses maven
<modules> <module>submodule-A</module> <module>submodule-B</module> </modules>
which is concise and useful when grouping projects that need to be mapped together as a group. Then you need a script that updates the version numbers of all the pom.xml files for children to the correct version when you release (or, much less preferred, use the maven-release plugin). Thus, each part of the project is moved and matched together as a whole; you can start adding real revision numbers (i.e. 1.3.2).
2) If you cannot map common subprojects into a cohesive solution with modules, the next best option is to use SNAPSHOTS. By installing the version in the dependency project on something like:
<project> ... <artifactId>dependency-A</artifactId> <groupId>com.company</groupId> <version>1.3.2-SNAPSHOT</version> ... </project>
You get the opportunity to navigate in separate base codes immediately. Your main project can track changes in the library, being directly dependent on the snapshot:
<dependencies> ... <dependency> <artifactId>dependency-A</artifactId> <groupId>com.company</groupId> <version>1.3.2-SNAPSHOT</version> </dependency> ... </dependencies>
or you can depend on an older version to continue the current development cycle (i.e. using 1.3.1) and then update the dependency after version 1.3.2 has been released.
This option is a bit more complicated when tracking several independent projects, but it remains clear that it depends on which version, clearly in the source. This is a drawback compared to versions of modules together. On the other hand, do most CI systems (including Hudson) have a checkbox at the end of the configuration section for a job that asks for "Build dependent projects"? (or something like that). When you test and run as a maven build, whenever your SNAPSHOT-A ββdependency performs a rebuild, Hudson can automatically run the build of any project that depends on the -A dependency. This can be very convenient if you have a common, constantly updated dependency.