Currently I use subversion for version control and maven (for some projects ant is used) for building. If you know ant but never used maven start reading about the diffrerences first. Most important is that these two projects have different goals. Maven is based on ant and provides more overall project management functionality, which is what I’m looking for here. As far as I know ant focuses more on platform independent building.
Still my IDE needs to be optimized so I need to look into the more general picture of project management. Like release management and of course the integration of all this into eclipse, the IDE of my choice.
An interesting thesis on this subject:
System Configuration Management is what we’re looking for. At the above link you can find a good dscription and brief history of SCM. Read it, it’s interesting.
The document handles most aspects of SCM in the context of build and release management. Exactly what I’m looking for.
workspace pc for development, local file system, eclipse, sources (checked out)
versioning svn for versioning all sources assigning revision numbers and keeping track of changes, history, on file level
building make/ant/maven for compiling sources
release management maven, compiling sources for deployment, assign version number, on libraries/software level
dependency management maven, what libraries (jar for java) are needed to compile this artifact
repository management maven, managing a repositoruy of dependencies, holds several releases of libraries
change management following up changes of software components, like bugs, change requests, …
Except for release and change management mvn + svn suit all my needs. Change management is a big issue and will most likely require more than one tool. For now I will just ignore it. Maybe I need to get back to this later on. What I really want to get into is the release management.
Does maven have any support for release management? Yes it have, I’ll find out in my mighty maven post.