<?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>io.openleap</groupId>
	<artifactId>io.openleap.parent</artifactId>
	<version>44</version>
	<packaging>pom</packaging>
	<name>OpenLeap.io Parent Project</name>
	<description>OpenLeap.io is an open source microservice plattform</description>
	<url>https://www.openleap.io</url>
	<inceptionYear>2024</inceptionYear>

	<issueManagement>
		<system>JIRA</system>
		<url>https://openleap.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>OpenLeap.io is distributed as open-source</comments>
		</license>
	</licenses>

	<distributionManagement>
		<site>
			<id>site</id>
			<name>OpenLeap.io WebSite</name>
			<url>scm:git:git@github.com:openleap-io/io.openleap.git</url>
		</site>
	</distributionManagement>

	<scm>
		<url>https://github.com/openleap-io/io.openleap</url>
		<connection>scm:git:https://github.com/openleap-io/io.openleap.git</connection>
		<developerConnection>
			scm:git:https://github.com:openleap-io/io.openleap.git</developerConnection>
	</scm>

	<organization>
		<name>OpenLeap.io</name>
		<url>https://www.openleap.io</url>
	</organization>

	<developers>
		<developer>
			<id>openleap.io</id>
			<name>Soeren Kemmann</name>
			<email>kemmann@openleap.io</email>
			<url>https://github.com/openleap-io</url>
			<organization>B+B Unternehmensberatung</organization>
			<organizationUrl>https://www.bb-online.de</organizationUrl>
			<timezone>+2</timezone>
			<roles>
				<role>Project Lead</role>
				<role>Architect</role>
				<role>Developer</role>
				<role>Deployer</role>
			</roles>
		</developer>
	</developers>

	<contributors>
		<contributor>
			<name>Lucas Gross</name>
			<email>lucas.gross@openleap.io</email>
			<organization>B+B Unternehmensberatung</organization>
			<organizationUrl>https://www.bb-online.de</organizationUrl>
			<timezone>+2</timezone>
			<roles>
				<role>Developer</role>
				<role>Site Master</role>
			</roles>
		</contributor>

	</contributors>


	<ciManagement>
		<system>GitHub</system>
		<url>https://github.com/openleap-io/io.openleap/actions</url>
		<notifiers>
			<notifier>
				<type>mail</type>
				<configuration>
					<address>ci@openleap.io</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>openleap-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.2.0</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>release-project</id>
			<properties>
				<developerConnectionUrl>
					scm:git:https://openleapio@github.com/openleap-io/${project.artifactId}.git</developerConnectionUrl>
				<scmpublish.pubScmUrl>
					scm:git:https://openleapio@github.com/openleap-io/${project.artifactId}.git</scmpublish.pubScmUrl>
			</properties>
		</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/runner/.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}
        -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>21</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>4.0-SNAPSHOT</ameba-lib.version>
		<apiguardian-api.version>1.1.2</apiguardian-api.version>
		<archunit.version>1.3.0</archunit.version>
		<aspectj.version>1.9.22.1</aspectj.version> <!-- Keep in sync with boot -->
		<aspectj-tools.version>1.9.22.1</aspectj-tools.version>
		<feign.version>13.3</feign.version> <!-- Keep in sync with
		spring-cloud-openfeign-dependencies -->
		<jolokia-core.version>1.7.2</jolokia-core.version>
		<logstash-logback-encoder.version>8.0</logstash-logback-encoder.version>
		<logback.version>1.5.7</logback.version> <!-- Keep in sync with boot -->
		<org.mapstruct.version>1.6.0</org.mapstruct.version>
		<postgresql.version>42.7.3</postgresql.version> <!-- Keep in sync with
		Boot -->
		<querydsl.version>5.1.0</querydsl.version>

		<spring-boot.version>3.3.2</spring-boot.version>
		<spring-data-envers.version>3.3.3</spring-data-envers.version>
		<spring-framework.version>6.1.12</spring-framework.version> <!-- Keep in
		sync with boot -->
		<spring-plugin-core.version>3.0.0</spring-plugin-core.version>
		<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>3.0.0</asciidoctor-maven-plugin.version>
		<aspectj-maven-plugin.version>1.15.0</aspectj-maven-plugin.version>
		<jacoco-maven-plugin.version>0.8.12</jacoco-maven-plugin.version>
		<jib-maven-plugin.version>3.4.3</jib-maven-plugin.version>
		<git-commit-id-maven-plugin.version>9.0.1</git-commit-id-maven-plugin.version> <!--
		Keep in sync with boot -->
		<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version> <!--
		Keep in sync with boot -->
		<maven-enforcer-plugin.version>3.5.0</maven-enforcer-plugin.version> <!--
		Keep in sync with boot -->
		<maven-failsafe-plugin.version>3.4.0</maven-failsafe-plugin.version>
		<maven-gpg-plugin.version>3.2.5</maven-gpg-plugin.version>
		<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version> <!-- Keep in
		sync with boot -->
		<maven-javadoc-plugin.version>3.8.0</maven-javadoc-plugin.version>
		<maven-project-info-reports-plugin.version>3.6.2</maven-project-info-reports-plugin.version>
		<maven-release-plugin.version>3.1.1</maven-release-plugin.version>
		<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version> <!--
		Keep in sync with boot -->
		<maven-scm-publish-plugin.version>3.3.0</maven-scm-publish-plugin.version>
		<maven-site-plugin.version>4.0.0-M16</maven-site-plugin.version>
		<maven-source-plugin.version>3.3.1</maven-source-plugin.version> <!--
		Keep in sync with boot -->
		<maven-surefire-plugin.version>3.4.0</maven-surefire-plugin.version> <!--
		Keep in sync with boot -->
		<maven-surefire-report-plugin.version>3.4.0</maven-surefire-report-plugin.version>
		<versions-maven-plugin.version>2.17.1</versions-maven-plugin.version> <!--
		Keep in sync with boot -->
		<wagon-ftp.version>3.5.3</wagon-ftp.version>
		<wagon-ssh.version>3.5.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>amazoncorretto:21-alpine</image>
						</from>
						<to>
							<image>
								docker.io/openleap/${project.artifactId}:latest</image>
						</to>
						<container>
							<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>
						<enablePreview>false</enablePreview>
						<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>
					</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-release-plugin</artifactId>
					<version>${maven-release-plugin.version}</version>
					<configuration>
						<autoVersionSubmodules>true</autoVersionSubmodules>
						<goals>deploy site scm-publish:publish-scm</goals>
						<preparationProfiles>release,release-project</preparationProfiles>
						<releaseProfiles>release,release-project</releaseProfiles>
					</configuration>
				</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>io.github.git-commit-id</groupId>
					<artifactId>git-commit-id-maven-plugin</artifactId>
					<version>${git-commit-id-maven-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>
				<version>${maven-enforcer-plugin.version}</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>${maven-jar-plugin.version}</version>
			</plugin>
			<plugin>
				<groupId>io.github.git-commit-id</groupId>
				<artifactId>git-commit-id-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.sonatype.central</groupId>
				<artifactId>central-publishing-maven-plugin</artifactId>
				<version>0.5.0</version>
				<extensions>true</extensions>
				<configuration>
					<publishingServerId>central</publishingServerId>
				</configuration>
			</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>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.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>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.jolokia</groupId>
				<artifactId>jolokia-core</artifactId>
				<version>${jolokia-core.version}</version>
			</dependency>
			<dependency>
				<groupId>org.mapstruct</groupId>
				<artifactId>mapstruct</artifactId>
				<version>${org.mapstruct.version}</version>
			</dependency>
			<dependency>
				<groupId>org.mapstruct</groupId>
				<artifactId>mapstruct-processor</artifactId>
				<version>${org.mapstruct.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>
			<dependency>
				<groupId>org.springframework.plugin</groupId>
				<artifactId>spring-plugin-core</artifactId>
				<version>${spring-plugin-core.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.plugin</groupId>
				<artifactId>spring-plugin-metadata</artifactId>
				<version>${spring-plugin-core.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>
