Maven 2.1.0

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

Maven 2.1.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.

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:

2.1.0 Release Notes

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

Changes that may affect existing builds.

  • MNG-3600 - The <server> element in settings.xml no longer specifies a default value for file and directory modes on remotely deployed files. Please refer to the Settings guides for how to configure this appropriately for your deployment environment.
  • MNG-3475 - neither the script source directory nor the reporting output directory were aligned to the base directory. While this was a bug, if you used an expression such as ${basedir}/${project.reporting.outputDirectory} then where this would of worked in Maven 2.0.10, it will have two copies of the project base directory in Maven 2.1.0+. You should remove the leading ${basedir} from the expression - however note that in some cases this will cause the build to be incompatible with earlier versions of Maven.
  • MNG-3940 - While environment variables are case-insensitive on Windows, Maven internally stores them in a Properties collection. For the time being, the names of environment variables are normalized to all upper-case when Maven executes on Windows, thereby at least partly abstracting from different character casing of the original variable name. Hence, ${env.PATH} will now be reliably resolved on Windows. However, POMs that previously used lower-case or mixed-case variable names like ${env.ProgramFiles} will need to be updated.
  • MNG-4056 - Dependencies specified with a classifier of sources and type of jar are correctly considered source JARs and no longer added to the classpath. This is known to affect the GWT plugin

Noteworthy Changes and improvements

  • MNG-553 - Secure Storage of Server Passwords
  • MNG-3760 - ${project.baseUri} has been added as a valid expression in the POM, and is a valid URI equivalent of ${basedir}
  • MNG-2576 - Additional switches to the command line for alternate reactor behavior: --resume-from, --also-make, and --also-make-dependents.
  • MNG-3379 - Parallel resolution of dependencies now occurs, with the default number of concurrent of threads set to 5. A configuration option -Dmaven.artifact.threads can be used to change the number of threads.

Complete list of issues fixed in 2.1.0

Bug
  • [MNG-1349] - openssl checksums are not accepted by maven
  • [MNG-1585] - debug logging from wagon not shown in debug mode
  • [MNG-1992] - CLI -D should override properties in settings.xml
  • [MNG-1999] - Reporting inheritance does not work properly
  • [MNG-2432] - Apache and Mojo plugins take precendence over plugins in the pom.
  • [MNG-2433] - Maven looks for snapshots in offline mode
  • [MNG-2605] - Profiles in profiles.xml are active by default
  • [MNG-2668] - Plugin dependencies should be considered when the reactor creates the build order list
  • [MNG-2690] - DefaultPluginManager.getConfiguredMojo() doesn't handle NoClassDefFoundError correctly
  • [MNG-2695] - -o makes build fail for snapshot plugins
  • [MNG-2720] - Multiproject dependencies not accurate for project.compileClasspathElements when run from root project
  • [MNG-3023] - Reactor projects should be included in dependency resolution
  • [MNG-3057] - properties not expanded in generated POMs when building A/B/C nested projects
  • [MNG-3139] - The skin does not exist: Unable to determine the release version
  • [MNG-3217] - a plugin's dependencies can influence other plugins in a build
  • [MNG-3228] - Maven profile activation does not work when profile is defined in inherited 'parent' pom
  • [MNG-3271] - <excludeDefaults> does not seem to work
  • [MNG-3284] - Cached plugins are used, even when the specifically declared
  • [MNG-3314] - offline build not running, when having SNAPSHOT dependencies
  • [MNG-3621] - site url inheritance broken for UNC paths
  • [MNG-3628] - When running offline, snapshot artifcats cannot be resolved even if they have previously be dowloaded from a repository
  • [MNG-3641] - Lack of error checks on profiles
  • [MNG-3645] - Maven doesn't do strict model validation for POMs in the current reactor
  • [MNG-3719] - [regression] plugin execution ordering no longer POM ordered in 2.0.9
  • [MNG-3757] - Setting M2_HOME to nothing and running ant delets contents of the current folder
  • [MNG-3769] - [regression] Excluding relocated transitive dependencies does not work
  • [MNG-3776] - Namespace misspelled in settings.xml
  • [MNG-3808] - Execution order of report plugins is arbitrary if inheritance is involved
  • [MNG-3810] - [regression] Null Pointer Exception when Activation Profile Property is Empty
  • [MNG-3811] - Report plugins don't inherit configuration
  • [MNG-3899] - Inheritance does not merge extensions with same gid and aid
  • [MNG-3906] - Project-level plugin dependencies are in random order after merging
  • [MNG-3920] - Problem using velocity component
  • [MNG-3930] - mvn.bat doesn't handle ampersand in Windows user name properly
  • [MNG-3933] - Profiles.xml does not pickup OS family
  • [MNG-3940] - Interpolation of environment variables is not case-insensitive on Windows
  • [MNG-3948] - Remote repos defined by profiles outside of settings.xml are not used to resolve parent POMs
  • [MNG-3974] - New mirror syntax is not stopping on first match
  • [MNG-4016] - Properties with the prefix project/pom are not interpolated from the properties section
  • [MNG-4023] - Profiles from parent POM are injected multiple times if parent is part of reactor build
  • [MNG-4026] - [regression] Order of project class path does not match POM order during reactor build
  • [MNG-4032] - Test jar dependency not available for for main classes in multi module builds
  • [MNG-4043] - Resolve or rollback WebDAV wagon deployment issue where hostname is improperly extracted from URL
  • [MNG-4074] - cyclic reference with 2.1.0-RC1 that doesn't occur with 2.0.10
  • [MNG-4079] - Duplicate error messages
  • [MNG-4084] - Unnecessary Warning for an activate profile in child project
  • [MNG-4086] - [regression] Explicitly using plugin metaversions crashes plugin manager
  • [MNG-4087] - Percent encoded characters in file URLs are not decoded upon deployment
