<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-extension-bundles</artifactId>
        <version>2.8.0</version>
    </parent>

    <groupId>de.cuioss.nifi</groupId>
    <artifactId>nifi-extensions</artifactId>
    <version>0.2.0</version>
    <packaging>pom</packaging>
    <name>Apache Nifi extensions</name>
    <description>Some extensions for apache nifi</description>

    <url>https://github.com/cuioss/nifi-extensions/</url>
    <organization>
        <url>https://github.com/cuioss</url>
        <name>CUI-OpenSource-Software</name>
    </organization>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>Oliver Wolff</name>
            <url>https://github.com/cuioss</url>
            <roles>
                <role>owner</role>
                <role>developer</role>
            </roles>
        </developer>
    </developers>

    <modules>
        <module>nifi-cuioss-api</module>
        <module>nifi-cuioss-api-nar</module>
        <module>nifi-cuioss-common</module>
        <module>nifi-cuioss-processors</module>
        <module>nifi-cuioss-rest-processors</module>
        <module>nifi-cuioss-ui</module>
        <module>nifi-cuioss-nar</module>
        <module>integration-testing</module>
        <module>e-2-e-playwright</module>
    </modules>
    <scm>
        <url>https://github.com/cuioss/nifi-extensions/</url>
        <connection>
            scm:git:https://github.com/cuioss/nifi-extensions.git
        </connection>
        <developerConnection>
            scm:git:https://github.com/cuioss/nifi-extensions/
        </developerConnection>
        <tag>nifi-extensions-0.2.0</tag>
    </scm>
    <issueManagement>
        <url>https://github.com/cuioss/nifi-extensions/issues</url>
        <system>GitHub Issues</system>
    </issueManagement>

    <distributionManagement>
        <snapshotRepository>
            <id>central</id>
            <name>Maven Central Snapshots</name>
            <url>https://central.sonatype.com/repository/maven-snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>central</id>
            <name>Maven Central Releases</name>
            <url>https://central.sonatype.com/repository/maven-releases/</url>
        </repository>
        <site>
            <id>cuioss-home</id>
            <url>https://cuioss.github.io/</url>
        </site>
    </distributionManagement>
    <properties>
        <javaVersion>21</javaVersion>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <version.nifi>2.8.0</version.nifi>
        <!-- Sonar related-->
        <sonar.organization>cuioss-github</sonar.organization>
        <sonar.host.url>https://sonarcloud.io</sonar.host.url>
        <!-- Exclude e-2-e-playwright module from SonarQube analysis -->
        <sonar.exclusions>e-2-e-playwright/**</sonar.exclusions>
        <sonar.skip>false</sonar.skip>
        <!-- Integration / E2E test defaults (overridden by integration-tests profile) -->
        <skipITs>true</skipITs>
        <skipPlaywrightTests>true</skipPlaywrightTests>
        <!-- Docker deployment is separate from test execution: flow.json must be compatible
             before containers can start. Set to false in integration-tests profile when ready. -->
        <skip.docker.deployment>true</skip.docker.deployment>
        <!-- Maven Plugins -->
        <maven.compiler.plugin.version>3.14.1</maven.compiler.plugin.version>
        <maven.gpg.plugin.version>3.2.8</maven.gpg.plugin.version>
        <maven.exec.plugin.version>3.6.3</maven.exec.plugin.version>
        <central-publishing-maven-plugin.version>0.10.0</central-publishing-maven-plugin.version>
        <sonar.maven.plugin.version>5.5.0.6356</sonar.maven.plugin.version>
        <jacoco.maven.plugin.version>0.8.14</jacoco.maven.plugin.version>
        <!-- Sonatype -->

        <!-- OpenRewrite -->
        <open.rewrite.maven.plugin.version>6.30.0</open.rewrite.maven.plugin.version>
        <rewrite-testing-frameworks.version>3.27.0</rewrite-testing-frameworks.version>
        <rewrite-migrate-java.version>3.28.0</rewrite-migrate-java.version>
        <project.build.outputTimestamp>2026-03-11T12:57:38Z</project.build.outputTimestamp>

        <!-- Frontend Maven Plugin -->
        <frontend.maven.plugin.version>2.0.0</frontend.maven.plugin.version>
        <frontend.node.version>v20.19.2</frontend.node.version>
        <frontend.npm.version>10.5.0</frontend.npm.version>

        <!-- WebJars Dependencies -->
        <version.jquery>4.0.0</version.jquery>
        <version.jquery-ui>1.14.2</version.jquery-ui>


        <!-- Logging Dependencies -->
        <version.slf4j>2.0.17</version.slf4j>

        <!-- The version needs to be aligned with the one defined within the nifi boms. Otherwise, it's getting messy-->
        <version.junit.jupiter>6.0.3</version.junit.jupiter>
        <version.lombok>1.18.42</version.lombok>
        <version.parsson>1.1.7</version.parsson>
        <version.snakeyaml>2.5</version.snakeyaml>
        <version.easymock>5.6.0</version.easymock>
        <version.rest-assured>6.0.0</version.rest-assured>
        <version.hamcrest>3.0</version.hamcrest>
        <version.jakarta.json-api>2.1.3</version.jakarta.json-api>
        <version.jakarta.servlet-api>6.1.0</version.jakarta.servlet-api>
        <version.webjars.font-awesome>7.2.0</version.webjars.font-awesome>
        <!-- CUI-OSS -->
        <version.cui.test.juli.logger>2.1.2</version.cui.test.juli.logger>
        <version.cui.test.generator>3.0.2</version.cui.test.generator>
        <version.cui.test.value.objects>2.1.3</version.cui.test.value.objects>
        <version.cui.test.mockwebserver>1.5.0</version.cui.test.mockwebserver>
        <version.cui.java.tools>2.6.2</version.cui.java.tools>
        <version.cui.http>1.4.0</version.cui.http>
        <version.oauth-sheriff>0.4.1</version.oauth-sheriff>
        <version.cui.test.keycloak.integration>1.3.0</version.cui.test.keycloak.integration>
        <version.jjwt>0.13.0</version.jjwt>
        <version.jspecify>1.0.0</version.jspecify>
        <version.awaitility>4.3.0</version.awaitility>
        <version.json-schema>1.9.1</version.json-schema>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${version.lombok}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.jspecify</groupId>
                <artifactId>jspecify</artifactId>
                <version>${version.jspecify}</version>
                <scope>provided</scope>
            </dependency>
            <!-- WebJars dependencies -->
            <dependency>
                <groupId>org.webjars</groupId>
                <artifactId>jquery</artifactId>
                <version>${version.jquery}</version>
            </dependency>
            <dependency>
                <groupId>org.webjars</groupId>
                <artifactId>jquery-ui</artifactId>
                <version>${version.jquery-ui}</version>
            </dependency>
            <!-- Incoming-->
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>${version.junit.jupiter}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- Force correct junit-platform version to match junit-jupiter -->
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-commons</artifactId>
                <version>${version.junit.jupiter}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-engine</artifactId>
                <version>${version.junit.jupiter}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-utils</artifactId>
                <version>${version.nifi}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-ssl-context-service-api</artifactId>
                <version>${version.nifi}</version>
                <scope>provided</scope>
            </dependency>
            <!-- CUI-OSS -->
            <dependency>
                <groupId>de.cuioss</groupId>
                <artifactId>cui-java-tools</artifactId>
                <version>${version.cui.java.tools}</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss</groupId>
                <artifactId>cui-http</artifactId>
                <version>${version.cui.http}</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss</groupId>
                <artifactId>cui-http</artifactId>
                <version>${version.cui.http}</version>
                <classifier>generators</classifier>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss.test</groupId>
                <artifactId>cui-test-juli-logger</artifactId>
                <version>${version.cui.test.juli.logger}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss.test</groupId>
                <artifactId>cui-test-value-objects</artifactId>
                <version>${version.cui.test.value.objects}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss.test</groupId>
                <artifactId>cui-test-generator</artifactId>
                <version>${version.cui.test.generator}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss.test</groupId>
                <artifactId>cui-test-mockwebserver-junit5</artifactId>
                <version>${version.cui.test.mockwebserver}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss.sheriff.oauth</groupId>
                <artifactId>oauth-sheriff-core</artifactId>
                <version>${version.oauth-sheriff}</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss.sheriff.oauth</groupId>
                <artifactId>oauth-sheriff-core</artifactId>
                <version>${version.oauth-sheriff}</version>
                <classifier>generators</classifier>
                <scope>test</scope>
            </dependency>
            <!-- Implementation of jakarta.json-api: Used for nifi-cuioss-ui servlets/services -->
            <dependency>
                <groupId>org.eclipse.parsson</groupId>
                <artifactId>parsson</artifactId>
                <version>${version.parsson}</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>jakarta.json</groupId>
                <artifactId>jakarta.json-api</artifactId>
                <version>${version.jakarta.json-api}</version>
            </dependency>
            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymock</artifactId>
                <version>${version.easymock}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured</artifactId>
                <version>${version.rest-assured}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>json-schema-validator</artifactId>
                <version>${version.rest-assured}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.webjars</groupId>
                <artifactId>font-awesome</artifactId>
                <version>${version.webjars.font-awesome}</version>
            </dependency>
            <dependency>
                <groupId>org.awaitility</groupId>
                <artifactId>awaitility</artifactId>
                <version>${version.awaitility}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>dev.harrel</groupId>
                <artifactId>json-schema</artifactId>
                <version>${version.json-schema}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest</artifactId>
                <version>${version.hamcrest}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss.test</groupId>
                <artifactId>cui-test-keycloak-integration</artifactId>
                <version>${version.cui.test.keycloak.integration}</version>
                <scope>test</scope>
            </dependency>
            <!-- Required by oauth-sheriff-core generators for JWT token creation in tests -->
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-api</artifactId>
                <version>${version.jjwt}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-impl</artifactId>
                <version>${version.jjwt}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-jackson</artifactId>
                <version>${version.jjwt}</version>
                <scope>test</scope>
            </dependency>
            <!-- Simple implementation that is actually a bridge to juli logging. Used for test-containers slf4j -->
            <!-- Bridge jakarta-commons logging  to slf4j -->
            <!-- outgoing-->
            <dependency>
                <groupId>de.cuioss.nifi</groupId>
                <artifactId>nifi-cuioss-api</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.cuioss.nifi</groupId>
                <artifactId>nifi-cuioss-api-nar</artifactId>
                <version>${project.version}</version>
                <type>nar</type>
            </dependency>
            <dependency>
                <groupId>de.cuioss.nifi</groupId>
                <artifactId>nifi-cuioss-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.cuioss.nifi</groupId>
                <artifactId>nifi-cuioss-common</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>de.cuioss.nifi</groupId>
                <artifactId>nifi-cuioss-processors</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.cuioss.nifi</groupId>
                <artifactId>nifi-cuioss-rest-processors</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.cuioss.nifi</groupId>
                <artifactId>nifi-cuioss-ui</artifactId>
                <version>${project.version}</version>
                <type>war</type>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-standard-services-api-nar</artifactId>
                <version>${version.nifi}</version>
                <type>nar</type>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-framework-api</artifactId>
                <version>${version.nifi}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.nifi</groupId>
                <artifactId>nifi-custom-ui-utils</artifactId>
                <version>${version.nifi}</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <repositories>
        <repository>
            <id>sonatype-snapshots</id>
            <name>Sonatype Snapshot Repository</name>
            <url>https://central.sonatype.com/repository/maven-snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <build>
        <pluginManagement>
            <plugins>
                <!-- Configure maven-release-plugin for Sonatype Central publishing.
                     - releaseProfiles: activate release/javadoc profiles in inner build
                     - arguments: exclude e-2-e-playwright from reactor (npm build fails
                       in release context). Other test-only modules stay in reactor but are
                       excluded from Central bundle via excludeArtifacts. -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <releaseProfiles>release,javadoc</releaseProfiles>
                        <arguments>-pl !e-2-e-playwright</arguments>
                    </configuration>
                </plugin>
                <!-- Disable nexus-staging-maven-plugin inherited from NiFi parent POM.
                     It targets repository.apache.org which is not our deployment target.
                     We use central-publishing-maven-plugin for Sonatype Central instead. -->
                <plugin>
                    <groupId>org.sonatype.plugins</groupId>
                    <artifactId>nexus-staging-maven-plugin</artifactId>
                    <configuration>
                        <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.15.0</version>
                    <configuration>
                        <annotationProcessorPaths>
                            <annotationProcessorPath>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${version.lombok}</version>
                            </annotationProcessorPath>
                        </annotationProcessorPaths>
                        <release>21</release>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <failOnError>true</failOnError>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <configuration>
                        <gpgArguments>
                            <arg>--pinentry-mode</arg>
                            <arg>loopback</arg>
                        </gpgArguments>
                    </configuration>
                    <executions>
                        <execution>
                            <id>sign-artifacts</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.central</groupId>
                    <artifactId>central-publishing-maven-plugin</artifactId>
                    <version>${central-publishing-maven-plugin.version}</version>
                    <extensions>true</extensions>
                    <configuration>
                        <publishingServerId>central</publishingServerId>
                        <autoPublish>true</autoPublish>
                        <waitUntil>uploaded</waitUntil>
                        <excludeArtifacts>
                            <excludeArtifact>e-2-e-playwright</excludeArtifact>
                            <excludeArtifact>integration-testing</excludeArtifact>
                            <excludeArtifact>nifi-cuioss-ui</excludeArtifact>
                        </excludeArtifacts>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>${sonar.maven.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>prepare-agent</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>report</id>
                            <goals>
                                <goal>report</goal>
                            </goals>
                            <configuration>
                                <formats>
                                    <format>XML</format>
                                </formats>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.openrewrite.maven</groupId>
                    <artifactId>rewrite-maven-plugin</artifactId>
                    <version>${open.rewrite.maven.plugin.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.openrewrite.recipe</groupId>
                            <artifactId>rewrite-migrate-java</artifactId>
                            <version>${rewrite-migrate-java.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.openrewrite.recipe</groupId>
                            <artifactId>rewrite-testing-frameworks</artifactId>
                            <version>${rewrite-testing-frameworks.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <!-- Override NiFi parent enforcer to allow this project's SNAPSHOT deps -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce-maven-version</id>
                        <configuration>
                            <rules>
                                <banDuplicatePomDependencyVersions />
                                <requireSameVersions>
                                    <plugins>
                                        <plugin>org.apache.maven.plugins:maven-surefire-plugin</plugin>
                                        <plugin>org.apache.maven.plugins:maven-failsafe-plugin</plugin>
                                        <plugin>org.apache.maven.plugins:maven-surefire-report-plugin</plugin>
                                    </plugins>
                                </requireSameVersions>
                                <requireMavenVersion>
                                    <version>3.9.6</version>
                                </requireMavenVersion>
                                <requireReleaseDeps>
                                    <message>Dependencies outside of Apache NiFi must not use SNAPSHOT versions</message>
                                    <failWhenParentIsSnapshot>false</failWhenParentIsSnapshot>
                                    <excludes>
                                        <exclude>org.apache.nifi:*</exclude>
                                        <exclude>org.apache.nifi.minifi:*</exclude>
                                        <exclude>org.apache.nifi.registry:*</exclude>
                                        <!-- Allow SNAPSHOT versions for this project's modules -->
                                        <exclude>de.cuioss.nifi:*</exclude>
                                        <exclude>de.cuioss:*</exclude>
                                        <exclude>de.cuioss.jwt:*</exclude>
                                    </excludes>
                                </requireReleaseDeps>
                                <bannedDependencies>
                                    <excludes>
                                        <exclude>org.testng:testng</exclude>
                                        <exclude>org.json:json:(,20240303):compile</exclude>
                                        <exclude>c3p0:c3p0:*:*:compile</exclude>
                                        <exclude>com.google.code.findbugs:annotations:*</exclude>
                                        <exclude>org.hibernate.common:hibernate-commons-annotations:[,7.0.0]</exclude>
                                        <exclude>org.hibernate.orm:hibernate-core:*</exclude>
                                        <exclude>org.hibernate:hibernate-entitymanager:*</exclude>
                                        <exclude>com.google.code.findbugs:jsr305:[,3.0.0]:compile</exclude>
                                        <exclude>org.slf4j:slf4j-log4j12</exclude>
                                        <exclude>org.slf4j:slf4j-reload4j</exclude>
                                        <exclude>log4j:log4j:*</exclude>
                                        <exclude>org.apache.logging.log4j:log4j-core:*</exclude>
                                        <exclude>commons-logging:commons-logging:*</exclude>
                                        <exclude>xalan:xalan</exclude>
                                        <exclude>org.bouncycastle:bcprov-jdk15on</exclude>
                                        <exclude>org.bouncycastle:bcpg-jdk15on</exclude>
                                        <exclude>org.bouncycastle:bcpkix-jdk15on</exclude>
                                        <exclude>org.bouncycastle:bcutil-jdk15on</exclude>
                                        <exclude>org.bouncycastle:bcmail-jdk15on</exclude>
                                        <exclude>org.apache.sshd:*:[,2.9.1]</exclude>
                                        <exclude>org.spockframework:*</exclude>
                                        <exclude>org.apache.groovy:groovy-test</exclude>
                                    </excludes>
                                </bannedDependencies>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>sonar</id>
            <modules>
                <module>nifi-cuioss-common</module>
                <module>nifi-cuioss-processors</module>
                <module>nifi-cuioss-rest-processors</module>
                <module>nifi-cuioss-ui</module>
                <module>nifi-cuioss-nar</module>
                <module>integration-testing</module>
                <module>e-2-e-playwright</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>@{argLine} -Xms64m -Xmx1024m</argLine>
                            <redirectTestOutputToFile>true</redirectTestOutputToFile>
                            <printSummary>true</printSummary>
                            <trimStackTrace>false</trimStackTrace>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.sonarsource.scanner.maven</groupId>
                        <artifactId>sonar-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>coverage</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>prepare-agent</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>report</id>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                                <phase>test</phase>
                                <configuration>
                                    <formats>
                                        <format>XML</format>
                                        <format>HTML</format>
                                    </formats>
                                </configuration>
                            </execution>
                            <execution>
                                <id>check</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <rules>
                                        <rule>
                                            <element>BUNDLE</element>
                                            <limits>
                                                <limit>
                                                    <counter>INSTRUCTION</counter>
                                                    <value>COVEREDRATIO</value>
                                                    <minimum>0.80</minimum>
                                                </limit>
                                                <limit>
                                                    <counter>BRANCH</counter>
                                                    <value>COVEREDRATIO</value>
                                                    <minimum>0.80</minimum>
                                                </limit>
                                            </limits>
                                        </rule>
                                    </rules>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>${argLine}</argLine>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>integration-tests</id>
            <properties>
                <!-- Enable Failsafe integration tests and Playwright E2E tests -->
                <skipITs>false</skipITs>
                <skipPlaywrightTests>false</skipPlaywrightTests>
                <skip.docker.deployment>false</skip.docker.deployment>
            </properties>
        </profile>
        <profile>
            <!-- Usage: ./mvnw -Ppre-commit clean install -DskipTests -->
            <!-- Unifies all OpenRewrite modernization and preparation recipes -->
            <id>pre-commit</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.openrewrite.maven</groupId>
                        <artifactId>rewrite-maven-plugin</artifactId>
                        <configuration>
                            <activeRecipes>
                                <!-- Java Recipes -->
                                <recipe>org.openrewrite.java.AddApache2LicenseHeader</recipe>
                                <recipe>org.openrewrite.java.format.AutoFormat</recipe>
                                <recipe>org.openrewrite.java.format.NormalizeLineBreaks</recipe>
                                <recipe>org.openrewrite.java.format.RemoveTrailingWhitespace</recipe>
                                <recipe>org.openrewrite.java.migrate.UpgradeToJava21</recipe>
                                <recipe>org.openrewrite.java.migrate.util.JavaUtilAPIs</recipe>
                                <recipe>org.openrewrite.java.migrate.util.OptionalNotEmptyToIsPresent</recipe>
                                <recipe>org.openrewrite.java.migrate.util.OptionalNotPresentToIsEmpty</recipe>
                                <recipe>org.openrewrite.java.migrate.util.ReplaceStreamCollectWithToList</recipe>
                                <recipe>org.openrewrite.java.migrate.util.UseLocaleOf</recipe>
                                <recipe>org.openrewrite.java.migrate.util.UseMapOf</recipe>
                                <recipe>org.openrewrite.java.OrderImports</recipe>
                                <recipe>org.openrewrite.java.RemoveUnusedImports</recipe>
                                <recipe>org.openrewrite.java.ShortenFullyQualifiedTypeReferences</recipe>
                                <recipe>org.openrewrite.java.testing.junit5.JUnit5BestPractices</recipe>
                                <recipe>org.openrewrite.java.testing.junit5.RemoveTryCatchFailBlocks</recipe>
                                <recipe>org.openrewrite.staticanalysis.EqualsAvoidsNull</recipe>
                                <recipe>org.openrewrite.staticanalysis.NoPrimitiveWrappersForToStringOrCompareTo
                                </recipe>

                            </activeRecipes>
                        </configuration>
                        <executions>
                            <execution>
                                <id>rewrite</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release-snapshot</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.sonatype.central</groupId>
                        <artifactId>central-publishing-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.sonatype.central</groupId>
                        <artifactId>central-publishing-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <!-- Usage: ./mvnw -Prewrite-maven-clean rewrite:run -->
            <!-- Unifies / cleans the maven-poms-->
            <id>rewrite-maven-clean</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.openrewrite.maven</groupId>
                        <artifactId>rewrite-maven-plugin</artifactId>
                        <configuration>
                            <activeRecipes>
                                <recipe>org.openrewrite.maven.BestPractices</recipe>
                            </activeRecipes>
                        </configuration>
                        <executions>
                            <execution>
                                <id>rewrite</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
