Execution is via
mvn checkstyle:checkstyle to only have the report
mvn checkstyle:checkfor failing if errors exist
The plugin to add to the pom
<build>
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<configLocation>checkstyle.xml</configLocation>
</configuration>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>10.9.3</version>
</dependency>
</dependencies>
</plugin>
[...]
</plugins>
</build>
Example Checkstyle Configuration, needs to be at the root of the project
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">
<!--
This configuration file was written by the eclipse-cs plugin configuration editor
-->
<!--
Checkstyle-Configuration: metavonics
Description: none
-->
<module name="Checker">
<property name="severity" value="warning"/>
<module name="TreeWalker">
<module name="RegexpSinglelineJava">
<property name="severity" value="error"/>
<property name="format" value="^\t* "/>
<property name="message" value="Indent must use tab characters"/>
<property name="ignoreComments" value="true"/>
</module>
<module name="SuppressWarningsHolder"/>
<module name="MissingOverride">
<property name="severity" value="error"/>
</module>
<module name="Indentation">
<property name="severity" value="error"/>
<property name="basicOffset" value="8"/>
<property name="caseIndent" value="0"/>
<property name="throwsIndent" value="8"/>
<property name="arrayInitIndent" value="8"/>
<property name="lineWrappingIndentation" value="8"/>
</module>
<module name="MissingJavadocType">
<property name="severity" value="error"/>
</module>
<module name="ConstantName">
<property name="severity" value="error"/>
</module>
<module name="MemberName"/>
<module name="MethodName">
<property name="severity" value="error"/>
</module>
<module name="MethodTypeParameterName">
<property name="severity" value="error"/>
</module>
<module name="ParameterName">
<property name="severity" value="error"/>
<property name="ignoreOverridden" value="true"/>
</module>
<module name="MethodLength">
<property name="severity" value="error"/>
</module>
<module name="ParameterNumber">
<property name="severity" value="error"/>
<property name="max" value="4"/>
</module>
<module name="RecordComponentNumber"/>
<module name="WhitespaceAround">
<property name="severity" value="error"/>
</module>
<module name="NeedBraces">
<property name="severity" value="error"/>
</module>
<module name="ArrayTypeStyle"/>
<module name="MethodParamPad"/>
<module name="VisibilityModifier">
<property name="protectedAllowed" value="true"/>
</module>
<module name="MultipleVariableDeclarations">
<property name="severity" value="error"/>
</module>
<module name="MissingSwitchDefault">
<property name="severity" value="error"/>
</module>
<module name="DefaultComesLast">
<property name="severity" value="error"/>
</module>
<module name="InnerAssignment">
<property name="severity" value="error"/>
</module>
<module name="MagicNumber"/>
<module name="SimplifyBooleanReturn"/>
<module name="SimplifyBooleanExpression"/>
<module name="FinalClass">
<property name="severity" value="error"/>
</module>
<module name="StringLiteralEquality">
<property name="severity" value="error"/>
</module>
<module name="HideUtilityClassConstructor"/>
<module name="FinalLocalVariable">
<property name="severity" value="error"/>
</module>
<module name="ParameterAssignment">
<property name="severity" value="error"/>
</module>
<module name="LocalVariableName"/>
<module name="StaticVariableName"/>
<module name="LocalFinalVariableName"/>
<module name="ModifiedControlVariable">
<property name="severity" value="error"/>
</module>
<module name="EmptyCatchBlock">
<property name="severity" value="error"/>
</module>
<module name="IllegalCatch"/>
<module name="OneStatementPerLine"/>
<module name="EmptyBlock"/>
<module name="NestedForDepth">
<property name="max" value="2"/>
</module>
<module name="NestedIfDepth">
<property name="severity" value="error"/>
<property name="max" value="3"/>
</module>
<module name="NestedTryDepth">
<property name="max" value="3"/>
</module>
<module name="CyclomaticComplexity"/>
<module name="NestedForDepth">
<property name="severity" value="error"/>
<property name="max" value="3"/>
</module>
<module name="AnnotationLocation"/>
<module name="SuppressionCommentFilter"/>
<module name="MissingDeprecated"/>
<module name="AvoidDoubleBraceInitialization"/>
<module name="EmptyStatement"/>
<module name="EqualsAvoidNull"/>
<module name="FinalLocalVariable"/>
<module name="FinalLocalVariable">
<property name="tokens" value="VARIABLE_DEF,PARAMETER_DEF"/>
</module>
<module name="IllegalCatch"/>
<module name="MultipleStringLiterals">
<property name="allowedDuplicates" value="2"/>
</module>
<module name="NestedForDepth"/>
<module name="PackageDeclaration"/>
<module name="Indentation">
<property name="basicOffset" value="8"/>
<property name="caseIndent" value="0"/>
<property name="throwsIndent" value="8"/>
<property name="arrayInitIndent" value="8"/>
<property name="lineWrappingIndentation" value="8"/>
</module>
</module>
<module name="FileLength">
<property name="severity" value="error"/>
</module>
<module name="LineLength">
<property name="max" value="160"/>
</module>
<module name="FileTabCharacter">
<property name="severity" value="ignore"/>
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="error"/>
</module>
<module name="SuppressWarningsFilter"/>
</module>