<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2024 Red Hat, Inc.
    SPDX-License-Identifier: Apache-2.0

-->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.jboss.pnc.reqour</groupId>
    <artifactId>reqour-parent</artifactId>
    <version>3.5.3</version>
    <packaging>pom</packaging>

    <modules>
        <module>adjuster</module>
        <module>core</module>
        <module>rest</module>
    </modules>

    <name>reqour</name>
    <description>Repour, but written in Quarkus</description>
    <url>https://github.com/project-ncl/reqour</url>
    <inceptionYear>2024</inceptionYear>

    <organization>
        <name>Red Hat, Inc.</name>
        <url>https://www.redhat.com/</url>
    </organization>

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

    <scm>
        <connection>scm:git:https://github.com/project-ncl/reqour.git</connection>
        <developerConnection>scm:git:git@github.com:project-ncl/reqour.git</developerConnection>
        <url>https://github.com/project-ncl/reqour/</url>
        <tag>3.5.3</tag>
    </scm>

    <developers>
        <developer>
            <organization>RedHat</organization>
            <organizationUrl>https://www.redhat.com</organizationUrl>
        </developer>
    </developers>

    <repositories>
        <repository>
            <id>mrrc-ga</id>
            <name>Redhat GA</name>
            <layout>default</layout>
            <url>https://maven.repository.redhat.com/ga/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <name>Central Portal Snapshots</name>
            <id>central-portal-snapshots</id>
            <url>https://central.sonatype.com/repository/maven-snapshots/</url>
            <releases>
              <enabled>false</enabled>
            </releases>
            <snapshots>
              <enabled>true</enabled>
            </snapshots>
      </repository>
    </repositories>

    <properties>
        <maven.compiler.release>21</maven.compiler.release>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
        <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
        <quarkus.platform.version>3.36.0</quarkus.platform.version>
        <rootPath>${basedir}</rootPath>
        <tagSuffix />

        <!-- Dependencies versions -->
        <version.lombok>1.18.46</version.lombok>
        <version.quarkus-logging-json>3.5.0</version.quarkus-logging-json>
        <version.quarkus-logging-kafka>3.0.4</version.quarkus-logging-kafka>
        <version.pnc-api>3.5.0</version.pnc-api>
        <version.pnc-common>3.5.0</version.pnc-common>
        <version.pom-manipulation-common>5.3</version.pom-manipulation-common>
        <version.npm-manipulator>1.3.4</version.npm-manipulator>
        <version.bifrost-upload-client>3.5.0</version.bifrost-upload-client>
        <version.gitlab4j-api>6.3.0</version.gitlab4j-api>
        <version.github-api>1.330</version.github-api>
        <version.assertj-core>3.27.7</version.assertj-core>
        <version.jgit>7.6.0.202603022253-r</version.jgit>
        <version.wiremock>1.6.3</version.wiremock>
        <version.commons-cli>1.11.0</version.commons-cli>
        <version.commons-exec>1.6.0</version.commons-exec>
        <version.commons-text>1.15.0</version.commons-text>
        <version.commons-io>2.22.0</version.commons-io>
        <version.gradle-manipulator-common>5.4</version.gradle-manipulator-common>
        <version.smallrye-common-process>2.19.0</version.smallrye-common-process>

        <!-- Plugins versions -->
        <version.maven-surefire-plugin>3.5.6</version.maven-surefire-plugin>
        <version.maven-compiler-plugin>3.15.0</version.maven-compiler-plugin>
        <version.license-maven-plugin>5.0.0</version.license-maven-plugin>
        <version.spotless-maven-plugin>3.6.0</version.spotless-maven-plugin>
        <version.central-publishing-maven-plugin>0.10.0</version.central-publishing-maven-plugin>
        <version.maven-source-plugin>3.4.0</version.maven-source-plugin>
        <version.lombok-maven-plugin>1.18.20.0</version.lombok-maven-plugin>
        <version.maven-javadoc-plugin>3.12.0</version.maven-javadoc-plugin>
        <version.maven-gpg-plugin>3.2.8</version.maven-gpg-plugin>
        <version.jandex-maven-plugin>3.6.0</version.jandex-maven-plugin>
        <version.git-commit-id-plugin>4.9.10</version.git-commit-id-plugin>
        <version.maven-replacer-plugin>1.4.1</version.maven-replacer-plugin>
        <version.maven-jar-plugin>3.5.0</version.maven-jar-plugin>
        <version.quarkus-pnc-client-auth>1.0.0</version.quarkus-pnc-client-auth>
   </properties>

    <dependencyManagement>
        <dependencies>
            <!-- Quarkus BOM -->
            <dependency>
                <groupId>${quarkus.platform.group-id}</groupId>
                <artifactId>${quarkus.platform.artifact-id}</artifactId>
                <version>${quarkus.platform.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Inter-module dependencies -->
            <dependency>
                <groupId>org.jboss.pnc.reqour</groupId>
                <artifactId>reqour-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc.reqour</groupId>
                <artifactId>reqour-core</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc.reqour</groupId>
                <artifactId>reqour-adjuster</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc.reqour</groupId>
                <artifactId>reqour-rest</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- Regular dependencies -->
            <dependency>
                <groupId>org.jboss.pnc</groupId>
                <artifactId>pnc-api</artifactId>
                <version>${version.pnc-api}</version>
                <classifier>jakarta</classifier>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc</groupId>
                <artifactId>pnc-common</artifactId>
                <version>${version.pnc-common}</version>
                <classifier>jakarta</classifier>
                <exclusions>
                    <exclusion>
                        <groupId>org.jboss.pnc</groupId>
                        <artifactId>pnc-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
              <groupId>org.jboss.pnc</groupId>
              <artifactId>quarkus-pnc-client-auth</artifactId>
              <version>${version.quarkus-pnc-client-auth}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${version.lombok}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc.logging</groupId>
                <artifactId>quarkus-logging-kafka</artifactId>
                <version>${version.quarkus-logging-kafka}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc.logging</groupId>
                <artifactId>quarkus-logging-kafka-deployment</artifactId>
                <version>${version.quarkus-logging-kafka}</version>
            </dependency>
            <dependency>
                <groupId>io.quarkiverse.loggingjson</groupId>
                <artifactId>quarkus-logging-json</artifactId>
                <version>${version.quarkus-logging-json}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc</groupId>
                <artifactId>bifrost-upload-client</artifactId>
                <version>${version.bifrost-upload-client}</version>
            </dependency>
            <dependency>
                <groupId>org.gitlab4j</groupId>
                <artifactId>gitlab4j-api</artifactId>
                <version>${version.gitlab4j-api}</version>
            </dependency>
            <dependency>
                <groupId>org.kohsuke</groupId>
                <artifactId>github-api</artifactId>
                <version>${version.github-api}</version>
            </dependency>
            <dependency>
                <!-- This dependency is used because adjuster has to know PME's internal representation in order to parse the result. -->
                <groupId>org.jboss.pnc.maven-manipulator</groupId>
                <artifactId>pom-manipulation-common-lite</artifactId>
                <version>${version.pom-manipulation-common}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc.npm-manipulator</groupId>
                <artifactId>npm-manipulator-npm</artifactId>
                <version>${version.npm-manipulator}</version>
                <exclusions>
                    <!-- Exclude every dependency, since we care only about NpmResult.class -->
                    <exclusion>
                        <groupId>*</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-cli</groupId>
                <artifactId>commons-cli</artifactId>
                <version>${version.commons-cli}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-exec</artifactId>
                <version>${version.commons-exec}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-text</artifactId>
                <version>${version.commons-text}</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${version.commons-io}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.pnc.gradle-manipulator</groupId>
                <artifactId>common</artifactId>
                <version>${version.gradle-manipulator-common}</version>
            </dependency>
            <dependency>
                <groupId>io.smallrye.common</groupId>
                <artifactId>smallrye-common-process</artifactId>
                <version>${version.smallrye-common-process}</version>
            </dependency>

            <!-- Test dependencies -->
            <dependency>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
                <version>${version.assertj-core}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jgit</groupId>
                <artifactId>org.eclipse.jgit</artifactId>
                <version>${version.jgit}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.quarkiverse.wiremock</groupId>
                <artifactId>quarkus-wiremock-test</artifactId>
                <version>${version.wiremock}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-micrometer-opentelemetry</artifactId>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>${quarkus.platform.group-id}</groupId>
                    <artifactId>quarkus-maven-plugin</artifactId>
                    <version>${quarkus.platform.version}</version>
                    <extensions>true</extensions>
                    <executions>
                        <execution>
                            <goals>
                                <goal>build</goal>
                                <goal>generate-code</goal>
                                <goal>generate-code-tests</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <skipOriginalJarRename>true</skipOriginalJarRename>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.mycila</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>${version.license-maven-plugin}</version>
                    <configuration>
                        <licenseSets>
                            <licenseSet>
                                <header>${rootPath}/.license-header.txt</header>
                                <excludes>
                                    <exclude>.license-header.txt</exclude>
                                    <exclude>**/README.md</exclude>
                                    <exclude>LICENSE.txt</exclude>
                                    <exclude>eclipse-codeStyle.xml</exclude>
                                    <exclude>**/Dockerfile</exclude>
                                    <exclude>**/scripts/**</exclude>
                                    <exclude>**/images/**</exclude>
                                    <exclude>**/.dockerignore</exclude>
                                    <exclude>**/.mvn/**</exclude>
                                    <exclude>**/mvnw*</exclude>
                                    <exclude>**/**.properties</exclude>
                                    <exclude>**/application*.yaml</exclude>
                                    <exclude>src/test/resources/clone-test/source-repo/*.txt</exclude>
                                    <exclude>src/test/resources/**/*</exclude>

                                    <!-- Exclude downloaded/generated -->
                                    <exclude>**/.cache/**</exclude>
                                    <exclude>**/rest-config.json</exclude>
                                    <exclude>**/Test*.html</exclude>
                                </excludes>
                            </licenseSet>
                        </licenseSets>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>io.smallrye</groupId>
                    <artifactId>jandex-maven-plugin</artifactId>
                    <version>${version.jandex-maven-plugin}</version>
                </plugin>
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>${version.git-commit-id-plugin}</version>
                </plugin>
                <plugin>
                    <groupId>com.google.code.maven-replacer-plugin</groupId>
                    <artifactId>maven-replacer-plugin</artifactId>
                    <version>${version.maven-replacer-plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${version.maven-jar-plugin}</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${version.maven-compiler-plugin}</version>
                <configuration>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${version.maven-surefire-plugin}</version>
                <configuration>
                    <argLine>-XX:+EnableDynamicAgentLoading</argLine>
                    <systemPropertyVariables>
                        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        <maven.home>${maven.home}</maven.home>
                    </systemPropertyVariables>
                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${version.maven-surefire-plugin}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <systemPropertyVariables>
                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
                        <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                        <maven.home>${maven.home}</maven.home>
                    </systemPropertyVariables>
                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.mycila</groupId>
                <artifactId>license-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>license-check</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.diffplug.spotless</groupId>
                <artifactId>spotless-maven-plugin</artifactId>
                <version>${version.spotless-maven-plugin}</version>
                <configuration>
                    <java>
                        <removeUnusedImports />
                        <importOrder>
                            <file>java-import-order.txt</file>
                        </importOrder>
                        <eclipse>
                            <file>java-formatter.xml</file>
                        </eclipse>
                        <lineEndings>UNIX</lineEndings>
                    </java>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.jboss.pnc</groupId>
                        <artifactId>ide-config</artifactId>
                        <version>1.1.0</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <goals>
                            <goal>apply</goal>
                        </goals>
                        <phase>compile</phase>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <tagNameFormat>@{project.version}${tagSuffix}</tagNameFormat>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release</releaseProfiles>
                    <goals>deploy</goals>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.sonatype.central</groupId>
                <artifactId>central-publishing-maven-plugin</artifactId>
                <version>${version.central-publishing-maven-plugin}</version>
                <extensions>true</extensions>
                <configuration>
                    <!-- as defined in your settings.xml -->
                    <publishingServerId>central-publisher</publishingServerId>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>native</id>
            <activation>
                <property>
                    <name>native</name>
                </property>
            </activation>
            <properties>
                <skipITs>false</skipITs>
                <quarkus.native.enabled>true</quarkus.native.enabled>
            </properties>
        </profile>

        <profile>
            <id>license-format</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.mycila</groupId>
                        <artifactId>license-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>license-format</id>
                                <phase>process-sources</phase>
                                <goals>
                                    <goal>format</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>license-check</id>
                                <phase>none</phase>  <!-- Do NOT run check with this profile, only format -->
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>${version.maven-source-plugin}</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok-maven-plugin</artifactId>
                        <version>${version.lombok-maven-plugin}</version>
                        <configuration>
                            <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
                            <outputDirectory>${delombok.output}</outputDirectory>
                            <addOutputDirectory>false</addOutputDirectory>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${version.lombok}</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>delombok</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${version.maven-javadoc-plugin}</version>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <detectOfflineLinks>false</detectOfflineLinks>
                                    <quiet>true</quiet>
                                    <doclint>none</doclint>
                                    <sourcepath>target/generated-sources/delombok</sourcepath>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${version.maven-gpg-plugin}</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
