Skip to content

pmd/pmd-designer

Repository files navigation

PMD Rule Designer

Build Status Maven Central Join the chat

The Rule Designer is a graphical tool that helps PMD users develop their custom rules. Main features:

testing-designer

Installation

The designer is part of PMD's binary distributions. To install a distribution, see the documentation page about installing PMD.

The app needs either Oracle Java 8 (which includes JavaFX) or OpenJDK 11+ and a separately installed OpenJFX distribution. Visit JavaFX - Gluon to download an SDK distribution, extract it, and set the JAVAFX_HOME environment variable.

If the bin directory of your PMD distribution is on your shell's path, then you can launch the app with

  • pmd designer on Linux/ OSX
  • pmd.bat designer on Windows

Alternatively, you can launch the program "from source" with Maven.

  • $ ./mvnw -Prunning exec:java will launch the program after compiling it, using the JavaFX distribution of your system
  • $ ./mvnw -Prunning,with-javafx exec:java will also add JavaFX dependencies on your classpath. You can change the version of those dependencies with eg -Dopenjfx.version=21.0.2 for OpenJFX 21. See the list of available versions here.

Updating

The latest version of the designer currently works with PMD 7.0.0 and above. You can simply replace pmd-designer-7.X.Y.jar with the latest build in the installation folder of your PMD distribution.

Usage

Building from source/ contributing

See CONTRIBUTING.md for instructions to build the project from source and setup your IDE.

Building a runnable JAR

You can package a runnable jar containing the PMD dependencies with maven. For now the only option is to build a jar that contains pmd-core and pmd-java:

./mvnw clean package -Dfat-java -Dpmd.core.version=7.0.0-SNAPSHOT

The pmd.core.version property selects the version of pmd-core and pmd-java that will be included. The built jar can then be found in your target directory. Such a jar cannot be used in a PMD distribution and must be used in a standalone fashion, otherwise classpath conflicts may arise. You can additionally enable the profile with-javafx to include openjfx as well.

You should never run the install goal with the -Dfat-java property! This would install the fat jar in your local repo and may cause dependency conflicts.