Improvement
  • [MNG-1830] - add a 'compiled on <timestamp>' label when maven 2 is invoked with --version option
  • [MNG-1957] - <jdk></jdk> clause in the activation section has to provide more complex expressions.
  • [MNG-3424] - Respect ordering of elements as given in POM
  • [MNG-3451] - Add german translation
  • [MNG-3503] - Shade MX* classes from plexus-utils
  • [MNG-3544] - Beautify debug output for mojo parameters of type array
  • [MNG-3600] - remove default settings of 664 / 775 for permissions
  • [MNG-3787] - Add plugin version to default reports
  • [MNG-3794] - Improve error logging when downloading depedencies
  • [MNG-3795] - Add example <pluginGroups> snippet to conf/settings.xml in distribution
  • [MNG-3867] - Support MAVEN_OPTS in mvnDebug script
  • [MNG-3951] - Hide drive-relative paths from plugins
  • [MNG-3971] - Provide parity in features between native ant-mojo support and antrun plugin
  • [MNG-3975] - getArtifact(Artifact artifact, List remoteRepositories) should include Exception in debug log messages.
  • [MNG-4024] - Open up CLIManager
  • [MNG-4037] - Include Java home in version information
  • [MNG-4057] - Propose checking of plugin artifact when plugin descriptor cannot be found
  • [MNG-4075] - Tone down warnings about reactor dependencies that don't have an associated file
  • [MNG-4091] - Validate the plugin descriptors and improve error reporting when mismatched with artifact
  • [MNG-4092] - remove plugin listeners for minor memory improvement and to avoid scanning descriptors from dependencies of plugins
New Feature
  • [MNG-553] - Secure Storage of Server Passwords
  • [MNG-2097] - adding a phase called prepare-package
  • [MNG-3379] - Parallel resolution of artifacts
  • [MNG-3760] - Support property ${baseurl} to get RFC-compliant URL of project base directory
  • [MNG-3914] - Add CLI option to control location of global settings from command line
Task
  • [MNG-2387] - active on proxy in settings is misleading
  • [MNG-2883] - Make sure that the network isn't used for snapshots in offline mode when legacy repositories are used
  • [MNG-3602] - Schedule and release Doxia-1.1
  • [MNG-3842] - Revert temporary changes to scp wagon handling
  • [MNG-3936] - Remove m2.bat from distribution
  • [MNG-4030] - Release maven-plugin-tools 2.4.4/2.5 to enable enhanced ant-mojo support
  • [MNG-4031] - Release plexus-ant-factory 1.0-alpha-2.1 to enable enhanced ant-mojo support
  • [MNG-4046] - Update to Doxia 1.0
  • [MNG-4077] - Review log level for VersionExpressionTransformation.transformVersions()
Wish
  • [MNG-4056] - Relax resolution of active project artifacts from the reactor with regard to artifact type

Complete list of issues fixed in 2.1.0-M1

