Skip to content

3.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Sep 18:59
· 4 commits to master since this release

Maven Shared Utils 3.5.0 is the first release since 3.4.2 (May 2023). The baseline is unchanged: Java 8 and Maven 3.

Most of the work deprecates utilities that now have JDK or Apache Commons equivalents, and fixes bugs in process handling, StringUtils, PathTool and Xpp3Dom.

Runtime dependency changes:

  • commons-io 2.11.0 β†’ 2.22.0
  • jansi (optional) 2.4.0 β†’ 2.4.3
  • The provided-scope jsr305 dependency is gone. slf4j-api stays at 1.7.36.

🚨 Removed

  • Commandline and Shell no longer implement Cloneable. Their clone() methods always threw, so only code that references them is affected (#365) @elharo

⚠️ Deprecated

πŸ› Bug fixes

Process handling:

  • Close process streams after exit, to work around the JDK-4311711 hang (#412) @elharo
  • CommandLineUtils: wait on every pumper in a try/finally (#399) @elharo
  • AbstractStreamHandler.setDone: call notifyAll to wake waiting threads (#405) @elharo
  • StreamPollFeeder: declare done and exception as volatile (#387) @elharo
  • Pass streamCharset to the stdout and stderr pumpers (#432) @slachiewicz
  • CmdShell: quote items that cmd.exe would otherwise interpret (#434) @slachiewicz

XML:

  • Xpp3DomBuilder.createXmlReader: stop changing system properties, which was not thread-safe (#393) @elharo
  • Xpp3Dom.removeChild(int): fix childMap corruption with duplicate names (#395) @elharo
  • Xpp3Dom.getValue(): honour the @NonNull contract (#389) @elharo
  • Xpp3DomWriter: reject a null DOM with a named NullPointerException (#426) @slachiewicz
  • PrettyPrintXMLWriter: handle a null lineIndent in the constructors (#382) @elharo

Strings, paths and files:

  • StringUtils.chompLast: fix StringIndexOutOfBoundsException when the separator is longer than the string (#401) @elharo
  • StringUtils.chopNewline(""): fix StringIndexOutOfBoundsException (#380) @elharo
  • StringUtils.leftPad and rightPad: handle an empty delimiter without ArithmeticException (#409) @elharo
  • PathTool.getRelativeFilePath: fix the Windows drive-letter regex (#384) and return an empty string instead of null for cross-drive paths (#403) @elharo
  • Os.getOsFamily: return an empty string instead of null (#425) @slachiewicz
  • Copy a symbolic link even when its target does not exist (#433) @slachiewicz

πŸ“ Documentation

  • Port the site from APT to Markdown (#420) and migrate the site descriptor to the v2 model (#430) @slachiewicz
  • Rewrite the documentation in ASD-STE100 Simplified Technical English (#418) @elharo
  • Correct the class names that deprecation notes point at (#428) @slachiewicz
  • Stop naming individual Windows versions in the CmdShell docs (#435) @elharo
  • Fix site page issues (#417), follow Oracle Javadoc conventions (#360), and clean up Javadoc (#150, #353) @elharo
  • Correct the StringUtils.abbreviate() Javadoc (#343) @phymod0

πŸ‘» Maintenance

βœ… Tests

πŸ”§ Build and infrastructure

πŸ“¦ Dependency updates

Runtime:

Build and test:

Full changelog: maven-shared-utils-3.4.2...maven-shared-utils-3.5.0