<?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 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>9</version>
        <relativePath/>
    </parent>
    <groupId>org.openwms</groupId>
    <artifactId>org.openwms.parent</artifactId>
    <version>21</version>
    <packaging>pom</packaging>
    <name>OpenWMS.org Parent Project</name>
    <description>OpenWMS.org is an open source warehouse management software</description>
    <url>https://www.openwms.org</url>
    <inceptionYear>2005</inceptionYear>

    <issueManagement>
        <system>JIRA</system>
        <url>https://openwms.atlassian.net/browse</url>
    </issueManagement>

    <licenses>
        <license>
            <name>Apache License 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
            <comments>OpenWMS.org is distributed as open-source</comments>
        </license>
    </licenses>

    <distributionManagement>
        <repository>
            <id>sonatype-nexus-staging</id>
            <name>OpenWMS.org Release Repository</name>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
        </repository>
        <snapshotRepository>
            <id>sonatype-nexus-snapshots</id>
            <name>OpenWMS.org Snapshot Repository</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <site>
            <id>site</id>
            <name>OpenWMS.org WebSite</name>
            <url>scm:git:git@github.com:openwms/org.openwms.git</url>
        </site>
    </distributionManagement>

    <scm>
        <url>https://github.com/openwms/org.openwms</url>
        <connection>scm:git:https://github.com/openwms/org.openwms.git</connection>
        <developerConnection>scm:git:https://github.com:openwms/org.openwms.git</developerConnection>
    </scm>

    <organization>
        <name>Interface21.io</name>
        <url>https://www.interface21.io</url>
    </organization>

    <developers>
        <developer>
            <id>openwms</id>
            <name>Heiko Scherrer</name>
            <email>scherrer@openwms.org</email>
            <url>https://openwms.github.io/</url>
            <organization>Interface21.io</organization>
            <organizationUrl>https://www.interface21.io</organizationUrl>
            <timezone>+2</timezone>
            <roles>
                <role>Project Lead</role>
                <role>Architect</role>
                <role>Developer</role>
                <role>Deployer</role>
            </roles>
        </developer>
        <developer>
            <id>russelltina</id>
            <name>Tina Russell</name>
            <email>russelltina@users.sourceforge.net</email>
            <url>https://sourceforge.net/users/russelltina</url>
            <organization>University of Oregon</organization>
            <organizationUrl>https://www.uoregon.edu</organizationUrl>
            <timezone>-7</timezone>
            <roles>
                <role>Flex Developer</role>
            </roles>
        </developer>
    </developers>

    <contributors>
        <contributor>
            <name>Frank Lauer</name>
            <email>flauer99@users.sourceforge.net</email>
            <url>https://sourceforge.net/users/flauer99</url>
            <organization>Aberle GmbH</organization>
            <organizationUrl>https://www.a-s.de</organizationUrl>
            <timezone>+2</timezone>
            <roles>
                <role>Java Developer</role>
                <role>Site Master</role>
            </roles>
        </contributor>
        <contributor>
            <name>Michael Schmut</name>
            <email>smudo99@users.sourceforge.net</email>
            <url>https://sourceforge.net/users/smudo99</url>
            <organization>SAP</organization>
            <organizationUrl>https://www.sap.com</organizationUrl>
            <timezone>+2</timezone>
            <roles>
                <role>Java Developer</role>
            </roles>
        </contributor>
        <contributor>
            <name>Florian Gyger</name>
            <email>fgyger@openwms.org</email>
            <url>https://sourceforge.net/users/flogy</url>
            <organization>Swisslog AG</organization>
            <organizationUrl>https://www.swisslog.com</organizationUrl>
            <timezone>+2</timezone>
            <roles>
                <role>Developer</role>
                <role>Supporter</role>
            </roles>
        </contributor>
        <contributor>
            <name>Mischa Farbstein</name>
            <email>mischazurich@users.sourceforge.net</email>
            <url>https://sourceforge.net/users/mischazurich</url>
            <timezone>+2</timezone>
            <roles>
                <role>Developer</role>
                <role>Moderator</role>
            </roles>
        </contributor>
        <contributor>
            <name>Michael Rudiger</name>
            <email>rudiger@openwms.org</email>
            <url>https://sourceforge.net/users/jarhell</url>
            <timezone>+2</timezone>
            <roles>
                <role>Developer</role>
            </roles>
        </contributor>
        <contributor>
            <name>Markus Schneider</name>
            <email>markusschneider0207@gmail.com</email>
            <timezone>+2</timezone>
            <roles>
                <role>Developer</role>
            </roles>
        </contributor>
    </contributors>

    <mailingLists>
        <mailingList>
            <name>OpenWMS.org Public Mailing list</name>
            <subscribe>
                https://lists.sourceforge.net/lists/listinfo/openwms2005-public
            </subscribe>
            <unsubscribe>
                https://lists.sourceforge.net/lists/listinfo/openwms2005-public
            </unsubscribe>
            <archive>
                https://sourceforge.net/mailarchive/forum.php?forum_name=openwms2005-public
            </archive>
            <post>openwms2005-public@lists.sourceforge.net</post>
        </mailingList>
        <mailingList>
            <name>OpenWMS.org Development Mailing list</name>
            <subscribe>
                https://lists.sourceforge.net/lists/listinfo/openwms2005-development
            </subscribe>
            <unsubscribe>
                https://lists.sourceforge.net/lists/listinfo/openwms2005-development
            </unsubscribe>
            <archive>
                https://sourceforge.net/mailarchive/forum.php?forum_name=openwms2005-development
            </archive>
            <post>openwms2005-development@lists.sourceforge.net</post>
        </mailingList>
    </mailingLists>

    <ciManagement>
        <system>GitHub</system>
        <url>https://github.com/openwms/org.openwms/actions</url>
        <notifiers>
            <notifier>
                <type>mail</type>
                <configuration>
                    <address>product@openwms.org</address>
                </configuration>
            </notifier>
        </notifiers>
    </ciManagement>

    <profiles>
        <profile>
            <id>coverage</id>
            <properties>
                <asciidoc.skip>true</asciidoc.skip>
                <enforcer.skip>true</enforcer.skip>
                <sonar.coverage.jacoco.xmlReportPaths>${project.reporting.outputDirectory}/jacoco-merged-test-coverage-report/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
                <sonar.host.url>https://sonarcloud.io</sonar.host.url>
                <sonar.java.binaries>target/classes</sonar.java.binaries>
                <sonar.java.source>${java.version}</sonar.java.source>
                <sonar.organization>openwms-github</sonar.organization>
                <sonar.projectKey>${project.groupId}:${project.artifactId}</sonar.projectKey>
                <sonar.sources>src/main/java/</sonar.sources>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <argLine>@{argLine} @{failsafe.jacoco.args}</argLine>
                            <includes>
                                <include>**/*IT.java</include>
                                <include>**/*Documentation.java</include>
                            </includes>
                            <classesDirectory>${project.build.outputDirectory}</classesDirectory>
                        </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>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>@{argLine} @{surefire.jacoco.args}</argLine>
                            <!-- Never set a forkCount to 0 bc. of Jacoco -->
                            <excludes>
                                <exclude>**/Abstract*.java</exclude>
                                <exclude>**/*Tests.java</exclude>
                            </excludes>
                            <includes>
                                <include>**/*Test.java</include>
                            </includes>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>before-unit-test-execution</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>${project.build.directory}/jacoco-output/jacoco-unit-tests.exec</destFile>
                                    <propertyName>surefire.jacoco.args</propertyName>
                                </configuration>
                            </execution>
                            <execution>
                                <id>after-unit-test-execution</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                                <configuration>
                                    <dataFile>${project.build.directory}/jacoco-output/jacoco-unit-tests.exec</dataFile>
                                    <outputDirectory>${project.reporting.outputDirectory}/jacoco-unit-test-coverage-report</outputDirectory>
                                </configuration>
                            </execution>
                            <execution>
                                <id>before-integration-test-execution</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>${project.build.directory}/jacoco-output/jacoco-integration-tests.exec</destFile>
                                    <propertyName>failsafe.jacoco.args</propertyName>
                                </configuration>
                            </execution>
                            <execution>
                                <id>after-integration-test-execution</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                                <configuration>
                                    <dataFile>${project.build.directory}/jacoco-output/jacoco-integration-tests.exec</dataFile>
                                    <outputDirectory>${project.reporting.outputDirectory}/jacoco-integration-test-coverage-report</outputDirectory>
                                </configuration>
                            </execution>
                            <execution>
                                <id>merge-unit-and-integration</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>merge</goal>
                                </goals>
                                <configuration>
                                    <fileSets>
                                        <fileSet>
                                            <directory>${project.build.directory}/jacoco-output/</directory>
                                            <includes>
                                                <include>*.exec</include>
                                            </includes>
                                        </fileSet>
                                    </fileSets>
                                    <destFile>${project.build.directory}/jacoco-output/merged.exec</destFile>
                                </configuration>
                            </execution>
                            <execution>
                                <id>create-merged-report</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                                <configuration>
                                    <dataFile>${project.build.directory}/jacoco-output/merged.exec</dataFile>
                                    <outputDirectory>${project.reporting.outputDirectory}/jacoco-merged-test-coverage-report</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven-javadoc-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>build-javadocs</id>
                                <goals>
                                    <goal>javadoc</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <detectLinks>false</detectLinks>
                            <doclint>none</doclint>
                            <failOnError>false</failOnError>
                            <keywords>true</keywords>
                            <linksource>false</linksource>
                            <quiet>true</quiet>
                            <source>${java.version}</source>
                            <tags>
                                <tag>
                                    <name>GlossaryTerm</name>
                                    <placement>a</placement>
                                </tag>
                            </tags>
                            <verbose>true</verbose>
                            <doclet>nl.talsmasoftware.umldoclet.UMLDoclet</doclet>
                            <docletArtifact>
                                <groupId>nl.talsmasoftware</groupId>
                                <artifactId>umldoclet</artifactId>
                                <version>2.0.9</version>
                            </docletArtifact>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>${maven-source-plugin.version}</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>gpg</id>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-gpg-plugin</artifactId>
                            <version>${maven-gpg-plugin.version}</version>
                            <executions>
                                <execution>
                                    <id>sign-artifacts</id>
                                    <phase>verify</phase>
                                    <goals>
                                        <goal>sign</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <artifactId>maven-gpg-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>schemagen</id>
            <!-- Used to create an ERD schema diagram -->
            <properties>
                <schemaspy-maven-plugin.version>5.1.0</schemaspy-maven-plugin.version>
                <surefireArgs>-Dspring.profiles.active=ASYNCHRONOUS,TEST,TESTPG</surefireArgs>
                <schemagen.outputDirectory>${project.build.directory}/site/${project.version}</schemagen.outputDirectory>
                <M2_REPO_DIR>/home/travis/.m2/repository</M2_REPO_DIR>
                <SCHEMA>public</SCHEMA>
                <DB_USERNAME>KARL</DB_USERNAME>
                <DB_PASSWORD>KARL</DB_PASSWORD>
                <DB_HOST>localhost</DB_HOST>
                <DB_PORT>5432</DB_PORT>
                <DB_NAME>testdb</DB_NAME>
            </properties>
            <reporting>
                <plugins>
                    <plugin>
                        <groupId>nl.geodienstencentrum.maven</groupId>
                        <artifactId>schemaspy-maven-plugin</artifactId>
                        <configuration>
                            <databaseType>pgsql</databaseType>
                            <database>${DB_NAME}</database>
                            <host>${DB_HOST}</host>
                            <port>${DB_PORT}</port>
                            <user>${DB_USERNAME}</user>
                            <schema>${SCHEMA}</schema>
                            <outputDirectory>${schemagen.outputDirectory}</outputDirectory>
                            <password>${DB_PASSWORD}</password>
                            <pathToDrivers>${M2_REPO_DIR}/org/postgresql/postgresql/${postgresql.version}/postgresql-${postgresql.version}.jar</pathToDrivers>
                        </configuration>
                    </plugin>
                </plugins>
            </reporting>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <artifactId>maven-surefire-report-plugin</artifactId>
                            <version>${maven-surefire-report-plugin.version}</version>
                            <configuration>
                                <aggregate>false</aggregate>
                            </configuration>
                            <dependencies>
                                <dependency>
                                    <groupId>org.postgresql</groupId>
                                    <artifactId>postgresql</artifactId>
                                    <version>${postgresql.version}</version>
                                </dependency>
                            </dependencies>
                        </plugin>
                        <plugin>
                            <groupId>nl.geodienstencentrum.maven</groupId>
                            <artifactId>schemaspy-maven-plugin</artifactId>
                            <version>${schemaspy-maven-plugin.version}</version>
                            <dependencies>
                                <dependency>
                                    <groupId>org.postgresql</groupId>
                                    <artifactId>postgresql</artifactId>
                                    <version>${postgresql.version}</version>
                                </dependency>
                            </dependencies>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>nl.geodienstencentrum.maven</groupId>
                        <artifactId>schemaspy-maven-plugin</artifactId>
                        <version>${schemaspy-maven-plugin.version}</version>
                        <dependencies>
                            <dependency>
                                <groupId>org.postgresql</groupId>
                                <artifactId>postgresql</artifactId>
                                <version>${postgresql.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <properties>
        <!-- used by surefire plugin in combination with jacoco -->
        <argLine><![CDATA[-Dcatalina.base=${project.build.directory}
        --enable-preview
        -Dsurefire.skipAfterFailureCount=1
        -Dorg.springframework.restdocs.outputDir=./target/generated-snippets
        -Ddocumentation.dir=./target
        -Dorg.jboss.logging.provider=slf4j
        -Dfile.encoding=${project.build.sourceEncoding} ${surefireArgs}]]>
        </argLine>
        <ci.buildNumber>MANUAL</ci.buildNumber>
        <debug.info>true</debug.info>
        <!-- Disable lookup of dependency locations in the maven-project-info-reports-plugin -->
        <dependency.locations.enabled>false</dependency.locations.enabled>
        <documentation.dir>${project.build.directory}</documentation.dir>
        <documentation.snippet.dir>${documentation.dir}/generated-snippets</documentation.snippet.dir>
        <documentation.input.dir>${documentation.dir}/generated-docs</documentation.input.dir>
        <documentation.output.dir>${documentation.dir}/site/rest/${project.version}</documentation.output.dir>
        <java.version>17</java.version>
        <javadoc.output.dir>${project.reporting.outputDirectory}/apidocs/${project.version}</javadoc.output.dir> <!-- Javadoc plugin config -->
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <scmpublish.content>${project.build.directory}/site</scmpublish.content>
        <scmuser></scmuser>
        <skipTests>false</skipTests>
        <snippetsDirectory>${documentation.snippet.dir}</snippetsDirectory>
        <surefireArgs>-Dspring.profiles.active=TEST</surefireArgs>

        <!-- Dependency versions -->
        <ameba-lib.version>3.0-SNAPSHOT</ameba-lib.version>
        <apiguardian-api.version>1.1.2</apiguardian-api.version>
        <archunit.version>0.22.0</archunit.version>
        <aspectj.version>1.9.7</aspectj.version> <!-- Keep in sync with boot -->
        <aspectj-tools.version>1.9.9.1</aspectj-tools.version>
        <commons-collections.version>3.2.2</commons-collections.version> <!-- This is bound to Dozer / Eureka Client -->
        <dozer.version>6.5.2</dozer.version>
        <feign-httpclient.version>11.8</feign-httpclient.version> <!-- Keep in sync with spring-cloud-openfeign-dependencies -->
        <logstash-logback-encoder.version>7.2</logstash-logback-encoder.version>
        <logback.version>1.2.11</logback.version> <!-- Keep in sync with boot -->
        <modulith.version>1.3.0</modulith.version>
        <postgresql.version>42.3.5</postgresql.version> <!-- Keep in sync with Boot -->
        <querydsl.version>5.0.0</querydsl.version>

        <spring-boot.version>2.7.0</spring-boot.version>
        <spring-data-envers.version>2.7.0</spring-data-envers.version>
        <spring-restdocs-mockmvc.version>2.0.6.RELEASE</spring-restdocs-mockmvc.version>
        <spring-framework.version>5.3.20</spring-framework.version> <!-- Keep in sync with boot -->
        <start-class></start-class> <!-- keep it empty, set by actual boot module -->

        <!--   Plugin versions   -->
        <apt-maven-plugin.version>1.1.3</apt-maven-plugin.version>
        <asciidoctor-maven-plugin.version>2.2.2</asciidoctor-maven-plugin.version>
        <aspectj-maven-plugin.version>1.14.0</aspectj-maven-plugin.version>
        <jacoco-maven-plugin.version>0.8.9-SNAPSHOT</jacoco-maven-plugin.version>
        <jib-maven-plugin.version>3.2.1</jib-maven-plugin.version>
        <git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version> <!-- Keep in sync with boot -->
        <maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version> <!-- Keep in sync with boot -->
        <maven-enforcer-plugin.version>3.0.0</maven-enforcer-plugin.version> <!-- Keep in sync with boot -->
        <maven-failsafe-plugin.version>3.0.0-M6</maven-failsafe-plugin.version> <!-- Keep in sync with boot -->
        <maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version>
        <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version> <!-- Keep in sync with boot -->
        <maven-javadoc-plugin.version>3.4.0</maven-javadoc-plugin.version>
        <maven-project-info-reports-plugin.version>3.1.2</maven-project-info-reports-plugin.version>
        <maven-resources-plugin.version>3.2.0</maven-resources-plugin.version> <!-- Keep in sync with boot -->
        <maven-scm-publish-plugin.version>3.1.0</maven-scm-publish-plugin.version>
        <maven-site-plugin.version>3.12.0</maven-site-plugin.version>
        <maven-source-plugin.version>3.2.1</maven-source-plugin.version> <!-- Keep in sync with boot -->
        <maven-surefire-plugin.version>3.0.0-M6</maven-surefire-plugin.version>
        <maven-surefire-report-plugin.version>3.0.0-M6</maven-surefire-report-plugin.version>
        <versions-maven-plugin.version>2.10.0</versions-maven-plugin.version> <!-- Keep in sync with boot -->
        <wagon-ftp.version>3.4.3</wagon-ftp.version>
        <wagon-ssh.version>3.4.3</wagon-ssh.version>
    </properties>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${maven-javadoc-plugin.version}</version>
                <reportSets>
                    <reportSet>
                        <inherited>true</inherited>
                        <reports>
                            <report>javadoc</report>
                        </reports>
                        <configuration>
                            <aggregate>true</aggregate>
                            <detectLinks>false</detectLinks>
                            <doclint>none</doclint>
                            <failOnError>false</failOnError>
                            <keywords>true</keywords>
                            <linksource>false</linksource>
                            <quiet>true</quiet>
                            <reportOutputDirectory>${javadoc.output.dir}</reportOutputDirectory>
                            <show>private</show>
                            <source>${java.version}</source>
                            <tags>
                                <tag>
                                    <name>GlossaryTerm</name>
                                    <placement>a</placement>
                                </tag>
                            </tags>
                            <verbose>false</verbose>
                        </configuration>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>${maven-surefire-report-plugin.version}</version>
                <configuration>
                    <aggregate>false</aggregate>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>${maven-project-info-reports-plugin.version}</version>
                <reportSets>
                    <reportSet>
                        <inherited>false</inherited>
                        <reports>
                            <report>index</report>
                            <report>summary</report>
                            <report>team</report>
                            <report>issue-management</report>
                            <report>ci-management</report>
                            <report>scm</report>
                            <report>dependencies</report>
                            <report>dependency-convergence</report>
                            <report>dependency-management</report>
                            <report>plugin-management</report>
                            <report>plugins</report>
                        </reports>
                    </reportSet>
                    <reportSet>
                        <inherited>false</inherited>
                        <reports>
                            <report>team</report>
                            <report>issue-management</report>
                            <report>licenses</report>
                            <report>mailing-lists</report>
                            <report>ci-management</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>${maven-site-plugin.version}</version>
            </plugin>
        </plugins>
    </reporting>

    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>${wagon-ssh.version}</version>
            </extension>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ftp</artifactId>
                <version>${wagon-ftp.version}</version>
            </extension>
        </extensions>
        <!-- Turn on filtering by default for application properties -->
        <resources>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/bootstrap*.yml</include>
                    <include>**/application*.yml</include>
                    <include>**/application*.yaml</include>
                    <include>**/application*.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
                <excludes>
                    <exclude>**/bootstrap*.yml</exclude>
                    <exclude>**/application*.yml</exclude>
                    <exclude>**/application*.yaml</exclude>
                    <exclude>**/application*.properties</exclude>
                </excludes>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.mysema.maven</groupId>
                    <artifactId>apt-maven-plugin</artifactId>
                    <version>${apt-maven-plugin.version}</version>
                    <executions>
                        <execution>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>process</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>target/generated-sources/jpa</outputDirectory>
                                <options>
                                    <querydsl.entityAccessors>true</querydsl.entityAccessors>
                                    <querydsl.listAccessors>true</querydsl.listAccessors>
                                </options>
                                <processors>
                                    <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                                </processors>
                            </configuration>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>com.querydsl</groupId>
                            <artifactId>querydsl-apt</artifactId>
                            <version>${querydsl.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>com.querydsl</groupId>
                            <artifactId>querydsl-jpa</artifactId>
                            <classifier>apt</classifier>
                            <version>${querydsl.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>com.google.cloud.tools</groupId>
                    <artifactId>jib-maven-plugin</artifactId>
                    <version>${jib-maven-plugin.version}</version>
                    <configuration>
                        <from>
                            <image>openjdk:17.0.1-oracle</image>
                        </from>
                        <to>
                            <image>docker.io/openwms/${project.artifactId}:latest</image>
                        </to>
                        <container>
                            <jvmFlags>
                                <jvmFlag>-Xss512k</jvmFlag>
                            </jvmFlags>
                            <useCurrentTimestamp>true</useCurrentTimestamp>
                        </container>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <configuration>
                        <forceJavacCompilerUse>true</forceJavacCompilerUse>
                        <debug>${debug.info}</debug>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <fork>true</fork>
                        <optimize>true</optimize>
                        <parameters>true</parameters>
                        <release>${java.version}</release>
                        <compilerArgs>
                            <compilerArg>
                                --enable-preview
                            </compilerArg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${maven-enforcer-plugin.version}</version>
                    <configuration>
                        <rules>
                            <requireJavaVersion>
                                <message>At least a JDK in version ${java.version} is required.</message>
                                <version>${java.version}</version>
                            </requireJavaVersion>
                            <DependencyConvergence/>
                        </rules>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${maven-failsafe-plugin.version}</version>
                    <configuration>
                        <argLine>@{argLine}</argLine>
                        <includes>
                            <include>**/*IT.java</include>
                            <include>**/*Documentation.java</include>
                        </includes>
                        <classesDirectory>${project.build.outputDirectory}</classesDirectory>
                    </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>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${maven-resources-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>copy-resources</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${documentation.output.dir}</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>${documentation.input.dir}</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                        <execution>
                            <id>copy-asciidoc</id>
                            <phase>pre-site</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${documentation.output.dir}</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>${documentation.input.dir}</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-scm-publish-plugin</artifactId>
                    <version>${maven-scm-publish-plugin.version}</version>
                    <configuration>
                        <scmBranch>gh-pages</scmBranch>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${maven-site-plugin.version}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                    <configuration>
                        <!-- Never set a forkCount to 0 bc. of Jacoco -->
                        <excludes>
                            <exclude>**/Abstract*.java</exclude>
                            <exclude>**/*Tests.java</exclude>
                        </excludes>
                        <includes>
                            <include>**/*Test.java</include>
                        </includes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>aspectj-maven-plugin</artifactId>
                    <version>${aspectj-maven-plugin.version}</version>
                    <configuration>
                        <showWeaveInfo>false</showWeaveInfo>
                        <complianceLevel>${java.version}</complianceLevel>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <Xlint>ignore</Xlint>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <verbose>false</verbose>
                        <aspectLibraries>
                            <aspectLibrary>
                                <groupId>org.springframework</groupId>
                                <artifactId>spring-aspects</artifactId>
                            </aspectLibrary>
                        </aspectLibraries>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>compile</goal>
                                <goal>test-compile</goal>
                            </goals>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.aspectj</groupId>
                            <artifactId>aspectjrt</artifactId>
                            <version>${aspectj.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.aspectj</groupId>
                            <artifactId>aspectjweaver</artifactId>
                            <version>${aspectj.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.aspectj</groupId>
                            <artifactId>aspectjtools</artifactId>
                            <version>${aspectj-tools.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>${git-commit-id-plugin.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>revision</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <verbose>true</verbose>
                        <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
                        <generateGitPropertiesFile>true</generateGitPropertiesFile>
                        <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.asciidoctor</groupId>
                    <artifactId>asciidoctor-maven-plugin</artifactId>
                    <version>${asciidoctor-maven-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>generate-docs</id>
                            <phase>post-integration-test</phase>
                            <goals>
                                <goal>process-asciidoc</goal>
                            </goals>
                            <configuration>
                                <backend>html</backend>
                                <doctype>book</doctype>
                                <attributes>
                                    <bversion>${project.version}</bversion>
                                    <bnumber>${ci.buildNumber}</bnumber>
                                    <generated>${documentation.snippet.dir}</generated>
                                </attributes>
                                <skip>${skipTests}</skip>
                            </configuration>
                        </execution>
                        <execution>
                            <id>generate-docs-site</id>
                            <phase>site</phase>
                            <goals>
                                <goal>process-asciidoc</goal>
                            </goals>
                            <configuration>
                                <backend>html</backend>
                                <doctype>book</doctype>
                                <attributes>
                                    <bversion>${project.version}</bversion>
                                    <bnumber>${ci.buildNumber}</bnumber>
                                    <generated>${documentation.snippet.dir}</generated>
                                </attributes>
                                <skip>${skipTests}</skip>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>${jacoco-maven-plugin.version}</version>
                    <!--executions>
                        <execution>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>report</id>
                            <phase>test</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                        </execution>
                    </executions-->
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>${versions-maven-plugin.version}</version>
                    <configuration>
                        <generateBackupPoms>false</generateBackupPoms>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven-jar-plugin.version}</version>
            </plugin>
            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-access</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <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>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>${commons-collections.version}</version>
            </dependency>
            <dependency>
                <groupId>com.querydsl</groupId>
                <artifactId>querydsl-apt</artifactId>
                <version>${querydsl.version}</version>
            </dependency>
            <dependency>
                <groupId>com.querydsl</groupId>
                <artifactId>querydsl-core</artifactId>
                <version>${querydsl.version}</version>
            </dependency>
            <dependency>
                <groupId>com.querydsl</groupId>
                <artifactId>querydsl-collections</artifactId>
                <version>${querydsl.version}</version>
            </dependency>
            <dependency>
                <groupId>com.querydsl</groupId>
                <artifactId>querydsl-jpa</artifactId>
                <version>${querydsl.version}</version>
            </dependency>
            <dependency>
                <groupId>com.tngtech.archunit</groupId>
                <artifactId>archunit-junit5-engine</artifactId>
                <version>${archunit.version}</version>
                <exclusions>
                    <exclusion>
                        <!-- Depends on the JUnit Jupiter version used -->
                        <groupId>org.junit.platform</groupId>
                        <artifactId>junit-platform-engine</artifactId>
                    </exclusion>
                    <exclusion>
                        <!-- Newer version comes with junit-jupiter-api -->
                        <groupId>org.apiguardian</groupId>
                        <artifactId>apiguardian-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <!-- Newer version comes with junit-jupiter-api -->
                        <groupId>org.opentest4j</groupId>
                        <artifactId>opentest4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-httpclient</artifactId>
                <version>${feign-httpclient.version}</version>
            </dependency>
            <dependency>
                <groupId>io.interface21</groupId>
                <artifactId>ameba-lib</artifactId>
                <version>${ameba-lib.version}</version>
            </dependency>
            <dependency>
                <groupId>io.interface21</groupId>
                <artifactId>ameba-lib</artifactId>
                <version>${ameba-lib.version}</version>
                <type>test-jar</type>
            </dependency>
            <dependency>
                <groupId>net.logstash.logback</groupId>
                <artifactId>logstash-logback-encoder</artifactId>
                <version>${logstash-logback-encoder.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.dozermapper</groupId>
                <artifactId>dozer-core</artifactId>
                <version>${dozer.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>jcl-over-slf4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apiguardian</groupId>
                <artifactId>apiguardian-api</artifactId>
                <version>${apiguardian-api.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjtools</artifactId>
                <version>${aspectj-tools.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-envers</artifactId>
                <version>${spring-data-envers.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- Test dependencies -->
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.tngtech.archunit</groupId>
            <artifactId>archunit-junit5-engine</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
