The architecture of Maven2 means that the system environment variable M2_HOME
must be set to the correct version as used on the system. (Eg. Maven 2.0.7)
Take this scenario:
- Hudson is configured with two Maven2 versions, 2.0.7 and 2.0.5.
- M2_HOME system environment variable is set as 2.0.7
A project is configured to use 2.0.7. The project will build correctly.
However, if the project is configured to use 2.0.5, the following Maven
exception is thrown and the build terminates:
There are two solutions:
1. When Hudson spawns it's shell process to build, (or whatever it spawns), it
should also set the M2_HOME variable for that shell to the correct version.
2. Hudson should only allow one version of Maven2 to be configured, and this
version of Maven2 should be checked against the M2_HOME environment variable.
I believe the second option makes the most sense, as I don't see the need for
two Maven2 versions on the same system.