<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>io.github.herculesproject.sgi</groupId>
    <artifactId>sgi-starter-parent</artifactId>
    <version>1.1.0</version>
  </parent>

  <groupId>io.github.herculesproject.sgi</groupId>
  <artifactId>sgi-framework-spring</artifactId>
  <version>1.1.0</version>
  <packaging>jar</packaging>
  <name>sgi-framework-spring</name>
  <description>SGI Framework</description>
  <url>https://github.com/herculesproject/sgi</url>

  <licenses>
    <license>
      <name>GNU General Public License, Version 3</name>
      <url>https://www.gnu.org/licenses/gpl-3.0.html</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <name>Treelogic</name>
      <email>info@treelogic.com</email>
      <organization>Tree Technology</organization>
      <organizationUrl>https://www.treelogic.com</organizationUrl>
    </developer>
  </developers>

  <scm>
    <connection>scm:git:git://github.com/herculesproject/sgi.git</connection>
    <url>https://github.com/herculesproject/sgi/tree/main/sgi-framework-spring</url>
  </scm>

  <repositories>
    <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>
    <!-- Manifest data for the Apache Maven JAR Plugin -->
    <manifest.name>org/crue/hercules/sgi/framework</manifest.name>
  </properties>

  <dependencies>
    <!--
      Commons Lang - Provides a host of helper utilities for the java.lang API, notably String
    manipulation methods, basic numerical methods, object reflection, concurrency, creation and
    serialization and System properties.
      https://commons.apache.org/proper/commons-lang/
    -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>
    <!--
      H2 - Database Engine.
      https://www.h2database.com/html/main.html
    -->
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!--
      Hibernate JPA 2 Metamodel Generator - An annotation processor based on the Pluggable Annotation
    Processing API with the task of creating JPA 2 static metamodel classes.
      https://docs.jboss.org/hibernate/stable/jpamodelgen/reference/en-US/html_single/
    -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-jpamodelgen</artifactId>
    </dependency>
    <!--
      Hibernate Validator - The Bean Validation reference implementation.
      https://hibernate.org/validator/
    -->
    <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator</artifactId>
    </dependency>
    <!--
      Hibernate Validator Annotation Processor - Detecs unsupported constraint usages, and raises an
    error at build time.
      https://hibernate.org/validator/
    -->
    <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator-annotation-processor</artifactId>
    </dependency>
    <!--
      JSLT - A complete query and transformation language for JSON.
      https://github.com/schibsted/jslt
    -->
    <dependency>
      <groupId>com.schibsted.spt.data</groupId>
      <artifactId>jslt</artifactId>
    </dependency>
    <!--
      Liquibase - A tool for managing and executing database changes.
      https://docs.liquibase.com/tools-integrations/maven/home.html
    -->
    <dependency>
      <groupId>org.liquibase</groupId>
      <artifactId>liquibase-core</artifactId>
    </dependency>
    <!--
        Allow running scripts before liquibase. After SpringBoot 2.5 if liquibase is enabled database
      initialization trought .sql files in resources is disabled.
        See https://github.com/spring-projects/spring-boot/issues/22741.
        
        https://github.com/lbruun-net/Pre-Liquibase
      -->
    <dependency>
      <groupId>net.lbruun.springboot</groupId>
      <artifactId>preliquibase-spring-boot-starter</artifactId>
    </dependency>
    <!--
      Project Lombok - A java library that automatically plugs into your editor and build tools, spicing
    up your java.
      https://projectlombok.org/
    -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <!--
      RSQL JPA Spring Boot Starter - Translate RSQL query into
    org.springframework.data.jpa.domain.Specification or com.querydsl.core.types.Predicate and
    support entities association query.
      https://github.com/perplexhub/rsql-jpa-specification
    -->
    <dependency>
      <groupId>io.github.perplexhub</groupId>
      <artifactId>rsql-jpa-spring-boot-starter</artifactId>
    </dependency>
    <!--
      Spring Boot Configuration Processor - Spring Boot Configuration Annotation Processor.
    https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/configuration-metadata.html#configuration-metadata.annotation-processor
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
    <!--
      Spring Boot DevTools - Spring Boot Developer Tools.
      https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/using.html#using.devtools
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <!--
      Spring Boot Starter Data JPA - Starter for using Spring Data JPA with Hibernate.
      https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/data.html
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!--
      Spring Boot Starter OAuth2 Client - Starter for using Spring Security's OAuth2/OpenID Connect
    client features.
    https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/web.html#web.security.oauth2.client
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-oauth2-client</artifactId>
    </dependency>
    <!--
      Spring Boot Starter OAuth2 Resource Server - Starter for using Spring Security's OAuth2 resource
    server features.
    https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/web.html#web.security.oauth2.server
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
    </dependency>
    <!--
      Spring Boot Starter Security - Starter for using Spring Security.
      https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/web.html#web.security
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!--
      Spring Boot Test Starter - Imports both Spring Boot test modules as well as JUnit Jupiter, AssertJ,
    Hamcrest, and a number of other useful libraries.
      https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.testing
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <!--
      Spring Boot Starter Web - Starter for building web, including RESTful, applications using Spring
    MVC.
      https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/web.html
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--
      Spring Boot Test - Provides a number of utilities and annotations to help when testing your
    application.
      https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.testing
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-test</artifactId>
      <scope>compile</scope>
    </dependency>
    <!--
      Spring TestContext Framework - Spring TestContext Framework.
      https://docs.spring.io/spring-framework/docs/current/reference/html/testing.html
    -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <scope>compile</scope>
    </dependency>
    <!--
      Spring Security Test - Spring Security’s Test support to test method based security.
      https://docs.spring.io/spring-security/site/docs/current/reference/html5/#test
    -->
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-test</artifactId>
      <scope>test</scope>
    </dependency>
    <!--
      WireMock - A simulator for HTTP-based APIs.
      http://wiremock.org/
    -->
    <dependency>
      <groupId>com.github.tomakehurst</groupId>
      <artifactId>wiremock-jre8</artifactId>
      <scope>compile</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <!--
        JaCoCo Maven Plugin - Code coverage report for JVM languages.
        http://www.eclemma.org/jacoco/
      -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
      </plugin>
      <!--
        Maven Failsafe Plugin - Runs integration tests.
        http://maven.apache.org/surefire/maven-failsafe-plugin/
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
      </plugin>
      <!--
        Maven Javadoc Plugin - Uses the Javadoc tool to generate javadocs for the specified project.
        https://maven.apache.org/plugins/maven-javadoc-plugin/
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
      </plugin>
      <!--
        Maven Source Plugin - Creates a jar archive of the source files of the current project.
        https://maven.apache.org/plugins/maven-source-plugin/
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
      </plugin>
      <!--
          SonarScanner for Maven - Executes the SonarQube analysis via a regular Maven goal.
          https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/
        -->
      <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <!--
        JaCoCo Maven Plugin - Code coverage report for JVM languages.
        http://www.eclemma.org/jacoco/
      -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <!--
        Maven Surefire Reports Plugin - Parses generated test results from both unit tests and integration
      tests.
        http://maven.apache.org/surefire/maven-surefire-report-plugin/
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>
</project>