PMD 7.16.0 released

25 July 2025


25-July-2025 - 7.16.0

The PMD team is pleased to announce PMD 7.16.0.

This is a minor release.

Table Of Contents

πŸš€ New and noteworthy

πŸš€ New: Java 25 Support

This release of PMD brings support for Java 25.

There are the following new standard language features:

And one preview language feature:

In order to analyze a project with PMD that uses these preview language features, you’ll need to enable it via the environment variable PMD_JAVA_OPTS and select the new language version 25-preview:

export PMD_JAVA_OPTS=--enable-preview
pmd check --use-version java-25-preview ...

Note: Support for Java 23 preview language features have been removed. The version β€œ23-preview” is no longer available.

New: CPD support for CSS

CPD now supports CSS (Cascading Style Sheets), a language for describing the rendering of structured documents (such as HTML) on screen, on paper etc.
It is shipped with the new module pmd-css.

✨ New Rules

  • Two new rules have been added to Java’s Error Prone category: ReplaceJavaUtilCalendar and ReplaceJavaUtilDate. These rules help to migrate away from old Java APIs around java.util.Calendar and java.util.Date. It is recommended to use the modern java.time API instead, which is available since Java 8.

πŸ› Fixed Issues

  • core
    • #4328: [ci] Improve Github Actions Workflows
    • #5597: [core] POM Incompatibility with Maven 4
  • java
    • #5344: [java] IllegalArgumentException: Invalid type reference for method or ctor type annotation: 16
    • #5478: [java] Support Java 25
  • java-codestyle
    • #5892: [java] ShortVariable false positive for java 22 unnamed variable _
  • java-design
    • #5858: [java] FinalFieldCouldBeStatic false positive for array initializers
  • java-errorprone
    • #2862: [java] New Rules: Avoid java.util.Date and Calendar classes

🚨 API Changes

Experimental APIs that are now considered stable

✨ Merged pull requests

πŸ“¦ Dependency updates

  • #5857: Bump PMD from 7.14.0 to 7.15.0
  • #5861: Bump scalameta.version from 4.13.7 to 4.13.8
  • #5862: Bump com.puppycrawl.tools:checkstyle from 10.25.1 to 10.26.1
  • #5863: Bump org.apache.maven.plugins:maven-pmd-plugin from 3.26.0 to 3.27.0
  • #5864: Bump kotlin.version from 1.9.24 to 2.2.0
  • #5865: Bump org.junit:junit-bom from 5.13.1 to 5.13.2
  • #5866: Bump org.jsoup:jsoup from 1.20.1 to 1.21.1
  • #5884: Bump org.junit:junit-bom from 5.13.2 to 5.13.3
  • #5885: Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.7 to 3.2.8
  • #5886: Bump org.checkerframework:checker-qual from 3.49.4 to 3.49.5
  • #5889: Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.5.0 to 3.6.0
  • #5900: Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0
  • #5901: Bump io.github.apex-dev-tools:apex-parser from 4.4.0 to 4.4.1
  • #5902: Bump log4j.version from 2.25.0 to 2.25.1
  • #5910: Bump maven from 3.9.10 to 3.9.11
  • #5921: Bump build-tools from 32 to 33
  • #5926: chore(deps): bump org.apache.maven.plugins:maven-enforcer-plugin from 3.6.0 to 3.6.1
  • #5927: chore(deps): bump ostruct from 0.6.2 to 0.6.3 in /.ci/files in the all-gems group across 1 directory
  • #5928: chore(deps): bump marocchino/sticky-pull-request-comment from 2.9.3 to 2.9.4 in the all-actions group
  • #5929: chore(deps): Update gems

πŸ“ˆ Stats

  • 100 commits
  • 21 closed tickets & PRs
  • Days since last release: 27