<?xml version="1.0" encoding="UTF-8"?>
<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>
  <groupId>io.github.openfeign.querydsl</groupId>
  <artifactId>querydsl-root</artifactId>
  <version>7.1</version>

  <packaging>pom</packaging>
  <name>Querydsl</name>
  <description>parent project for Querydsl modules</description>
  <url>https://querydsl.github.io/</url>

  <inceptionYear>2007</inceptionYear>

  <organization>
    <name>OpenFeign</name>
    <url>https://github.com/openfeign</url>
  </organization>

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>velo</id>
      <name>Marvin Herman Froeder</name>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Timo Westkämper</name>
      <organization>Mysema Ltd</organization>
    </contributor>
    <contributor>
      <name>Samppa Saarela</name>
      <organization>Mysema Ltd</organization>
    </contributor>
    <contributor>
      <name>Vesa Marttila</name>
      <organization>Mysema Ltd</organization>
    </contributor>
    <contributor>
      <name>Lassi Immonen</name>
      <organization>Mysema Ltd</organization>
    </contributor>
    <contributor>
      <name>Ruben Dijkstra</name>
    </contributor>
    <contributor>
      <name>John Tims</name>
    </contributor>
    <contributor>
      <name>Robert Bain</name>
    </contributor>
    <contributor>
      <name>Jan-Willem Gmelig Meyling</name>
    </contributor>
  </contributors>

  <modules>
    <module>querydsl-tooling</module>
    <module>querydsl-libraries</module>
  </modules>

  <scm>
    <connection>${project.checkout}</connection>
    <developerConnection>${project.checkout}</developerConnection>
    <url>${project.githubpage}</url>
  </scm>

  <properties>
    <!-- removing old modules on 7.0 release -->
    <japicmp.skip>true</japicmp.skip>

    <failIfNoTests>false</failIfNoTests>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.homepage>http://www.querydsl.com</project.homepage>
    <project.githubpage>http://github.com/openfeign/querydsl</project.githubpage>
    <project.checkout>scm:git:git@github.com:openfeign/querydsl.git</project.checkout>

    <argLine>-Xms256m -Xmx512m</argLine>

    <!-- default bytecode version for src/main -->
    <main.java.version>17</main.java.version>
    <latest.java.version>21</latest.java.version>

    <git-code-format-maven-plugin.version>5.4</git-code-format-maven-plugin.version>

    <junit.version>6.0.0</junit.version>
    <ecj.version>3.43.0</ecj.version>
    <jdo.version>3.2.1</jdo.version>
    <springboot.version>3.5.6</springboot.version>
    <spring.version>6.2.12</spring.version>

    <!-- SQL deps -->
    <db2.version>12.1.2.0</db2.version>
    <derby.version>10.17.1.0</derby.version>
    <hsqldb.version>2.7.4</hsqldb.version>
    <h2.version>2.3.232</h2.version>
    <postgresql.version>42.7.8</postgresql.version>
    <oracle.version>23.9.0.25.07</oracle.version>
    <mysql.version>9.4.0</mysql.version>
    <mssql.version>13.2.1.jre8</mssql.version>
    <cubrid.version>9.3.9.0002</cubrid.version>
    <sqlite.version>3.50.3.0</sqlite.version>
    <teradata.version>13.10.00.35</teradata.version>
    <firebird.version>5.0.10.java11</firebird.version>
    <mongodb.version>5.6.1</mongodb.version>

    <r2dbc.version>1.0.0.RELEASE</r2dbc.version>

    <!-- JPA deps -->
    <hibernate.version>7.0.9.Final</hibernate.version>
    <hibernate.validator.version>9.0.1.Final</hibernate.validator.version>
    <eclipselink.version>5.0.0-B11</eclipselink.version>
    <jpa.version>3.2.0</jpa.version>
    <jakarta.annotation.version>3.0.0</jakarta.annotation.version>

    <assertj.version>3.27.6</assertj.version>
    <mvn.version>3.9.11</mvn.version>
    <guava.version>33.5.0-jre</guava.version>
    <codegen.version>0.6.8</codegen.version>
    <byte-buddy.version>1.17.8</byte-buddy.version>
    <slf4j.version>2.0.17</slf4j.version>
    <surefire.version>3.5.4</surefire.version>
    <animal-sniffer.version>1.26</animal-sniffer.version>
    <h2gis.version>2.2.3</h2gis.version>
    <morphia.version>2.5.1</morphia.version>
    <jmh.version>1.37</jmh.version>
    <kotlin.version>2.2.20</kotlin.version>
    <ksp.version>2.2.20-2.0.4</ksp.version>
    <kotlinpoet.version>2.2.0</kotlinpoet.version>
    <dokka.version>2.1.0</dokka.version>
    <scala.version>2.13.16</scala.version>
    <asm.version>9.9</asm.version>
    <querydsl.version>${project.version}</querydsl.version>

    <!-- Import-Package definitions for maven-bundle-plugin -->
    <osgi.import.package.root>*</osgi.import.package.root>
    <osgi.import.package>${osgi.import.package.root}</osgi.import.package>

    <jacocoArgLine></jacocoArgLine>
    <jacoco.propertyName>jacocoArgLine</jacoco.propertyName>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${junit.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.smallrye</groupId>
        <artifactId>jandex</artifactId>
        <version>3.5.0</version>
      </dependency>
      <dependency>
        <groupId>org.jetbrains</groupId>
        <artifactId>annotations</artifactId>
        <version>26.0.2-1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>javax.jdo</artifactId>
        <version>${jdo.version}</version>
      </dependency>
      <dependency>
        <groupId>com.vividsolutions</groupId>
        <artifactId>jts</artifactId>
        <version>1.13</version>
      </dependency>
      <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>${h2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jdt</groupId>
        <artifactId>ecj</artifactId>
        <version>${ecj.version}</version>
      </dependency>
      <dependency>
        <groupId>io.github.classgraph</groupId>
        <artifactId>classgraph</artifactId>
        <version>4.8.184</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.30.2-GA</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geolatte</groupId>
        <artifactId>geolatte-geom</artifactId>
        <version>1.10</version>
      </dependency>
      <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-bom</artifactId>
        <version>${kotlin.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-scripting-jsr223</artifactId>
        <version>${kotlin.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml</groupId>
        <artifactId>classmate</artifactId>
        <version>1.7.1</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.6.1.Final</version>
      </dependency>
      <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm-bom</artifactId>
        <version>${asm.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>jakarta.persistence</groupId>
        <artifactId>jakarta.persistence-api</artifactId>
        <version>${jpa.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>${jakarta.annotation.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.validation</groupId>
        <artifactId>jakarta.validation-api</artifactId>
        <version>3.1.1</version>
      </dependency>
      <dependency>
        <groupId>jakarta.activation</groupId>
        <artifactId>jakarta.activation-api</artifactId>
        <version>2.1.4</version>
      </dependency>
      <dependency>
        <groupId>jakarta.inject</groupId>
        <artifactId>jakarta.inject-api</artifactId>
        <version>2.0.1.MR</version>
      </dependency>
      <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-bom</artifactId>
        <version>2024.0.11</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-core</artifactId>
      <version>${assertj.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.vintage</groupId>
      <artifactId>junit-vintage-engine</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>5.6.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.javassist</groupId>
      <artifactId>javassist</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>animal-sniffer-annotations</artifactId>
      <version>${animal-sniffer.version}</version>
      <optional>true</optional>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.12.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>3.2.8</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.14.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${surefire.version}</version>
          <configuration>
            <argLine>${jacocoArgLine} --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-opens=java.naming/javax.naming=ALL-UNNAMED</argLine>
            <environmentVariables>
              <TZ>UTC</TZ>
            </environmentVariables>
            <failIfNoSpecifiedTests>false</failIfNoSpecifiedTests>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${surefire.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>6.0.0</version>
          <executions>
            <execution>
              <id>bundle-manifest</id>
              <goals>
                <goal>manifest</goal>
              </goals>
              <phase>process-classes</phase>
              <inherited>true</inherited>
              <configuration>
                <instructions>
                  <Import-Package>${osgi.import.package}</Import-Package>
                  <Export-Package>com.querydsl.*</Export-Package>
                </instructions>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.jetbrains.dokka</groupId>
          <artifactId>dokka-maven-plugin</artifactId>
          <version>${dokka.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>javadocJar</goal>
              </goals>
              <phase>prepare-package</phase>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.jetbrains.kotlin</groupId>
          <artifactId>kotlin-maven-plugin</artifactId>
          <version>${kotlin.version}</version>
          <configuration>
            <jvmTarget>1.8</jvmTarget>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.6.2</version>
        <executions>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
              <rules>
                <dependencyConvergence></dependencyConvergence>
                <bannedDependencies>
                  <excludes>
                    <exclude>org.hamcrest:*:*:*:*</exclude>
                  </excludes>
                  <searchTransitive>false</searchTransitive>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.siom79.japicmp</groupId>
        <artifactId>japicmp-maven-plugin</artifactId>
        <version>0.24.2</version>
        <configuration>
          <parameter>
            <excludes>
              <exclude>com.querydsl.core.annotations.QueryProjection</exclude>
            </excludes>
            <ignoreMissingOldVersion>true</ignoreMissingOldVersion>
            <onlyModified>true</onlyModified>
            <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
            <breakBuildOnSourceIncompatibleModifications>true</breakBuildOnSourceIncompatibleModifications>
            <breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
            <ignoreMissingClasses>true</ignoreMissingClasses>
            <excludeModules>
              <excludeModule>querydsl-maven-plugin</excludeModule>
              <excludeModule>querydsl-example.*</excludeModule>
            </excludeModules>
            <accessModifier>public</accessModifier>
          </parameter>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>../src/main/assembly.xml</descriptor>
          </descriptors>
          <outputDirectory>../target/dist</outputDirectory>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <inherited>true</inherited>
        <configuration>
          <source>${main.java.version}</source>
          <target>${main.java.version}</target>
        </configuration>
        <executions>
          <!-- Ensure main source tree compiles to Java ${main.java.version} bytecode. -->
          <execution>
            <id>default-compile</id>
            <goals>
              <goal>compile</goal>
            </goals>
            <phase>compile</phase>
            <configuration>
              <source>${main.java.version}</source>
              <target>${main.java.version}</target>
            </configuration>
          </execution>
          <execution>
            <id>default-testCompile</id>
            <goals>
              <goal>testCompile</goal>
            </goals>
            <phase>test-compile</phase>
            <configuration>
              <source>${latest.java.version}</source>
              <target>${latest.java.version}</target>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.4.2</version>
      </plugin>
      <plugin>
        <groupId>de.qaware.maven</groupId>
        <artifactId>go-offline-maven-plugin</artifactId>
        <version>1.2.8</version>
        <configuration>
          <dynamicDependencies>
            <DynamicDependency>
              <groupId>org.codehaus.mojo.signature</groupId>
              <artifactId>java18</artifactId>
              <version>1.0</version>
              <type>signature</type>
              <repositoryType>MAIN</repositoryType>
            </DynamicDependency>
          </dynamicDependencies>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.14</version>
        <configuration>
          <includes>
            <include>com/querydsl/**</include>
            <include>io/github/openfeign/querydsl/**</include>
          </includes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.marvinformatics.jacoco</groupId>
        <artifactId>easy-jacoco-maven-plugin</artifactId>
        <version>0.1.4</version>
        <configuration>
          <projectRules>
            <rule>
              <limits>
                <limit>
                  <counter>INSTRUCTION</counter>
                  <value>COVEREDRATIO</value>
                  <minimum>0.70</minimum>
                </limit>
              </limits>
            </rule>
          </projectRules>
          <projectExtraProperties>
            <enforcer.skip>true</enforcer.skip>
            <license.skip>true</license.skip>
          </projectExtraProperties>
          <includes>
            <include>com/querydsl/**</include>
            <include>io/github/openfeign/querydsl/**</include>
          </includes>
          <excludeModules>
            <excludeModule>querydsl-scala</excludeModule>
          </excludeModules>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-plugin</artifactId>
        <version>2.2.1</version>
        <configuration>
          <tag>${project.version}</tag>
        </configuration>
      </plugin>
      <plugin>
        <groupId>io.sundr</groupId>
        <artifactId>sundr-maven-plugin</artifactId>
        <version>0.230.1</version>
        <inherited>false</inherited>
        <configuration>
          <boms>
            <bom>
              <artifactId>querydsl-bom</artifactId>
              <name>QueryDSL (Bill Of Materials)</name>

              <properties>
                <license.skip>true</license.skip>
              </properties>

              <modules>
                <includes>
                  <include>io.github.openfeign.querydsl:*</include>
                </includes>
                <excludes>
                  <exclude>*:querydsl-examples</exclude>
                  <exclude>*:querydsl-example-*</exclude>
                  <exclude>*:querydsl-jpa-spring</exclude>
                </excludes>
              </modules>

              <extraDependencies>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-apt</artifactId>
                  <version>${project.version}</version>
                  <classifier>general</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-apt</artifactId>
                  <version>${project.version}</version>
                  <classifier>hibernate</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-apt</artifactId>
                  <version>${project.version}</version>
                  <classifier>jakarta</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-apt</artifactId>
                  <version>${project.version}</version>
                  <classifier>jdo</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-apt</artifactId>
                  <version>${project.version}</version>
                  <classifier>jpa</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-apt</artifactId>
                  <version>${project.version}</version>
                  <classifier>morphia</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-apt</artifactId>
                  <version>${project.version}</version>
                  <classifier>roo</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-apt</artifactId>
                  <version>${project.version}</version>
                  <classifier>general-one</classifier>
                </dependency>

                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-jpa</artifactId>
                  <version>${project.version}</version>
                  <classifier>apt-one-jar</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-jpa</artifactId>
                  <version>${project.version}</version>
                  <classifier>apt-hibernate-one-jar</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-jpa</artifactId>
                  <version>${project.version}</version>
                  <classifier>apt</classifier>
                </dependency>

                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-mongodb</artifactId>
                  <version>${project.version}</version>
                  <classifier>apt-one-jar</classifier>
                </dependency>
                <dependency>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>querydsl-mongodb</artifactId>
                  <version>${project.version}</version>
                  <classifier>apt</classifier>
                </dependency>
              </extraDependencies>
            </bom>
          </boms>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>generate-bom</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.cosium.code</groupId>
        <artifactId>git-code-format-maven-plugin</artifactId>
        <version>${git-code-format-maven-plugin.version}</version>
        <dependencies>
          <!-- Enable https://github.com/google/google-java-format -->
          <dependency>
            <groupId>com.cosium.code</groupId>
            <artifactId>google-java-format</artifactId>
            <version>${git-code-format-maven-plugin.version}</version>
          </dependency>
        </dependencies>
        <executions>
          <!-- On commit, format the modified files -->
          <execution>
            <id>install-formatter-hook</id>
            <goals>
              <goal>install-hooks</goal>
            </goals>
            <inherited>false</inherited>
          </execution>
          <!-- On Maven verify phase, fail if any file (including unmodified) is
            badly formatted -->
          <execution>
            <id>validate-code-format</id>
            <goals>
              <goal>validate-code-format</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.ekryd.sortpom</groupId>
        <artifactId>sortpom-maven-plugin</artifactId>
        <version>4.0.0</version>
        <configuration>
          <keepBlankLines>true</keepBlankLines>
          <lineSeparator>\n</lineSeparator>
          <predefinedSortOrder>recommended_2008_06</predefinedSortOrder>
          <createBackupFile>false</createBackupFile>
        </configuration>
        <executions>
          <execution>
            <id>format</id>
            <goals>
              <goal>sort</goal>
            </goals>
            <phase>validate</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-wrapper-plugin</artifactId>
        <version>3.3.4</version>
        <configuration>
          <mavenVersion>${mvn.version}</mavenVersion>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>docs</id>
      <modules>
        <module>querydsl-docs</module>
      </modules>
    </profile>

    <profile>
      <id>examples</id>
      <modules>
        <module>querydsl-examples</module>
      </modules>
    </profile>

    <profile>
      <id>quickbuild</id>
      <properties>
        <skipTests>true</skipTests>
        <enforcer.skip>true</enforcer.skip>
        <animal.sniffer.skip>true</animal.sniffer.skip>
        <japicmp.skip>true</japicmp.skip>
        <maven.javadoc.skip>true</maven.javadoc.skip>
        <easy-jacoco.skip>true</easy-jacoco.skip>
      </properties>
    </profile>

    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.sonatype.central</groupId>
            <artifactId>central-publishing-maven-plugin</artifactId>
            <version>0.9.0</version>
            <extensions>true</extensions>
            <configuration>
              <publishingServerId>central</publishingServerId>
              <autoPublish>true</autoPublish>
              <waitUntil>published</waitUntil>
              <publishingTimeoutMinutes>30</publishingTimeoutMinutes>
              <checksums>required</checksums>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
          <!-- Creates source jar -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <source>8</source>
              <excludePackageNames>com.querydsl.examples.kotlin.*</excludePackageNames>
              <outputDirectory>${project.build.directory}/dist/apidocs</outputDirectory>
              <reportOutputDirectory>${project.build.directory}/dist/apidocs</reportOutputDirectory>
              <detectJavaApiLink>false</detectJavaApiLink>
              <groups>
                <group>
                  <title>Core</title>
                  <packages>com.querydsl.core*</packages>
                </group>
                <group>
                  <title>Codegen</title>
                  <packages>com.querydsl.codegen*</packages>
                </group>
                <group>
                  <title>APT</title>
                  <packages>com.querydsl.apt*</packages>
                </group>
                <group>
                  <title>Maven</title>
                  <packages>com.querydsl.maven*</packages>
                </group>
                <group>
                  <title>Spatial</title>
                  <packages>com.querydsl.spatial*</packages>
                </group>
                <group>
                  <title>Collections</title>
                  <packages>com.querydsl.collections*</packages>
                </group>
                <group>
                  <title>JPA</title>
                  <packages>com.querydsl.jpa*</packages>
                </group>
                <group>
                  <title>JDO</title>
                  <packages>com.querydsl.jdo*</packages>
                </group>
                <group>
                  <title>SQL</title>
                  <packages>com.querydsl.sql*</packages>
                </group>
                <group>
                  <title>Lucene 3</title>
                  <packages>com.querydsl.lucene3*</packages>
                </group>
                <group>
                  <title>Lucene 4</title>
                  <packages>com.querydsl.lucene4*</packages>
                </group>
                <group>
                  <title>Lucene 5</title>
                  <packages>com.querydsl.lucene5*</packages>
                </group>
                <group>
                  <title>Hibernate Search</title>
                  <packages>com.querydsl.hibernate.search*</packages>
                </group>
                <group>
                  <title>Mongodb</title>
                  <packages>com.querydsl.mongodb*</packages>
                </group>
              </groups>
              <failOnError>false</failOnError>
            </configuration>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <phase>verify</phase>
                <configuration>
                  <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                  </gpgArguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- Isolates eclipse build from maven build -->
    <profile>
      <id>m2e</id>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <directory>${project.basedir}/m2e-target</directory>

        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.6.1</version>
            <executions>
              <execution>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <phase>generate-sources</phase>
                <configuration>
                  <sources>
                    <source>target/generated-sources/annotations</source>
                    <source>target/generated-sources/java</source>
                  </sources>
                </configuration>
              </execution>
              <execution>
                <id>ts</id>
                <goals>
                  <goal>add-test-source</goal>
                </goals>
                <phase>generate-test-sources</phase>
                <configuration>
                  <sources>
                    <source>target/generated-test-sources/test-annotations</source>
                    <source>target/generated-test-sources/java</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>no-databases</id>

      <properties>
        <excludedGroups>com.querydsl.core.testutil.Database,
                        com.querydsl.core.testutil.SlowTest,
                        com.querydsl.core.testutil.Performance,
                        com.querydsl.core.testutil.ReportingOnly</excludedGroups>
      </properties>
    </profile>
    <profile>
      <id>ci</id>
      <properties>
        <!-- default groups to exclude from surefire plugin -->
        <excludedGroups>com.querydsl.core.testutil.SlowTest,
                        com.querydsl.core.testutil.Performance,
                        com.querydsl.core.testutil.ReportingOnly</excludedGroups>
      </properties>
    </profile>
    <profile>
      <id>dev</id>
      <properties>
        <!-- default groups to exclude from surefire plugin -->
        <excludedGroups>com.querydsl.core.testutil.ExternalDatabase,
                        com.querydsl.core.testutil.SlowTest,
                        com.querydsl.core.testutil.Performance,
                        com.querydsl.core.testutil.ReportingOnly</excludedGroups>
      </properties>

      <build>
        <plugins>
          <plugin>
            <groupId>com.cosium.code</groupId>
            <artifactId>git-code-format-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>format-code</id>
                <goals>
                  <goal>format-code</goal>
                </goals>
                <phase>initialize</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>openrewrite</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.openrewrite.maven</groupId>
            <artifactId>rewrite-maven-plugin</artifactId>
            <version>6.21.1</version>

            <dependencies>
              <dependency>
                <groupId>org.openrewrite.recipe</groupId>
                <artifactId>rewrite-testing-frameworks</artifactId>
                <version>3.19.0</version>
              </dependency>
              <dependency>
                <groupId>org.openrewrite.recipe</groupId>
                <artifactId>rewrite-migrate-java</artifactId>
                <version>3.19.0</version>
              </dependency>
            </dependencies>

            <executions>
              <execution>
                <id>tests</id>
                <goals>
                  <goal>runNoFork</goal>
                </goals>
                <phase>verify</phase>
                <configuration>
                  <exportDatatables>true</exportDatatables>
                  <activeRecipes>
                    <recipe>org.openrewrite.java.testing.hamcrest.MigrateHamcrestToAssertJ</recipe>
                    <recipe>org.openrewrite.java.testing.junit5.AssertToAssertions</recipe>
                    <recipe>org.openrewrite.java.testing.assertj.JUnitToAssertj</recipe>
                    <recipe>org.openrewrite.java.testing.assertj.Assertj</recipe>
                    <recipe>org.openrewrite.java.migrate.UpgradeToJava21</recipe>
                  </activeRecipes>
                  <exclusions>
                    <exclusion>**/src/main/java/**</exclusion>
                    <exclusion>pom.xml</exclusion>
                  </exclusions>
                </configuration>
              </execution>
              <execution>
                <id>sources</id>
                <goals>
                  <goal>runNoFork</goal>
                </goals>
                <phase>verify</phase>
                <configuration>
                  <exportDatatables>true</exportDatatables>
                  <activeRecipes>
                    <recipe>org.openrewrite.java.migrate.UpgradeToJava17</recipe>
                  </activeRecipes>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>toolchain</id>
      <activation>
        <property>
          <name>!toolchain.skip</name>
        </property>
      </activation>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-toolchains-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
              <execution>
                <goals>
                  <goal>toolchain</goal>
                </goals>
                <configuration>
                  <toolchains>
                    <jdk>
                      <version>${main.java.version}</version>
                    </jdk>
                  </toolchains>
                </configuration>
              </execution>
              <execution>
                <id>test</id>
                <goals>
                  <goal>toolchain</goal>
                </goals>
                <phase>generate-test-sources</phase>
                <configuration>
                  <toolchains>
                    <jdk>
                      <version>${latest.java.version}</version>
                    </jdk>
                  </toolchains>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <jdkToolchain>
                <version>${latest.java.version}</version>
              </jdkToolchain>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
              <jdkToolchain>
                <version>${latest.java.version}</version>
              </jdkToolchain>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
