Maven 3.0

The Apache Maven team would like to announce the release of Maven 3.0.

Maven 3.0 is available for download.

Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central place.

Maven 3 aims to ensure backward compatibility with Maven 2, improve usability, increase performance, allow safe embedding, and pave the way to implement many highly demanded features.

The core release is independent of the plugins available. Further releases of plugins will be made separately. See the Plugin List for more information.

We hope you enjoy using Maven! If you have any questions, please consult:

Maven 3.0 Release Notes

Maven 3 aims to ensure backward compatibility to the extent possible, improve usability, increase performance, allow safe embedding, and pave the way to implement many highly demanded features.

Users that intent to use the new parallel build feature are strongly advised to read the Guide on Parallel Builds to learn about potential ramifications.

The full list of changes can be found in our issue management system, and is reproduced below.

Known Incompatibilities with Maven 2

Please refer to the following compatibility notes before reporting any issues regarding changed build behavior in Maven 3.

Release Notes - Maven - Version 3.0 (since 3.0-beta-3 only)

Bug

  • [MNG-4592] - Snapshot artifacts that could not be downloaded due to communication problems are "blacklisted" for a day by default.
  • [MNG-4751] - Snapshot version not resolved for version range
  • [MNG-4785] - NPE in dependency resolution code for TC plugin
  • [MNG-4786] - [regression] Ant-based mojo using maven-script-ant:2.1.0+ cause NPE
  • [MNG-4788] - [regression] Appassembler Maven Plugin doesn't work like as it should
  • [MNG-4789] - [regression] Difference in compile scope dependency resolution
  • [MNG-4791] - [regression] POM artifacts passed into MavenProjectBuilder.buildFromRepository() are no longer resolved
  • [MNG-4793] - Unable to obtain archiver for extension 'zip'
  • [MNG-4794] - 'org.apache.maven.plugins:maven-install-plugin:2.3.1'. A required class is missing: org.codehaus.plexus.digest.Digester
  • [MNG-4795] - [regression] Dependencies in forked reactor projects are not resolved when aggregator bound to lifecycle forks
  • [MNG-4800] - Conflict resolution does not pick sub tree of nearest dependency if farther conflicting dependency has wider scope
  • [MNG-4810] - Maven cannot build if loaded in a classloader that is not backed by a real JAR file / classpath
  • [MNG-4811] - Custom Maven Plugin regression in Maven 3.x, custom ComponentConfigurator causes infinite loop
  • [MNG-4814] - Eary dependency resolution attempts for reactor projects prevent their later resolution from the reactor
  • [MNG-4818] - NPE in legacy.DefaultWagonManager.getArtifact
  • [MNG-4829] - [regression] Checksum failures aren't logged
  • [MNG-4832] - Maven 3 Regression: Missing constructor of org.codehaus.plexus.component.configurator.converters.special.ClassRealmConverter
  • [MNG-4834] - [regression] MavenProject.getParent() ignores configured repositories
  • [MNG-4836] - Incorrect recursive expression cycle errors (update plexus-interpolation)
  • [MNG-4837] - Interpolation error due to cyclic expression for one of the POM coordinates gets needlessly repeated
  • [MNG-4842] - [regression] Repositories discovered in dependency POMs override repositories configured for original resolution request of POM
  • [MNG-4845] - [regression] MavenProject.getDependencyArtifact() returns artifacts without version for dependency with version range

Improvement

  • [MNG-4452] - Metadata for snapshots should include classifier
  • [MNG-4787] - Allow class realm manager delegates to alter public part of Maven core realm
  • [MNG-4815] - (3.0-RC1) Maven Java API does not give nice error messages when improperly configured
  • [MNG-4824] - multiple failures need additional whitespace
  • [MNG-4825] - Relative path errors could be more explicit

New Feature

  • [MNG-4484] - Create a Maven API for component configuration

Task

  • [MNG-4805] - Update default plugin versions used for built-in lifecycle mappings
  • [MNG-4807] - Extend core artifact filter to exclude relocated Guice-based Plexus shim

Wish

  • [MNG-4796] - add a warning when profiles.xml is used (Maven 2) or detected (Maven 3)