<?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-com-service</artifactId>
  <version>1.1.0</version>
  <packaging>jar</packaging>
  <name>sgi-com-service</name>
  <description>Tareas Programadas SGI HERCULES</description>
  <url>https://github.com/HerculesCRUE/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-com-service</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/com</manifest.name>
    <!-- Versions -->
    <sgi-framework-spring.version>1.1.0</sgi-framework-spring.version>
  </properties>

  <profiles>
    <profile>
      <!-- dev profile. This is the default profile -->
      <id>dev</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <spring.profiles.active>
          dev</spring.profiles.active>
      </properties>
    </profile>
    <profile>
      <id>test</id>
      <properties>
        <spring.profiles.active>test</spring.profiles.active>
      </properties>
    </profile>
    <profile>
      <id>prod</id>
      <properties>
        <spring.profiles.active>
          prod</spring.profiles.active>
      </properties>
    </profile>
  </profiles>

  <dependencyManagement>
    <dependencies>
      <!--
        Hercules Framework - Support classes for Hercules services.
        https://github.com/HerculesCRUE/SGI/
      -->
      <dependency>
        <groupId>io.github.herculesproject.sgi</groupId>
        <artifactId>sgi-framework-spring</artifactId>
        <version>${sgi-framework-spring.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!-- 
        Apache Commons Collections - Powerful data structures that accelerate development of most
    significant Java applications
        https://commons.apache.org/proper/commons-collections/index.html
      -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
    </dependency>
    <!-- 
        Commons Email - An API for sending email built on top of the Java Mail API, which it aims to
    simplify.
        https://commons.apache.org/proper/commons-email/
      -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-email</artifactId>
    </dependency>
    <!--
      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>
    <!-- Include HttpClient 4 needed for RestTemplate -->
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
    </dependency>
    <!-- 
      FreeMarker - Template engine
      https://freemarker.apache.org/
    -->
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
    </dependency>
    <!-- 
        GreenMail - An easy-to-use test suite of email servers for testing purposes
        https://greenmail-mail-test.github.io/greenmail/
      -->
    <dependency>
      <groupId>com.icegreen</groupId>
      <artifactId>greenmail-junit5</artifactId>
      <scope>test</scope>
    </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>
    <!-- 
      Jackson Databind - General data-binding functionality for Jackson: works on core streaming API
      https://github.com/FasterXML/jackson-databind
    -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</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>
    <!--
      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>
    <!--
      ModelMapper - Makes object mapping easy.
      http://modelmapper.org/
    -->
    <dependency>
      <groupId>org.modelmapper</groupId>
      <artifactId>modelmapper</artifactId>
    </dependency>
    <!-- 
      Oracle - JDBC Driver
      https://www.oracle.com/database/technologies/appdev/jdbc.html
    -->
    <dependency>
      <groupId>com.oracle.database.jdbc</groupId>
      <artifactId>ojdbc11</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- 
      PostgreSQL - JDBC Driver
      https://jdbc.postgresql.org/
    -->
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- 
      MicrosoftSQL - JDBC Driver
      https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server
    -->
    <dependency>
      <groupId>com.microsoft.sqlserver</groupId>
      <artifactId>mssql-jdbc</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!--
      Hercules Framework - Support classes for Hercules services.
      https://github.com/HerculesCRUE/SGI/
    -->
    <dependency>
      <groupId>io.github.herculesproject.sgi</groupId>
      <artifactId>sgi-framework-spring</artifactId>
    </dependency>
    <!-- 
      Spring Expression Language - A powerful expression language that supports querying and manipulating
    an object graph at runtime (see:
    https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions).
      https://github.com/eobermuhlner/spel-scriptengine
    -->
    <dependency>
      <groupId>ch.obermuhlner</groupId>
      <artifactId>spel-scriptengine</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 Acturator - Starter for using Spring Boot's Actuator which provides production
    ready features to help you monitor and manage your application
      https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#actuator
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </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 Mail - Starter for using Java Mail and Spring Framework's email sending support
      https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/io.html#io.email
    -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</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 Context Indexer - Creates a static list of candidates at compilation time (fastets boot
    time vs runtime classpath scanning)
      https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-scanning-index
    -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-indexer</artifactId>
      <optional>true</optional>
    </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>
  </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>
      <plugin>
        <!-- 
        Maven Liquibase Plugin - Generates liquibase changesets.
        https://www.liquibase.org/documentation/maven/index.html
        -->
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-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>
      <!--
          Spring Boot Maven Plugin - Spring Boot support in Apache Maven.
          http://docs.spring.io/spring-boot/docs/current/maven-plugin/
        -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-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>