3.4.0 got scrapped

Apache Maven 3.5.0 is here: Nothing to see in 3.4.0, move along

Gabriela Motroc
Apache Maven 3.5.0
Tower game image via Shutterstock

It’s Angular all over again. After Maven 3.3.9 was released, users expected to see 3.4.0 but instead, 3.5.0 came along. Why did 3.4.0 get the boot and what’s new in 3.5.0? Let’s find out.

Stephen Connolly, Elite Developer and Architect at CloudBees and member, committer and PMC at The Apache Foundation, announced in a message to the Maven mailing list that Maven 3.4.0 has been scrapped and the next release [Apache Maven 3.5.0] is now available.

We already knew that 3.4.0 was going to be scrapped; Connolly announced the change in early 2017 when he explained why the next release would be 3.5.0 and not 3.4.0.

“The original plans for Maven 3.4.0 were that it should consist of effectively a no-op drop in replacement of Eclipse’s Aether project (which has been retired at the Eclipse Foundation) for the migrated code now known as Apache’s Maven Resolver. Additionally, the plans called for some other orthogonal changes around logging colourization and some launcher script bug fixes.

Due to some misunderstanding, there were quite a number of other changes introduced which could be seen as modifying how dependencies and classpaths get built. While we want to get these changes released as bug fixes, it is also important to us to provide a clear progression of development. Some of the bugs we want to fix require changes to the resolver code and the developers feel it is important to mark the baseline of the migrated code such that it should be a drop-in replacement for 3.3.9.”

Apache Maven 3.5.0 overview

The most important changes in Maven 3.5.0 are the following:

  • ANSI colors added to the console output
  • Fix various bugs in mvn scripts regarding spaces, quotations, special
    characters, etc. also in combination with .mvn/ -files
  • Switch from Eclipse Aether to Maven Artifact Resolver

Connolly explained that the original goal for the release that got scrapped 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.”

Bug fixes

[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
[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 to org.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 dependency jdom: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 illegal readlink 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 when pom location specified with -f

Dependency upgrades

[MNG-5967] – Dependency updates
[MNG-6110] – Upgrade Aether to Maven Resolver


[MNG-5579] – Unify error output/check logic from shell and batch scripts
[MNG-5607] – Don’t use M2_HOME in mvn 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 in CLIReportingUtils# formatTimestamp
[MNG-5977] – Improve output readability of our MavenTransferListener implementations
[MNG-5993] – Confusing error message in case of missing/empty artifactId and version in pluginManagement
[MNG-6001] – Replace %HOME% with %USERPROFILE% in mvn.cmd
[MNG-6003] – Drastically reduce JAVA_HOME discovery code
[MNG-6014] – Removing ArtifactHandler for ejb3
[MNG-6017] – Removing ArtifactHandler for par LifeCycle
[MNG-6030] – ReactorModelCache do 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} in m2.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): special 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


[MNG-5954] – Remove outdated maven-embedder/src/main/ resources/META-INF/MANIFEST.MF
[MNG-6106] – Remove maven.home default value setter from m2.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 form maven-core
[MNG-6140] – update documentation’s dependency graph with resolver + resolver-provider + slf4j-provider
[MNG-6151] – Force Push master from 737de43e392fc15a0ce366db98d70a a18b3f6c03
[MNG-6152] – Add a Jenkinsfile so that can use multibranch pipeline


[MNG-2199] – Support version ranges in parent elements
[MNG-6088] – after forked execution success, add an empty line
[MNG-6092] – warn if prerequisites.maven is used for non-plugin

The next release will either be called 3.5.1 or 3.6.0 depending on the agreed content, according to Connolly.

Gabriela Motroc
Gabriela Motroc was editor of and JAX Magazine. Before working at Software & Support Media Group, she studied International Communication Management at the Hague University of Applied Sciences.

Inline Feedbacks
View all comments