Bug
  • [MNG-2739] - Repository entries are not validated and NPE will occur
  • [MNG-2873] - Unable to find transitive dependencies when they have been relocated.
  • [MNG-3052] - Transitive Dependency not found when repo is not listed
  • [MNG-3070] - ${x} properties no longer expanded in </version> tag after 2.0.3
  • [MNG-3106] - Multiple profile activation conditions broken
  • [MNG-3368] - Printing version (-v argument) should not stop lifecycle execution
  • [MNG-3380] - MavenMetadataSource retrieves ResolutionGroup without consulting ManagedVersionMap, is problem when relocation
  • [MNG-3475] - Some directories are not basedir aligned
  • [MNG-3482] - merging managed dependencies happens before managed-dependency versions are interpolated
  • [MNG-3497] - rar, par and ejb3 archives should not be added to classpath
  • [MNG-3498] - StringIndexOutOfBounds -1 during path translation while reading pom.xml
  • [MNG-3527] - profile deactivation has no affect
  • [MNG-3535] - Valid properties which look self referential fail to resolve
  • [MNG-3536] - REGRESSION: pom.build.sourceDirectory in Maven 2.0.9: it doesn't work anymore
  • [MNG-3545] - Option -P-profile overridden if profile is activebyDefault
  • [MNG-3581] - stage:copy ClassCastException with maven 2.0.9
  • [MNG-3584] - possible new memory leak in Maven 2.0.9
  • [MNG-3585] - nonProxyHosts separator is wrong in the default settings.xml
  • [MNG-3599] - webdav does not set http-proxy correctly
  • [MNG-3622] - upgrade to wagon 1.0-beta-4
  • [MNG-3639] - Ant 1.7.0 Task not found after upgrading from Maven 2.0.8 to 2.0.9
  • [MNG-3642] - back-propagation of resources doesn't handle multiple resources with the same directory
  • [MNG-3651] - mvn.bat returns an incorrect error code
  • [MNG-3654] - [regression] unable to build ServiceMix 3 - IndexOutOfBoundsException in mergeDeterministicBuildElements
  • [MNG-3662] - Model interpolation crashes if property resolves to value with ampersand
  • [MNG-3667] - Dependencies resolution is wrong in some cases (xfire-core:1.2.6 for example)
  • [MNG-3671] - plugin-level dependencies in POMs are not interpolated at correct time
  • [MNG-3679] - <execution><id>${some.custom.var}</id> ... broke
  • [MNG-3680] - POM validation fails on projects in central repo starting with 2.0.10 RCs
  • [MNG-3684] - Injection of Build instance as report parameter results in uninterpolated values for build.directory, etc.
  • [MNG-3693] - Updating project POM via project.setFile(..) changes project basedir, and project classpath when used as a dependency in a reactor
  • [MNG-3694] - plugin parameters injecting ${project.compileSourceRoots} get uninterpolated source directories
  • [MNG-3697] - NPE at DefaultPluginManager line 700 (from Hudson CI)
  • [MNG-3701] - ClassCastException when building settings.xml with profiles that have activeByDefault set
  • [MNG-3703] - ExecutionProject contains relative paths in compileSourceRoots
  • [MNG-3704] - NPE in DefaultLIfecycleExecutor when run from within Hudson builds
  • [MNG-3705] - Expression: ${executedProject} doesn't work in reports
  • [MNG-3710] - ModelUtils.cloneModel() and .cloneBuild() pollute existing Plugin instances with merged information
  • [MNG-3716] - Aggregators that fork lifecycles don't have execution projects setup for all projects in the reactor.
  • [MNG-3717] - Maven prompts for a password when one is provided over SSH in some circumstances
  • [MNG-3718] - Build timestamp interpolator gives hours in AM/PM instead of 24-hour time
  • [MNG-3722] - Fail to run CXF code generation with 2.0.10 RC
  • [MNG-3723] - ${project.basedir} is not interpolated
  • [MNG-3724] - ExecutionProject not getting updated compile/test-compile/script roots in RC10
  • [MNG-3729] - Maven 2.0.10-RC10 fails with NPE on assembly:assembly
  • [MNG-3740] - Plugin builds that reference earlier versions of themselves in the <plugins> section of the POM result in StackOverflowError in 2.1.0-M1-RC12
  • [MNG-3741] - CLONE maven-plugin-tools-api requires relative script root paths
  • [MNG-3743] - pluginManagement not consulted when building from lifecycle forked via javdoc reports
  • [MNG-3746] - POM properties do not override default system properties during POM interpolation
  • [MNG-3747] - relative build paths are not path-translated when using prefixed expressions (eg. project.build.directory) in plugin configurations
  • [MNG-3748] - settings builder doesn't use strict mode in xml parser
  • [MNG-3885] - Modules of Maven projects are deployed with Timestamp during reactor build when uniqueVersion is set to false in parent profile
  • [MNG-3924] - FATAL ERROR if a variable contains &lt; or &gt;
Improvement
  • [MNG-2609] - Mention 'activeByDefault' in the "Introduction to Build Profiles" guide
  • [MNG-3268] - Command line doesn't handle multiple -P correctly
  • [MNG-3478] - Use expression ${project.build.directory} instead of hard-coding "target" in super POM
  • [MNG-3509] - Make "mvn -v" output locale/encoding
  • [MNG-3511] - Review fix for MNG-2166
  • [MNG-3520] - Korean message resource
  • [MNG-3571] - Allow use of ! when deactivating profiles
  • [MNG-3652] - set a user agent for Maven HTTP requests
  • [MNG-3673] - Upgrade plugin versions in super-POM where appropriate
  • [MNG-3698] - Improve performance regarding concrete/dynamic build transitions surrounding plugin executions and report instantiations
  • [MNG-3709] - Be sure source distro has the same name as the binary distro in the repository.
New Feature
  • [MNG-2562] - expose current time as a property for POM interpolation
  • [MNG-2576] - Make Like Reactor Mode
  • [MNG-3219] - Create a CLIRR/JarDiff setup for 2.0.x and 3.0.x
  • [MNG-3675] - Add accessor for lifecycles list to LifecycleExecutor/DefaultLifecycleExecutor