Release Notes – Maven 3.5.0
The Apache Maven team would like to announce the release of Maven 3.5.0.
Maven 3.5.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 PluginList for more information.
We hope you enjoy using Maven! If you have any questions, please consult:
- the web site: http://maven.apache.org/
- the maven-user mailing list: http://maven.apache.org/mailing-lists.html
- the reference documentation: http://maven.apache.org/ref/3.5.0/
Why not Maven 3.4.0?
After Maven 3.3.9 was released, the Eclipse Aether project was retired and the code base was migrated to the Apache Maven project.
The original goal for the 3.4.0 release was to replace Aether with the exact same code after migration to the Apache Maven project and then proceed with bug fixes to the resolver code as well as other areas of Maven.
The migration of the code between the two foundations took longer than expected and as a result there were other changes committed to Maven core that were outside the scope of intent for 3.4.0.
In order to refocus on the original intent for 3.4.0, the decision was taken to revert the Maven core history to the point of the 3.3.9 release and merge in the desired changes one at a time.
Because there had been a lot of communication about different features being delivered and bugs fixed in Maven 3.4.0 and the new history may not contain them in the first release, the decision was taken to forever burn the 3.4.x release line.
More detail on this decision can be read in the mailing list archive.
Reporters and Contributors of this release
Bugs:
- MNG-5963 reporter: Larry Singer
- MNG-5962 reporter/contributor: Miriam Lee
- MNG-5961 reporter: Mike Drob
- MNG-5958 reporter: Meytal Genah, contributor: Anton Tanasenko
- MNG-5852 reporter: Jeffrey Alexander
- MNG-5823 reporter: Tobias Oberlies
- MNG-5815 reporter: Peter Kjær Guldbæk
- MNG-5368 reporter: Andrew Haines
- MNG-6090 reporter: Harald Wellmann
- MNG-6173 reporter/contributor: Christoph Böhme
Improvements:
- MNG-6030 reporter: Andriy contributor: Andriy
- MNG-5934 reporter/contributor: Alex Henrie
- MNG-5883 reporter: Ben Caradoc-Davies
- MNG-3507 contributors: Jason Dillon, Sébastian Le Merdy
Many thanks to all reporters and contributors for their time and support.
Testers
The following members of the Maven community provided valuable feedback during the release process:
- Grzegorz Grzybek
- Petr Široký
- Mark Derricutt,
- Dejan Stojadinović
- Thomas Collignon
- Fred Cooke
- Raphael Ackermann
- Elliot Metsger
- Chas Honton
- Dennis Kieselhorst
Thank you for your time and feedback.
Overview about the changes
-
The most obvious change you may encounter is that the console output has colors now MNG-3507, MNG-6093.
-
The new
project.directory
special property adds support in every calculated URLs (project, SCM, site) for module directory name that does not match artifactId MNG-5878 -
The
JAVA_HOME
discovery has been reduced to simply check ifJAVA_HOME
is set or not then trying to discover viawhich java
, nothing more MNG-6003. -
The build bootstrapping support via Apache Ant has been removed. You can now only bootstrap Maven build with a previous version of Maven, but not with Ant any more MNG-5904.
-
Based on problems in using
M2_HOME
related to different Maven versions installed and to simplify things, the usage ofM2_HOME
has been removed and is not supported any more MNG-5823, MNG-5836, MNG-5607. -
Important change for windows users: The usage of
%HOME%
has been replaced with%USERPROFILE%
MNG-6001 -
Several issues have been reported and fixed related to the
mvn
script either for Unix/Linux/Cygwin/Solaris or for Windows MNG-5815, MNG-5852, MNG-5963, MNG-6022. -
In Maven 3.3.9, we have removed bindings for maven-ejb3-plugin because it does not exist. We follow-up and removed the artifact handler for
ejb3
and thepar
lifecycles MNG-6014, MNG-6017. -
In previous Maven versions, there had been a larger problem related to memory usage in case of very large reactors (200-300 modules or more) which caused failures with out of memory exceptions or the need to increase the memory settings. This problem has been fixed with MNG-6030.
-
If you have defined a property within the
.mvn/maven.config
file, it was not possible to overwrite the property via command line. This has been fixed with MNG-6078. -
If you have are using
<prerequisites>..</prerequisites>
for a non maven-plugin project, you will get a WARNING which looks like this:[INFO] Scanning for projects... [WARNING] The project org.apache.maven:maven:pom:3.5.0 uses prerequisites which is only intended for maven-plugin projects but not for non maven-plugin projects. For such purposes you should use the maven-enforcer-plugin. See https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
This will tell you to use maven-enforcer-plugin to check the version of Maven you are expecting to build your project with, instead of using
prerequisites
MNG-5297, MNG-6092. -
Replaced Eclipse Aether with Maven Resolver MNG-6110, MNG-6140.
-
Using of CI friendly versions via
${revision}
,${sha1}
and/or${changelist}
has been fixed MNG-6057, MNG-6090 and MNG-5895. It is very important to know if you are using the previously named properties for a version in your pom you have to use flatten-maven-plugin if you like to do anmvn install
ormvn deploy
more details can be found at Maven CI Friendly Versions.
Improvements
The full list of changes as well as detailed descriptions of same can be found in our issue management system.
Bugs
- MNG-5297 - Site should tell ‘prerequisites.maven is deprecated’
- MNG-5368 - UnsupportedOperationException thrown when version range is not correct in dependencyManagement definitions
- MNG-5629 - ClosedChannelException from DefaultUpdateCheckManager.read
- MNG-5815 - “mvn.cmd” does not indicate failure properly when using “&&”
- MNG-5823 - mvnDebug doesn't work with
M2_HOME
with spaces - missing quotes - MNG-5829 - mvn shell script fails with syntax error on Solaris 10
- MNG-5836 - logging config is overridden by
$M2_HOME/lib/ext/*.jar
- MNG-5852 - mvn shell script invokes
/bin/sh
but requires Bash functions - MNG-5895 - Problem with CI friendly usage of `${..}`` which is already defined via property in pom file.
- MNG-5958 -
java.lang.String
cannot be cast toorg.apache.maven.lifecycle.mapping.LifecyclePhase
- MNG-5961 - Maven possibly not aware of log4j2
- MNG-5962 -
mvn.cmd
fails when the current directory has spaces in between - MNG-5963 -
mvn.cmd
does not return ERROR_CODE - MNG-6022 -
mvn.cmd
fails if directory contains an ampersand (&
) - MNG-6053 - Unsafe System Properties copy in
MavenRepositorySystemUtils
, causing NPEs - MNG-6057 - Problem with CI friendly usage of `${..} reactor order is changed
- MNG-6090 - CI friendly properties break submodule builds
- MNG-6105 -
properties.internal.SystemProperties.addSystemProperties()
is not really thread-safe - MNG-6109 -
PluginDescriptor
doesn't read since value of parameter - MNG-6117 -
${session.parallel}
not correctly set - MNG-6144 -
DefaultWagonManagerTest#testGetMissingJarForced()
passed incorrect value - MNG-6166 -
mvn dependency:go-offline
fails due to missing transitive dependencyjdom:jdom:jar:1.1
- MNG-6168 - Fix unclosed streams
- MNG-6170 - NPE in cases using Multithreaded
-T X versions:set -DnewVersion=1.0-SNAPSHOT
- MNG-6171 - REGRESSION: WARNING about usage of a non threadsafe marked plugin is not showed anymore
- MNG-6172 - Precedence of command-line system property options has changed
- MNG-6173 -
MavenSession.getAllProjects()
should return all projects in the reactor - MNG-6176 - Javadoc errors prevent release with Java 8
- MNG-6177 - The
--file
command line option of the Windows and Unix launchers does not work for directory names like “Spaces & Special Char
” - MNG-6180 - groupId has plain color when goal fails
- MNG-6181 - HttpClient produces a lot of noise at debug loglevel
- MNG-6183 - Dependency management debug message corrections.
- MNG-6190 - maven-resolver-provider's
DefaultArtifactDescriptorReader
has mismatched constructor and initService methods - MNG-6191 -
mvn -f
complains about illegalreadlink
option under macOS - MNG-6192 - distribution zip file has unordered entries
- MNG-6195 - Use consistent quoting forms in
mvn
launcher script - MNG-6198 -
mvn
script fails to locate.mvn
directory whenpom.xml
location specified with-f
Dependency upgrade
Improvements
- MNG-5579 - Unify error output/check logic from shell and batch scripts
- MNG-5607 - Don't use
M2_HOME
inmvn
shell/command scripts anymore - MNG-5883 - Silence unnecessary legacy local repository warning
- MNG-5889 -
.mvn
directory should be picked when using--file
- MNG-5904 - Remove the whole Ant build
- MNG-5931 - Fixing documentation
- MNG-5934 - String handling issues identified by PMD
- MNG-5946 - Fix links etc. in
README.txt
which is part of the delivery - MNG-5968 - Default plugin version updates
- MNG-5975 - Use Java 7's
SimpleDateFormat
inCLIReportingUtils#formatTimestamp
- MNG-5977 - Improve output readability of our
MavenTransferListener
implementations - MNG-5993 - Confusing error message in case of missing/empty
artifactId
andversion
inpluginManagement
- MNG-6001 - Replace
%HOME%
with%USERPROFILE%
inmvn.cmd
- MNG-6003 - Drastically reduce
JAVA_HOME
discovery code - MNG-6014 - Removing ArtifactHandler for
ejb3
lifecycle - MNG-6017 - Removing ArtifactHandler for
par
lifecycle - MNG-6030 -
ReactorModelCache
not used effectively after maven version 3.0.5 which cause a large memory footprint - MNG-6032 - WARNING during build based on absolute path in assembly-descriptor.
- MNG-6068 - Document default scope compile in pom XSD and reference documentation
- MNG-6078 - Can't overwrite properties which have been defined in
.mvn/maven.config
- MNG-6081 - Log refactoring - Method Invocation Replaced By Variable
- MNG-6102 - Introduce
${maven.conf}
inm2.conf
- MNG-6115 - Add Jansi native library search path to our start scripts to avoid extraction to temp file on each run
- MNG-6145 - Remove non-existent m2 include in
component.xml
- MNG-6146 - Several small stylistic and spelling improvements to code and documentation
- MNG-6147 - `MetadataResolutionResult#getGraph()`` contains duplicate if clause
- MNG-6150 - Javadoc improvements for 3.5.0
- MNG-6163 - Introduce
CLASSWORLDS_JAR
in shell startup scripts - MNG-6165 - Deprecate and replace incorrectly spelled public API
- MNG-6179 - Remove unused prerequisites
- MNG-6185 - Replace doclettag explanation with annotations in AbstractMojo javadoc
- MNG-6189 - WARN if maven-site-plugin configuration contains
reportPlugins
element
New Features
- MNG-3507 - ANSI color logging for improved output visibility
- MNG-5878 - add support for module name !=
artifactId
in every calculated URLs (project, SCM, site): specialproject.directory
property - MNG-6093 - create a
slf4j-simple
provider extension that supports level color rendering - MNG-6182 - ModelResolver interface enhancement: addition of
resolveModel(Dependency)
supporting version ranges
Tasks
- MNG-5954 - Remove outdated
maven-embedder/src/main/resources/META-INF/MANIFEST.MF
- MNG-6106 - Remove
maven.home
default value setter fromm2.conf
- MNG-6136 - Upgrade Maven Wagon from 2.10 to 2.12
- MNG-6137 - Clean up duplicate dependencies caused by incomplete Wagon HTTP Provider exclusions
- MNG-6138 - Remove obsolete
message_*.properties
from maven-core - MNG-6140 - update documentation's dependency graph with
resolver
+resolver-provider
+slf4j-provider
- MNG-6151 - Force Push master from
737de43e392fc15a0ce366db98d70aa18b3f6c03
- MNG-6152 - Add a
Jenkinsfile
so that builds.apache.org can use multibranch pipeline