<?xml version="1.0" encoding="UTF-8"?><!--
  ~ Copyright 2018-2019 adorsys GmbH & Co KG
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>de.adorsys.opba</groupId>
    <artifactId>open-banking-gateway</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <name>open-banking-gateway</name>
    <description>Provides Access to Banking API</description>

    <modules>
        <module>opba-banking-rest-api-ymls</module>
        <module>opba-api-security-signer-generator</module>
        <module>opba-api-security</module>
        <module>opba-rest-api-shared</module>
        <module>opba-consent-rest-api</module>
        <module>opba-consent-rest-impl</module>
        <module>opba-banking-rest-api</module>
        <module>opba-banking-rest-impl</module>
        <module>opba-auth-rest-api</module>
        <module>opba-auth-rest-impl</module>
        <module>opba-admin-rest-api</module>
        <module>opba-admin-rest-impl</module>
        <module>opba-banking-protocol-facade</module>
        <module>opba-embedded-starter</module>
        <module>opba-embedded-starter-tests</module>
        <module>fintech-examples</module>
        <module>opba-db</module>
        <module>opba-protocols</module>
        <module>opba-analytics</module>
        <module>opba-facade-protocol-api-shared</module>
        <module>last-module-codecoverage</module>
        <module>smoke-tests</module>
    </modules>

    <url>https://github.com/adorsys/open-banking-gateway</url>

    <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>Francis Pouatcha</name>
            <email>fpo@adorsys.de</email>
            <organization>adorsys GmbH &amp; Co KG</organization>
            <organizationUrl>https://adorsys.de/</organizationUrl>
        </developer>
        <developer>
            <name>Denys Golubiev</name>
            <email>dgo@adorsys.de</email>
            <organization>adorsys GmbH &amp; Co KG</organization>
            <organizationUrl>https://adorsys.de/</organizationUrl>
        </developer>
    </developers>

    <properties>
        <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>

        <!-- Hard reference to main lib. -->
        <main.basedir>${project.basedir}</main.basedir>
        <!-- Common properties -->
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <dependency.locations.enabled>false</dependency.locations.enabled>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven-enforcer-plugin.version>3.0.0-M2</maven-enforcer-plugin.version>
        <java.version>11</java.version>
        <pmd.plugin.version>3.13.0</pmd.plugin.version>
        <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>

        <!-- Deployment plugins -->
        <gitflow.helper.plugin.version>3.0.0</gitflow.helper.plugin.version>
        <!-- Note that 3.0.0-M1 does not work properly with gitflow-maven-plugin
        It raises:
        NoFileAssignedException: The packaging plugin for this project did not assign a main file to the project but it has attachments. Change packaging to 'pom'
        -->
        <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
        <maven-source-plugin.version>3.0.1</maven-source-plugin.version>
        <maven-nexus-staging-plugin.version>1.6.8</maven-nexus-staging-plugin.version>
        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>

        <master-branch-pattern>.*</master-branch-pattern>
        <release-branch-pattern>.*</release-branch-pattern>

        <!-- Framework libs -->
        <spring-boot.version>2.2.4.RELEASE</spring-boot.version>
        <aspectj.version>1.9.5</aspectj.version>
        <commit-id.version>4.0.0</commit-id.version>
        <guava.version>30.1.1-jre</guava.version>
        <apache.commons-lang3.version>3.9</apache.commons-lang3.version>
        <fasterxml.version>2.12.2</fasterxml.version>
        <fasterxml-data-format.version>2.9.8</fasterxml-data-format.version>
        <swaggerv3.version>2.1.0</swaggerv3.version>
        <swagger.version>1.5.23</swagger.version>
        <swagger-codegen-generators.version>1.0.19</swagger-codegen-generators.version>
        <swagger-codegen-maven-plugin.version>3.0.19</swagger-codegen-maven-plugin.version>
        <springdoc-openapi-ui.version>1.5.10</springdoc-openapi-ui.version> <!-- springfox replacement for OpenApi 3 -->
        <springfox.version>2.9.2</springfox.version>
        <jetbrains.annotations.version>17.0.0</jetbrains.annotations.version>
        <lombok.version>1.18.12</lombok.version>
        <lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
        <xml-maven-plugin.version>1.0.2</xml-maven-plugin.version>
        <checkstyle-plugin.version>3.1.0</checkstyle-plugin.version>
        <spotbugs-plugin.version>3.1.12.2</spotbugs-plugin.version>
        <maven.jxr.plugin.version>3.0.0</maven.jxr.plugin.version>
        <bouncycastle.version>1.64</bouncycastle.version>
        <datasafe.version>1.0.0.1</datasafe.version>
        <liquibase.version>4.4.0</liquibase.version>
        <mapstruct.version>1.4.2.Final</mapstruct.version>
        <hibernate.version>5.4.9.Final</hibernate.version> <!-- Currently only for bytecode enhancer plugin, can't inherit Spring BOM -->
        <jjwt.version>0.11.1</jjwt.version>
        <nimbus.version>8.18</nimbus.version>
        <javapoet.version>1.13.0</javapoet.version>
        <swagger-parser.version>2.0.21</swagger-parser.version>
        <jackson-yaml.version>2.12.1</jackson-yaml.version>
        <auto-service.version>1.0-rc7</auto-service.version>

        <!-- Flowable BPMN -->
        <flowable.version>6.4.2</flowable.version>

        <!-- Special libs -->
        <maven.replacer.version>1.5.3</maven.replacer.version>

        <!-- Adorsys libs -->
        <xs2a-adapter.version>0.1.15</xs2a-adapter.version>
        <multibanking.version>5.5.24</multibanking.version>
        <hbci4j-adorsys.version>3.5.28</hbci4j-adorsys.version>

        <!-- Util libs -->
        <iban.4j.version>3.2.1</iban.4j.version>

        <!-- Test libs -->
        <jacoco.version>0.8.5</jacoco.version>
        <jupiter.version>5.5.2</jupiter.version>
        <junit.platform.commons.version>1.5.2</junit.platform.commons.version>
        <surefire.version>3.0.0-M3</surefire.version>
        <failsafe.version>3.0.0-M3</failsafe.version>
        <assertj.version>3.12.2</assertj.version>
        <jgiven.version>1.0.0-RC3</jgiven.version>
        <wiremock.version>2.25.1</wiremock.version>
        <testcontainers.version>1.15.2</testcontainers.version>
        <zerocode.tdd.version>1.3.17</zerocode.tdd.version>
        <selenium-jupiter.version>3.3.4</selenium-jupiter.version>
        <slf4j-simple.version>1.7.29</slf4j-simple.version>
        <!-- other properties -->
        <lombok-maven-plugin.version>1.18.18</lombok-maven-plugin.version>
        <maven.dependency.plugin.version>3.1.2</maven.dependency.plugin.version>
        <maven-remote-resources-plugin.version>1.6.0</maven-remote-resources-plugin.version>
        <maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
        <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
        <spring-framework-spring-tests.version>5.1.7.RELEASE</spring-framework-spring-tests.version>
        <mockito-core.version>2.25.1</mockito-core.version>
        <commons-io.version>2.6</commons-io.version>
        <commons-lang3.version>3.0.1</commons-lang3.version>
        <google.gson.version>2.8.6</google.gson.version>
        <saxon.version>8.7</saxon.version>
        <io.swagger.annotations.version>2.1.1</io.swagger.annotations.version>
        <javax.ws.rs-api.version>2.1.1</javax.ws.rs-api.version>
        <glassfish.jersey-client.version>2.30</glassfish.jersey-client.version>
        <jersey-hk2.version>2.28</jersey-hk2.version>
        <h2.database.version>1.4.200</h2.database.version>
        <spring-web.version>5.2.3.RELEASE</spring-web.version>
        <feign-http-client.version>10.7.4</feign-http-client.version>
        <postgresql.version>42.2.11</postgresql.version>
        <compile-testing.version>0.18</compile-testing.version>
        <!-- JavaDoc -->
        <javax.interceptor.api.version>1.2.2</javax.interceptor.api.version>
        <commons-codec.version>1.14</commons-codec.version>
    </properties>

    <repositories>
        <repository>
            <id>snapshots-repo</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${apache.commons-lang3.version}</version>
            </dependency>
            <!-- swagger -->
            <dependency>
                <groupId>io.swagger.core.v3</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>${swaggerv3.version}</version>
            </dependency>
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>${swagger.version}</version>
            </dependency>

            <!-- Spring Boot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Lombok -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>

            <dependency>
                <groupId>org.jetbrains</groupId>
                <artifactId>annotations</artifactId>
                <version>${jetbrains.annotations.version}</version>
                <scope>compile</scope>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${fasterxml.version}</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${fasterxml.version}</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${fasterxml.version}</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-jsr310</artifactId>
                <version>${fasterxml.version}</version>
                <scope>compile</scope>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-yaml</artifactId>
                <version>${fasterxml-data-format.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <dependency>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-core</artifactId>
                <version>${liquibase.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j-simple.version}</version>
            </dependency>

            <!-- Test -->
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${jupiter.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <!-- lombok and mapstruct -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${mapstruct.version}</version>
                        </path>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok-mapstruct-binding</artifactId>
                            <version>${lombok-mapstruct-binding.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>

            <!-- pmd -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>${pmd.plugin.version}</version>
                <configuration>
                    <includeTests>true</includeTests>
                    <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
                    <minimumTokens>100</minimumTokens>
                    <targetJdk>${java.version}</targetJdk>
                    <analysisCache>true</analysisCache>
                    <linkXRef>false</linkXRef>
                    <rulesets>
                        <ruleset>${main.basedir}/backend.pmd-ruleset.xml</ruleset>
                    </rulesets>
                    <excludeRoots>
                        <excludeRoot>${project.build.directory}/generated-sources</excludeRoot>
                    </excludeRoots>
                    <failOnViolation>true</failOnViolation>
                    <printFailingErrors>true</printFailingErrors>
                </configuration>
                <executions>
                    <execution>
                        <phase>test</phase>
                        <goals>
                            <goal>pmd</goal>
                            <goal>cpd</goal>
                            <goal>cpd-check</goal>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- checkstyle -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${checkstyle-plugin.version}</version>
                <configuration>
                    <configLocation>${main.basedir}/backend.checkstyle.xml</configLocation>
                    <encoding>UTF-8</encoding>
                    <consoleOutput>true</consoleOutput>
                    <failsOnError>true</failsOnError>
                    <linkXRef>false</linkXRef>
                    <sourceDirectories>
                        <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                    </sourceDirectories>
                    <excludes>**/generated/**/*</excludes>
                </configuration>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- code coverage -->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${jacoco.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <propertyName>surefireArgLine</propertyName>
                </configuration>
            </plugin>

            <!-- junit tests -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${surefire.version}</version>
                <configuration>
                    <argLine>${surefireArgLine}</argLine>
                    <trimStackTrace>false</trimStackTrace>
                </configuration>
            </plugin>

            <!-- integration tests -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${failsafe.version}</version>
                <configuration>
                    <classpathDependencyScopeExclude>provided</classpathDependencyScopeExclude>
                    <trimStackTrace>false</trimStackTrace>
                </configuration>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>verify</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>${maven.jxr.plugin.version}</version>
            </plugin>
        </plugins>
    </reporting>

    <scm>
        <connection>scm:git@github.com:adorsys/open-banking-gateway.git</connection>
        <developerConnection>scm:git:git@github.com:adorsys/open-banking-gateway.git</developerConnection>
        <url>git@github.com:adorsys/open-banking-gateway.git</url>
        <tag>HEAD</tag>
    </scm>

    <profiles>
        <profile>
            <id>run-embedded</id>
            <build>
                <plugins>
                    <!-- Disabled Spring so that it is seen from parent-->
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                        <configuration>
                            <!-- Important one -->
                            <skip>true</skip>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>repackage</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>release-candidate</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.e-gineering</groupId>
                        <artifactId>gitflow-helper-maven-plugin</artifactId>
                        <version>${gitflow.helper.plugin.version}</version>
                        <extensions>true</extensions>
                        <configuration>
                            <!-- Tell the plugins what repositories to use (by id) -->
                            <releaseDeploymentRepository>release</releaseDeploymentRepository>
                            <stageDeploymentRepository>stage</stageDeploymentRepository>
                            <snapshotDeploymentRepository>stage</snapshotDeploymentRepository>

                            <!-- Allow to promote on ANY branch because Github Actions checkouts tag, not branch (and forcing both seem impossible) -->
                            <releaseBranchPattern>${release-branch-pattern}</releaseBranchPattern>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>retarget-deploy</goal>
                                    <goal>promote-master</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <version>${maven-deploy-plugin.version}</version>
                        <configuration>
                            <deployAtEnd>true</deployAtEnd>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>${maven-source-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <!-- Note that this entry is crucial for execution:configuration to apply for this plugin -->
                        <configuration>
                            <gpgArguments>
                                <arg>--pinentry-mode</arg>
                                <arg>loopback</arg>
                            </gpgArguments>
                        </configuration>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <gpgArguments>
                                        <arg>--pinentry-mode</arg>
                                        <arg>loopback</arg>
                                    </gpgArguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven-javadoc-plugin.version}</version>
                        <configuration>
                            <doclint>none</doclint>
                            <!-- Fixes error - class file for javax.interceptor.InterceptorBinding not found -->
                            <additionalDependencies>
                                <additionalDependency>
                                    <groupId>javax.interceptor</groupId>
                                    <artifactId>javax.interceptor-api</artifactId>
                                    <version>${javax.interceptor.api.version}</version>
                                </additionalDependency>
                            </additionalDependencies>
                        </configuration>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <!-- This custom plugin version disables deploy of catalog.txt (that does not have signature)
                        This plugin version is installed to local maven repository by pre-script.
                        Modified plugin sources: https://github.com/valb3r/gitflow-helper-maven-plugin
                        -->
                        <groupId>com.e-gineering</groupId>
                        <artifactId>gitflow-helper-maven-plugin</artifactId>
                        <version>3.0.1-SKIP-CATALOG-SNAPSHOT</version>
                        <extensions>true</extensions>
                        <configuration>
                            <!-- Tell the plugins what repositories to use (by id) -->
                            <releaseDeploymentRepository>release</releaseDeploymentRepository>
                            <stageDeploymentRepository>stage</stageDeploymentRepository>
                            <snapshotDeploymentRepository>stage</snapshotDeploymentRepository>
                            <!-- This property comes from modified plugin version -->
                            <skipExistingCatalogFileArtifactAttach>true</skipExistingCatalogFileArtifactAttach>

                            <!-- Allow to promote on ANY branch because Github Actions checkouts tag, not branch (and forcing both seem impossible) -->
                            <masterBranchPattern>${master-branch-pattern}</masterBranchPattern>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>retarget-deploy</goal>
                                    <goal>promote-master</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- Bridges gitflow-helper-maven-plugin to nexus-staging-maven-plugin -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <version>${maven-deploy-plugin.version}</version>
                        <configuration>
                            <deployAtEnd>true</deployAtEnd>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <version>${maven-nexus-staging-plugin.version}</version>
                        <extensions>true</extensions>
                        <configuration>
                            <serverId>release</serverId>
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!--
        This profile exist to show Lombok-generated code in javadoc without touching dev and release classes.
        You can generate JavaDoc with comments from lombok using:
        mvn clean javadoc:aggregate -P javadoc
        -->
        <profile>
            <id>javadoc</id>
            <properties>
                <src.dir>target/generated-sources/delombok</src.dir>
                <test.srt.dir>target/generated-test-sources/delombok</test.srt.dir>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok-maven-plugin</artifactId>
                        <version>${lombok-maven-plugin.version}</version>
                        <executions>
                            <execution>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>delombok</goal>
                                </goals>
                                <configuration>
                                    <addOutputDirectory>false</addOutputDirectory>
                                    <sourceDirectory>src/main/java</sourceDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven-javadoc-plugin.version}</version>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
