Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
### Changed
- Set default release version to 17 [#62](https://github.com/cucumber/cucumber-parent/pull/62)
- Set minimum Maven to v3.9.0
- Enable Error prone with Nullaway
- Enable Checkstyle

## [4.5.0] - 2025-10-15
### Changed
Expand Down
134 changes: 121 additions & 13 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>io.cucumber</groupId>
<artifactId>cucumber-parent</artifactId>
<version>4.5.1-SNAPSHOT</version>
<version>5.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Cucumber Parent</name>
<description>Common configuration for all Cucumber modules</description>
Expand All @@ -22,13 +22,21 @@
</developers>

<properties>
<!-- Project settings-->
<project.build.outputTimestamp>1760538714</project.build.outputTimestamp>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<minimum.maven.version>3.6.0</minimum.maven.version>
<jacoco-maven-plugin.version>0.8.14</jacoco-maven-plugin.version>
<java.version>1.8</java.version>
<maven-antrun-plugin.version>3.2.0</maven-antrun-plugin.version>
<minimum.maven.version>3.9.0</minimum.maven.version>
<maven.compiler.release>17</maven.compiler.release>
<maven.compiler.parameters>true</maven.compiler.parameters>

<!-- OSGI Configuration -->
<osgi.export-contents>*;-noimport:=true</osgi.export-contents>
<osgi.import-package>*</osgi.import-package>
<osgi.bundle-symbolic-name>${project.Automatic-Module-Name}</osgi.bundle-symbolic-name>

<!-- Maven plugin versions -->
<maven-antrun-plugin.version>3.1.0</maven-antrun-plugin.version>
<maven-archetype-plugin.version>3.4.1</maven-archetype-plugin.version>
<maven-checkstyle-plugin.version>3.6.0</maven-checkstyle-plugin.version>
<maven-clean-plugin.version>3.5.0</maven-clean-plugin.version>
Expand All @@ -49,15 +57,22 @@
<maven-toolchains-plugin.version>3.2.0</maven-toolchains-plugin.version>
<maven-install-plugin.version>3.1.4</maven-install-plugin.version>
<maven-war-plugin.version>3.5.0</maven-war-plugin.version>

<!-- Other Maven plugin versions -->
<build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version>
<bnd-maven-plugin.version>7.1.0</bnd-maven-plugin.version>
<central-publishing-maven-plugin.version>0.9.0</central-publishing-maven-plugin.version>
<versions-maven-plugin.version>2.19.1</versions-maven-plugin.version>
<directory-maven-plugin.version>1.0</directory-maven-plugin.version>
<jacoco-maven-plugin.version>0.8.14</jacoco-maven-plugin.version>
<spotless-maven-plugin.version>3.0.0</spotless-maven-plugin.version>
<osgi.bundle-symbolic-name>${project.Automatic-Module-Name}</osgi.bundle-symbolic-name>
<osgi.export-contents>*;-noimport:=true</osgi.export-contents>
<osgi.import-package>*</osgi.import-package>
<versions-maven-plugin.version>2.19.1</versions-maven-plugin.version>

<!-- Maven compiler plugin versions-->
<error-prone.version>2.43.0</error-prone.version>
<nullaway.version>0.12.11</nullaway.version>

<!-- Maven Checkstyle plugin versions -->
<puppycrawl-checkstyle.version>12.1.1</puppycrawl-checkstyle.version>
</properties>

<licenses>
Expand Down Expand Up @@ -143,6 +158,84 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${puppycrawl-checkstyle.version}</version>
</dependency>
</dependencies>

<configuration>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<!-- See: https://checkstyle.org/checks.html-->
<checkstyleRules>
<module name="Checker">
<property name="severity" value="error"/>
<module name="UniqueProperties"/>
<module name="com.puppycrawl.tools.checkstyle.TreeWalker">
<module name="AvoidStarImport"/>
<module name="AnnotationUseStyle"/>
<module name="DefaultComesLast"/>
<module name="DesignForExtension"/>
<module name="EmptyBlock"/>
<module name="EmptyCatchBlock"/>
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
</module>
<module name="EmptyStatement"/>
<module name="EqualsHashCode"/>
<module name="FallThrough"/>
<module name="FinalClass"/>
<module name="HideUtilityClassConstructor"/>
<module name="InnerTypeLast"/>
<module name="InterfaceIsType"/>
<module name="InvalidJavadocPosition"/>
<module name="JavadocBlockTagLocation"/>
<module name="JavadocContentLocation"/>
<module name="JavadocLeadingAsteriskAlign"/>
<module name="JavadocMissingLeadingAsterisk"/>
<module name="JavadocMethod">
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
</module>
<module name="MissingDeprecated"/>
<module name="MutableException"/>
<module name="MissingOverride"/>
<module name="NoClone"/>
<module name="NoCodeInFile"/>
<module name="NoEnumTrailingComma"/>
<module name="NoFinalizer"/>
<module name="OneTopLevelClass"/>
<module name="OuterTypeFilename"/>
<module name="OuterTypeNumber"/>
<module name="PackageDeclaration"/>
<module name="PackageName"/>
<module name="RedundantImport"/>
<module name="RedundantModifier"/>
<module name="StringLiteralEquality"/>
<module name="UnnecessaryNullCheckWithInstanceOf"/>
<module name="UnnecessaryParentheses"/>
<module name="UnnecessarySemicolonAfterOuterTypeDeclaration"/>
<module name="UnnecessarySemicolonAfterTypeMemberDeclaration"/>
<module name="UnnecessarySemicolonInEnumeration"/>
<module name="UnnecessarySemicolonInTryWithResources"/>
<module name="UnusedImports"/>
<module name="UnusedLocalVariable"/>
<module name="NonEmptyAtclauseDescription"/>
<module name="SuppressWarningsHolder"/>
</module>
<module name="RegexpSingleline">
<property name="format" value="@author"/>
<property name="message" value="Please do not use @author tags"/>
<property name="fileExtensions" value="java,groovy,kt"/>
</module>
<module name="SuppressWarningsFilter"/>
</module>
</checkstyleRules>
</configuration>
</plugin>

<plugin>
Expand All @@ -156,9 +249,24 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
<compilerArgs>
<arg>-Werror</arg>
<arg>--should-stop=ifError=FLOW</arg>
<arg>-XDcompilePolicy=simple</arg>
<arg>-Xplugin:ErrorProne -XepOpt:NullAway:AnnotatedPackages=io.cucumber -Xep:AnnotateFormatMethod:OFF -Xep:DoNotCallSuggester:OFF -Xep:DoNotCallSuggester:OFF -Xep:InlineMeSuggester:OFF</arg>
</compilerArgs>
<annotationProcessorPaths>
<path>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${error-prone.version}</version>
</path>
<path>
<groupId>com.uber.nullaway</groupId>
<artifactId>nullaway</artifactId>
<version>${nullaway.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>

Expand Down Expand Up @@ -240,7 +348,7 @@
</archive>
</configuration>
</plugin>

<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
Expand Down