The Apache Maven team would like to announce the release of Maven 3.2.2.
Maven 3.2.2 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 PluginList for more information.
We hope you enjoy using Maven! If you have any questions, please consult:
The full list of changes can be found in our issue management system.
Parent elements can now use bounded ranges in the version specification. You can now consistently use ranges for all intra-project dependencies, of which parents are a special case but still considered a dependency of projects that inherit from them. The following is now permissible:
<project> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache</groupId> <artifactId>apache</artifactId> <version>[3.0,4.0)</version> </parent> <groupId>org.apache.maven.its.mng2199</groupId> <artifactId>valid</artifactId> <version>1</version> <packaging>pom</packaging> </project>
Note this requires Maven 3.2.2 so if you use this new feature it is encouraged you add a Maven Enforcer rule to your build to ensure the use of Maven 3.2.2+.
Multiple profile activation conditions are now ANDed instead of ORed. We believe this is the correct behaviour as prior to this change activating a profile where multiple conditions are required was impossible. If you do need OR behaviour then you can create multiple profiles with a single condition. Profiles certainly have limitations and can likely be addressed without requiring conditional syntax in the POM by using a single custom activator that employs an expression language like MVEL.
This feature helps support the pattern where many streams of development are setup with an individually sandboxed repository holding specific version of several shared components. A repository configuration might use the pattern ${nexus.baseurl}/content/groups/${stream.name} where the properties are set in settings.xml file.
Now when you use create plugins that strictly use annotation processing to generate the descriptor, you can avoid the confusing configuration previously required. This is what you typically needed to include in order to run the descriptor generator on compiled classes and avoid errors.
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>${mavenPluginPluginVersion}</version> <configuration> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> </configuration> <executions> <execution> <id>mojo-descriptor</id> <phase>process-classes</phase> <goals> <goal>descriptor</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement>
This is no longer required and can be omitted when you use version 3.2+ of the maven-plugin-plugin.
This provides a standard way creating a build time stamp, and allows better interoperability with systems that also employ UTC for timestamps like Eclipse Tycho.
The default format has been changed to standard ISO 8601 (yyyy-MM-dd'T'HH:mm:ss'Z') to make it predictable for parsers.