<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>br.com.sdkopen</groupId>
  <artifactId>parent</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>

  <name>${project.groupId}:${project.artifactId}</name>
  <description>This is a simple base SDK for Spring Boot applications. It provides a dependency management for all the SDK Open Projects.</description>
  <url>https://github.com/sdkopen/sdkopen-spring-parent</url>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.3.3</version>
  </parent>

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

  <developers>
    <developer>
      <name>Luiz Fernandes de Oliveira</name>
      <email>luizfernandesoliveiraoficial@gmail.com</email>
    </developer>
  </developers>

  <scm>
    <connection>scm:git:git://github.com/sdkopen/sdkopen-spring-parent.git</connection>
    <developerConnection>scm:git:ssh://github.com/sdkopen/sdkopen-spring-parent.git</developerConnection>
    <url>https://github.com/sdkopen/sdkopen-spring-parent/tree/master</url>
  </scm>

  <properties>
    <java.version>21</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- Dependencies versions -->
    <spring-cloud.version>2023.0.3</spring-cloud.version>
    <aws-java-sdk-bom.version>1.12.771</aws-java-sdk-bom.version>
    <lombok.version>1.18.34</lombok.version>
    <postgresql.version>42.7.4</postgresql.version>
    <hibernate-types-60.version>2.21.1</hibernate-types-60.version>
    <jacoco.version>0.8.12</jacoco.version>
    <java-jwt.version>4.4.0</java-jwt.version>
    <jakarta.servlet-api.version>6.1.0</jakarta.servlet-api.version>

    <!-- Plugins Configs -->
    <plugin.spotify-formatter.version>2.24</plugin.spotify-formatter.version>
    <maven.plugin.validation>VERBOSE</maven.plugin.validation>

    <!-- Coverage Configs -->
    <jacoco.instruction.covarage.minimum>0.9</jacoco.instruction.covarage.minimum>
    <jacoco.line.coverage.minimum>0.9</jacoco.line.coverage.minimum>
    <jacoco.branch.coverage.minimum>0.9</jacoco.branch.coverage.minimum>
    <jacoco.method.coverage.minimum>0.9</jacoco.method.coverage.minimum>
    <jacoco.class.coverage.minimum>0.9</jacoco.class.coverage.minimum>
    <plugin.jacoco.coverage.dist>jacoco/coverage</plugin.jacoco.coverage.dist>
    <plugin.jacoco.report.dist>jacoco/report</plugin.jacoco.report.dist>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-bom</artifactId>
        <version>${aws-java-sdk-bom.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
      </dependency>
      <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgresql.version}</version>
      </dependency>
      <dependency>
        <groupId>com.vladmihalcea</groupId>
        <artifactId>hibernate-types-60</artifactId>
        <version>${hibernate-types-60.version}</version>
      </dependency>
      <dependency>
        <groupId>com.auth0</groupId>
        <artifactId>java-jwt</artifactId>
        <version>${java-jwt.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>${jakarta.servlet-api.version}</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>3.2.4</version>
        <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>0.5.0</version>
        <extensions>true</extensions>
        <configuration>
          <publishingServerId>central</publishingServerId>
          <tokenAuth>true</tokenAuth>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.6.3</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.spotify.fmt</groupId>
        <artifactId>fmt-maven-plugin</artifactId>
        <version>${plugin.spotify-formatter.version}</version>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>check</goal>
              <goal>format</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
        <configuration>
          <rules>
            <rule>
              <element>BUNDLE</element>
              <limits>
                <limit>
                  <counter>INSTRUCTION</counter>
                  <value>COVEREDRATIO</value>
                  <minimum>${jacoco.instruction.covarage.minimum}</minimum>
                </limit>
                <limit>
                  <counter>LINE</counter>
                  <value>COVEREDRATIO</value>
                  <minimum>${jacoco.line.coverage.minimum}</minimum>
                </limit>
                <limit>
                  <counter>BRANCH</counter>
                  <value>COVEREDRATIO</value>
                  <minimum>${jacoco.branch.coverage.minimum}</minimum>
                </limit>
                <limit>
                  <counter>METHOD</counter>
                  <value>COVEREDRATIO</value>
                  <minimum>${jacoco.method.coverage.minimum}</minimum>
                </limit>
                <limit>
                  <counter>CLASS</counter>
                  <value>COVEREDRATIO</value>
                  <minimum>${jacoco.class.coverage.minimum}</minimum>
                </limit>
              </limits>
            </rule>
          </rules>
        </configuration>
        <executions>
          <execution>
            <id>jacoco-prepare-agent</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>jacoco-check</id>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
          <execution>
            <id>jacoco-report</id>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>21</source>
          <target>21</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
