<?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>
    <groupId>com.ontimize.jee</groupId>
    <artifactId>ontimize-jee</artifactId>
    <version>5.7.0</version>
    <packaging>pom</packaging>

    <name>Ontimize EE</name>
    <description>Ontimize EE uses Spring technology to separate the client and the server, allowing applications to be
        developed quickly and efficiently.
    </description>

    <url>https://www.ontimize.com</url>
    <organization>
        <name>Imatia Innovation</name>
        <url>http://imatia.com</url>
    </organization>

    <licenses>
        <license>
            <name>The Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>Alberto Quintela Trabazos</name>
            <email>alberto.quintela@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Ángel Vázquez Vázquez</name>
            <email>angel.vazquez@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Daniel Graña Cousido</name>
            <email>daniel.grana@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Enrique Álvarez Pereira</name>
            <email>enrique.alvarez@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Faustino Lage Rego</name>
            <email>faustino.lage@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Gonzalo Martínez Fernández</name>
            <email>gonzalo.martinez@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Joaquín Romero Riveiro</name>
            <email>joaquin.romero@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Jorge Diaz Seijo</name>
            <email>jorge.diaz@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Lucía Fernández Núñez</name>
            <email>lucia.fernandez@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Pablo Martínez Kirsten</name>
            <email>pablo.martinez@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Senén Diéguez López</name>
            <email>senen.dieguez@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Tomás Fuentes Facal</name>
            <email>tomas.fuentes@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
        <developer>
            <name>Xoán Loureiro Santamaría</name>
            <email>xoan.loureiro@imatia.com</email>
            <organization>Imatia Innovation</organization>
            <organizationUrl>http://imatia.com</organizationUrl>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:git://github.com/ontimize/ontimize-jee.git</connection>
        <developerConnection>scm:git:ssh://github.com:ontimize/ontimize-jee.git</developerConnection>
        <url>https://github.com/ontimize/ontimize-jee/tree/master</url>
    </scm>

    <distributionManagement>
        <repository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

    <modules>
        <module>ontimize-jee-common</module>
        <module>ontimize-jee-server</module>
        <module>ontimize-jee-server-rest</module>
        <module>ontimize-jee-server-jdbc</module>
        <module>ontimize-jee-server-keycloak</module>
        <module>ontimize-jee-webclient-addons</module>
        <module>jacoco-report-aggregate</module>
    </modules>

    <properties>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>

        <projectGroupId>com.ontimize.jee</projectGroupId>

        <!-- =========================================================== -->
        <!-- Encoding -->
        <!-- =========================================================== -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- =========================================================== -->
        <!-- Plugin versions -->
        <!-- =========================================================== -->
        <compiler.plugin.version>3.8.1</compiler.plugin.version>
        <dependency-maven-plugin.version>1.0</dependency-maven-plugin.version>
        <deploy.plugin.version>3.0.0-M1</deploy.plugin.version>
        <ear.plugin.version>2.8</ear.plugin.version>
        <maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version>
        <maven-jar-plugin.version>3.0.2</maven-jar-plugin.version>
        <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
        <nexus-staging-maven-plugin.version>1.6.7</nexus-staging-maven-plugin.version>
        <resources.plugin.version>3.2.0</resources.plugin.version>
        <source.plugin.version>3.2.1</source.plugin.version>
        <war.plugin.version>2.4</war.plugin.version>
        <!-- Jacoco -->
        <jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
        <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
        <maven-failsafe-plugin.version>3.0.0-M5</maven-failsafe-plugin.version>
        <surefire-argLine/>
        <failsafe-argLine/>
        <skip.unit.tests>false</skip.unit.tests>
        <skip.integration.tests>false</skip.integration.tests>
        <!-- =========================================================== -->
        <!-- Versions -->
        <!-- =========================================================== -->
        <activation.version>1.1</activation.version>
        <apache-poi.ooxml-schemas.version>1.1</apache-poi.ooxml-schemas.version>
        <apache-poi.version>5.2.3</apache-poi.version>
        <aspectjweaver.version>1.6.6</aspectjweaver.version>
        <assertj-core.version>3.22.0</assertj-core.version>
        <commons-beanutils.version>1.9.4</commons-beanutils.version>
        <commons-codec.version>1.10</commons-codec.version>
        <commons-collections-old.version>3.2.2</commons-collections-old.version>
        <commons-collections.version>4.4</commons-collections.version>
        <commons-io.version>2.7</commons-io.version>
        <commons-lang.gis.version>2.6</commons-lang.gis.version>
        <commons-lang.version>3.12.0</commons-lang.version>
        <cxf.version>3.4.3</cxf.version>
        <dom4j.version>2.1.3</dom4j.version>
        <dynamicjasper.version>5.0.7</dynamicjasper.version>
        <hsqldb.version>2.6.0</hsqldb.version>
        <httpclient.version>4.5.13</httpclient.version>
        <itext.version>7.2.4</itext.version>
        <itextpdf.version>7.2.3</itextpdf.version>
        <jackson.version>2.12.3</jackson.version>
        <jasperreports.version>6.2.0</jasperreports.version>
        <javax.websocket-api.version>1.0</javax.websocket-api.version>
        <jaxb-api.version>2.3.1</jaxb-api.version>
        <jaxb-runtime.version>2.3.1</jaxb-runtime.version>
        <jee.version>8.0</jee.version>
        <jmimemagic.version>0.1.2</jmimemagic.version>
        <junit.version>5.9.1</junit.version>
        <keycloak.version>15.0.2</keycloak.version>
        <log4j.version>2.18.0</log4j.version>
        <logback.version>1.2.3</logback.version>
        <mesp.version>1.0.2</mesp.version>
        <mockito.version>4.11.0</mockito.version>
        <ontimize.plaf.color.version>1.4.4</ontimize.plaf.color.version>
        <ontimize.plaf.version>1.1.7</ontimize.plaf.version>
        <org-junit.version>6.5.0.Final</org-junit.version>
        <poi-ooxml-schemas.version>4.1.2</poi-ooxml-schemas.version>
        <servlet-api.version>3.1.0</servlet-api.version>
        <slf4j.version>1.7.30</slf4j.version>
        <spring-security-jwt.version>1.1.1.RELEASE</spring-security-jwt.version>
        <spring-security-kerberos.version>1.0.1.RELEASE</spring-security-kerberos.version>
        <spring-security-ldap.version>5.5.1</spring-security-ldap.version>
        <spring-security.version>5.5.1</spring-security.version>
        <spring-session-data-redis.version>2.5.0</spring-session-data-redis.version>
        <spring-session.version>1.3.5.RELEASE</spring-session.version>
        <spring.version>5.3.6</spring.version>
        <xmlbeans.version>2.4.0</xmlbeans.version>
        <zip4j.version>1.3.2</zip4j.version>

        <!-- SONARCloud configuration -->
        <sonar.organization>ontimize</sonar.organization>
        <sonar.host.url>https://sonarcloud.io</sonar.host.url>

        <!-- Jacoco -->
        <sonar.coverage.jacoco.xmlReportPaths>
            ${project.basedir}/jacoco-report-aggregate/target/site/jacoco-aggregate/jacoco.xml
        </sonar.coverage.jacoco.xmlReportPaths>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- Project dependencies -->
            <dependency>
                <groupId>com.ontimize.jee</groupId>
                <artifactId>ontimize-jee-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.ontimize.jee</groupId>
                <artifactId>ontimize-jee-server</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.ontimize.jee</groupId>
                <artifactId>ontimize-jee-server-rest</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.ontimize.jee</groupId>
                <artifactId>ontimize-jee-server-jdbc</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.ontimize.jee</groupId>
                <artifactId>ontimize-jee-server-keycloak</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.ontimize.jee</groupId>
                <artifactId>ontimize-jee-webclient-addons</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- commons-lang -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>${commons-lang.gis.version}</version>
            </dependency>

            <!-- Logback -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <!-- Logging -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- Spring Security -->
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-core</artifactId>
                <version>${spring-security.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-web</artifactId>
                <version>${spring-security.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-config</artifactId>
                <version>${spring-security.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-taglibs</artifactId>
                <version>${spring-security.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security.kerberos</groupId>
                <artifactId>spring-security-kerberos-web</artifactId>
                <version>${spring-security-kerberos.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-ldap</artifactId>
                <version>${spring-security-ldap.version}</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-jwt</artifactId>
                <version>${spring-security-jwt.version}</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.session</groupId>
                <artifactId>spring-session</artifactId>
                <version>${spring-session.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.session</groupId>
                <artifactId>spring-session-data-redis</artifactId>
                <version>${spring-session-data-redis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectjweaver.version}</version>
            </dependency>

            <!-- JEE 7 dependencies https://wikis.oracle.com/display/GlassFish/Java+EE+7+Maven+Coordinates -->
            <dependency>
                <groupId>javax.websocket</groupId>
                <artifactId>javax.websocket-api</artifactId>
                <version>${javax.websocket-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
            </dependency>

            <!-- documents -->
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons-codec.version}</version>
            </dependency>

            <!-- Jmimemagic -->
            <dependency>
                <groupId>jmimemagic</groupId>
                <artifactId>jmimemagic</artifactId>
                <version>${jmimemagic.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- commons io -->
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>

            <!-- JUnit -->
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${junit.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-junit-jupiter</artifactId>
                <version>${mockito.version}</version>
            </dependency>

            <dependency>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
                <version>${assertj-core.version}</version>
            </dependency>

            <!-- XML Config -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-collections4</artifactId>
                <version>${commons-collections.version}</version>
            </dependency>

            <!-- si alguien utiliza la version vieja -->
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>${commons-collections-old.version}</version>
            </dependency>

            <!-- javax what is out of jdk 11 -->
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>${jee.version}</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>${jaxb-api.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.activation</groupId>
                <artifactId>activation</artifactId>
                <version>${activation.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${jaxb-runtime.version}</version>
            </dependency>

            <!-- apache cxf -->
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>${cxf.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-transports-http</artifactId>
                <version>${cxf.version}</version>
            </dependency>

            <!-- Zip4j -->
            <dependency>
                <groupId>net.lingala.zip4j</groupId>
                <artifactId>zip4j</artifactId>
                <version>${zip4j.version}</version>
            </dependency>
            <!-- http client -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>${apache-poi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>${apache-poi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml-schemas</artifactId>
                <version>${poi-ooxml-schemas.version}</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.dom4j</groupId>
                <artifactId>dom4j</artifactId>
                <version>${dom4j.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>kernel</artifactId>
                <version>${itext.version}</version>
            </dependency>
            <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>layout</artifactId>
                <version>${itext.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kie.modules</groupId>
                <artifactId>org-junit</artifactId>
                <version>${org-junit.version}</version>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
                <version>${hsqldb.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <!-- =========================================================== -->
        <!-- Plugins -->
        <!-- =========================================================== -->
        <pluginManagement>
            <plugins>
                <!-- Resources plugin (2.4.x versions do not correctly filter files containing
                            '@' character). -->
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>${jacoco-maven-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${resources.plugin.version}</version>
                </plugin>

                <!-- Compiler configuration -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${compiler.plugin.version}</version>
                    <configuration>
                        <verbose>true</verbose>
                        <source>${maven.compiler.source}</source>
                        <target>${maven.compiler.target}</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>
                <!-- JAR plugin adding entries to manifest -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${maven-jar-plugin.version}</version>
                    <configuration>
                        <archive>
                            <addMavenDescriptor>false</addMavenDescriptor>
                            <manifestEntries>
                                <Trusted-Library>true</Trusted-Library>
                                <Permissions>all-permissions</Permissions>
                                <Codebase>*</Codebase>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${deploy.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>${source.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- dependency maven plugin -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>dependency-maven-plugin</artifactId>
                    <version>${dependency-maven-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven-javadoc-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <failOnError>false</failOnError>
                                <doclint>none</doclint>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- Maven junit test plugin -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <!-- Source -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.8</version>
                <executions>
                    <execution>
                        <id>prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>generate-local-version</id>
            <build>
                <plugins>
                    <!-- Source -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <!-- JavaDoc -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>generate-version</id>
            <build>
                <plugins>
                    <!-- Source -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <!-- JavaDoc -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <version>${nexus-staging-maven-plugin.version}</version>
                        <extensions>true</extensions>
                        <configuration>
                            <serverId>ossrh</serverId>
                            <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
                            <autoReleaseAfterClose>true</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <!-- Prevent gpg from using pinentry programs. Fixes: gpg: signing
                                                          failed: Inappropriate ioctl for device -->
                                    <gpgArguments>
                                        <arg>--pinentry-mode</arg>
                                        <arg>loopback</arg>
                                    </gpgArguments>
                                    <keyname>${gpg.keyname}</keyname>
                                    <passphraseServerId>${gpg.keyname}</passphraseServerId>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>pre-unit-test</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <!-- Sets the path to the file which contains the execution data. -->
                                    <destFile>${project.build.directory}/coverage-reports/jacoco.exec</destFile>
                                    <propertyName>surefireArgLine</propertyName>
                                </configuration>
                            </execution>
                            <execution>
                                <id>pre-integration-test</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>prepare-agent-integration</goal>
                                </goals>
                                <configuration>
                                    <!-- Sets the path to the file which contains the execution data. -->
                                    <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile>
                                    <!-- Sets the name of the property containing the settings for JaCoCo runtime agent. -->
                                    <propertyName>failsafeArgLine</propertyName>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>${maven-surefire-plugin.version}</version>
                        <configuration>
                            <!-- Sets the VM argument line used when unit tests are run. -->
                            <argLine>${surefire-argLine}</argLine>
                            <!-- Skips unit tests if the value of skip.unit.tests property is true -->
                            <skipTests>${skip.unit.tests}</skipTests>
                            <!-- Excludes integration tests when unit tests are run. -->
                            <excludes>
                                <exclude>**/*IT.java</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <version>${maven-failsafe-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>integration-tests</id>
                                <goals>
                                    <goal>integration-test</goal>
                                    <goal>verify</goal>
                                </goals>
                                <configuration>
                                    <argLine>${failsafe-argLine}</argLine>
                                    <skipTests>${skip.integration.tests}</skipTests>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
