* 2.0.8 Release Notes

  Release Notes - Maven 2 - Version 2.0.8

  The full list of changes can be found in our {{{http://jira.codehaus.org/secure/ReleaseNote.jspa?version=13139&styleName=Text&projectId=10500&Create=Create}issue management system}}, and is reproduced below.

** Changes that may affect existing builds
  
  
  *{{{http://jira.codehaus.org/browse/MNG-3118} MNG-3118}} - Test-classes should come before classes in the classpath. This may slightly alter
  behavior of tests. The <<<test-classes>>> directory is now included first in the classpath to allow test resources to override normal runtime ones.
  
** Bug

    * [MNG-2025] - POM is still not read using the right encoding

    * [MNG-2045] - Maven can't compile against sibling test-jar dependency in multiproject (Test Attached)

    * [MNG-2061] - DistributionManagement properties don't get copied in cloned executionProject while lifecycle fork

    * [MNG-2254] - the encoding parameter in xml declaration of POM is ignored 

    * [MNG-2277] - aggregating plugins in submodules of the reactor return all projects causing a chicken/egg issue

    * [MNG-2593] - Maven 2 stumbels upon non ASCII characters in the value of a <localRepository> value in the $HOME/.m2/settings.xml

    * [MNG-2685] - mvn.bat detection of 4NT syntax error

    * [MNG-2932] - Encoding chaos

    * [MNG-2961] - DefaultArtifact getBaseVersion is changed to "xxxx-SNAPSHOT" only if you first call isSnapshot()

    * [MNG-3046] - DefaultArtifactVersion compareTo misbehaves regarding buildNumber 0

    * [MNG-3077] - NullPointerException, if MojoExecutionException has no message

    * [MNG-3084] - mvn.bat in maven 2.0.7 does not return the correct error code.

    * [MNG-3095] - maven-plugin-testing-tools causes bad version in deployed artifacts after tests are run

    * [MNG-3134] - DefaultModelInheritence::assembleDistributionInheritence should be childPathAdjustment aware

    * [MNG-3141] - Build not working if pom.xml is a symbolic link

    * [MNG-3215] - Missing rar artifact handler descriptor

    * [MNG-3240] - maven-model RepositoryBase.equals() causes ClassCastException

    * [MNG-3245] - Maven Reporting API is binary incompatible in 2.0.8-SNAPSHOT by r579987

    * [MNG-3254] - artifactId is not appended any more in distributionManagement.site.url in multi modules when it's not defined in a child

    * [MNG-3298] - invoker MavenCommandLineBuilder#checkRequiredState() should not throw Exception if envvar M2_HOME exists

** Improvement

    * [MNG-2188] - Report mojos should check canGenerateReport() when called directly

    * [MNG-2290] - Generated URLs in POMs of child modules

    * [MNG-3024] - Missing artifact error text improvement

    * [MNG-3047] - DefaultArtifactVersion compareTo inconsistent with equals

    * [MNG-3062] - Allow access to mojoExecution from within plugin.

    * [MNG-3118] - Test-classes should come before classes in the classpath

    * [MNG-3152] - Change to plugin testing harness to allow the setting of ArtifactRepository on the ArtifactStub

    * [MNG-3201] - org.apache.maven.project.MavenProject needs a toString()

** New Feature

    * [MNG-2105] - Enable remote debugging command line option (+ docs)

    * [MNG-2166] - Provide the help listing as default when no arguments are provided

** Task

    * [MNG-3088] - update the assembly name


** Wish

    * [MNG-3207] - Order of repositories for download should be inverted if Archiva is used.
    
