Release Notes – Maven 3.5.3

The Apache Maven team would like to announce the release of Maven 3.5.3

Maven 3.5.3 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:

Reporters and Contributors of this release

We really value the contributions of these non committers, so this section is focused on those individuals. Descriptions of the issues fixed can be found at the end of these release notes.

Bugs:

Improvements:

Many thanks to all reporters and contributors for their time and support.

Preliminary Testers

Thank you also for your time and feedback.

Known Issues

One new issue was identified during the release testing. This issue affects Windows users. When running Maven with parallel threads, i.e. the -T command line option, Maven may output spurious ANSI escapes such as [0m [0m MNG-6372

Overview about the changes

  • Issues have been fixed related to colorizations like to clean up the situation while interrupting the build process MNG-6188 and some issues related to Git Bash / Cygwin have been fixed MNG-6282 and the new options -Dstyle.color MNG-6296 has been fixed.

  • The handling CRLF in jvm.config file has been fixed MNG-6255.

  • The wrong usage of the CI friendly version was not correctly identified which has been improved MNG-6305.

  • Wrong encoding of non-ascii filenames has been fixed MNG-6320.

  • Deadlock in dependency resolution has been fixed MNG-6323.

  • A regression related to parents relativePath verification has been fixed MNG-6330.

So now some more interesting things about new (small) features:

  • The log output contains now some progress informations related to the number of modules which looks like this MNG-6302:

    [INFO] Building parent 5.0.1-SNAPSHOT                                     [1/9]
    

    The number 1 is the current number which is being built where the 9 in this case is the number of modules which have to be built overall. So we are in module 1 of 9.

    Furthermore the information about the packaging type and the groupId/artifactId are now being shown during the build like the following MNG-6308:

    [INFO] ------------------< com.soebes.examples.j2ee:parent >-------------------
    [INFO] Building parent 5.0.1-SNAPSHOT                                     [1/9]
    [INFO] --------------------------------[ pom ]---------------------------------
    [INFO]
    

    And finally we have added the version of the modules or the reactor at the end of the build MNG-6352:

    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO]
    [INFO] parent 5.0.1-SNAPSHOT .............................. SUCCESS [  0.238 s]
    [INFO] domain ............................................. SUCCESS [  0.014 s]
    [INFO] service-client ..................................... SUCCESS [  0.008 s]
    [INFO] webgui ............................................. SUCCESS [  0.010 s]
    [INFO] service ............................................ SUCCESS [  0.007 s]
    [INFO] app ................................................ SUCCESS [  0.005 s]
    [INFO] appasm ............................................. SUCCESS [  0.005 s]
    [INFO] shade .............................................. SUCCESS [  0.006 s]
    [INFO] assembly 5.0.1-SNAPSHOT ............................ SUCCESS [  0.005 s]
    [INFO] ------------------------------------------------------------------------
    

    This can be helpful if you have a large number of modules to get the information about the version being built. This meant in the past to scroll up to the last module and look there for the version. Now this can simply being seen at the end of build. If you have a multi module build where the number is the same for all modules it will be given only on the first line and the last line. If you have an aggregator build the version will be printed out for each project.

  • One more thing has been optimized. We have removed the System.gc() call at the end of the build because this can cause costs for example on AWS systems related to the time taken to run Garbage Collection which is not really necessary MNG-6340. This means also the resulting output will change a little bit like this:

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 6.111 s
    [INFO] Finished at: 2018-02-25T15:34:10+01:00
    [INFO] ------------------------------------------------------------------------
    

    So there is no line anymore telling you about memory stuff.

  • If you have used the deprecated version markers like RELEASE or LATEST this will now produce a WARNING during the build MNG-6342.

The detailed issue list

Bugs:

  • MNG-6188 - Console color not properly reset when interrupting build process
  • MNG-6255 - Maven script cannot parse jvm.config with CRLF
  • MNG-6282 - Console output has no colors in shell (both Git Bash and Cygwin) (regression in Jansi 1.16 / Maven 3.5.1)
  • MNG-6296 - New option -Dstyle.color is not working
  • MNG-6298 - 3.5.2: ClassNotFoundException: javax.annotation.security.RolesAllowed
  • MNG-6300 - Multi module release creates empty directories in war file instead of jars
  • MNG-6305 - Validation of CI friendly version incorrect
  • MNG-6320 - Apparently wrong encoding of non-ascii java class filename in error messages in the maven log
  • MNG-6323 - Deadlock in multithreaded dependency resolution
  • MNG-6330 - (regression) Parents relativePath not verified anymore

New Feature

  • MNG-6302 - Provide some “progress” hints

Improvements

  • MNG-5992 - Git passwords are exposed as the Super POM still uses Maven Release Plugin 2.3.2
  • MNG-6306 - Replace use of Guava in maven-resolver-provider with a lighter weight alternative
  • MNG-6308 - display packaging & groupId:artifactId when building a module
  • MNG-6332 - Cleaned up mvn.cmd Script
  • MNG-6340 - (Performance) To make System.gc() call configurable in target summary code
  • MNG-6342 - Emit a WARNING about LATEST/RELEASE in parent
  • MNG-6352 - Printout version information at the end of the build

Task

  • MNG-6331 - Remove maven-bundle-pugin from build pluginManagement

Dependency upgrade

  • MNG-6312 - Update Maven Wagon dependency
  • MNG-6335 - Update test framework Mockito from 1.10 to 2.12
  • MNG-6353 - Upgrade maven-shared-utils to 3.2.1

The full list of changes can be found in our issue management system.

Complete Release Notes

See complete release notes for all versions