<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>ch.nexsol-tech.spring</groupId>
		<artifactId>spring-parent</artifactId>
		<version>1.0.0</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<artifactId>spring-build</artifactId>
	<packaging>pom</packaging>


	<properties>

		<!-- Plugins version -->

		<build-helper-maven-plugin.version>3.6.0</build-helper-maven-plugin.version>
		<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
		<versions-maven-plugin.version>2.16.2</versions-maven-plugin.version>
		<maven-clean-plugin.version>3.3.2</maven-clean-plugin.version>
		<maven-site-plugin.version>3.12.1</maven-site-plugin.version>
		<maven-dependency-plugin.version>3.6.1</maven-dependency-plugin.version>
		<maven-deploy-plugin.version>3.1.2</maven-deploy-plugin.version>
		<maven-enforcer-plugin.version>3.5.0</maven-enforcer-plugin.version>
		<maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version>
		<maven-failsafe-plugin.version>3.2.5</maven-failsafe-plugin.version>
		<maven-install-plugin.version>3.1.2</maven-install-plugin.version>
		<maven-jar-plugin.version>3.4.1</maven-jar-plugin.version>
		<maven-javadoc-plugin.version>3.7.0</maven-javadoc-plugin.version>
		<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
		<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
		<maven-war-plugin.version>3.4.0</maven-war-plugin.version>
		<maven-gpg-plugin.version>3.2.4</maven-gpg-plugin.version>
		<frontend-maven-plugin.version>1.15.0</frontend-maven-plugin.version>
		<jacoco-maven-plugin.version>0.8.12</jacoco-maven-plugin.version>
		<asciidoctor-maven-plugin.version>3.0.0</asciidoctor-maven-plugin.version>
		<asciidoctor-converter-doxia-module.version>3.0.0</asciidoctor-converter-doxia-module.version>
		<git-commit-id-maven-plugin.version>4.9.10</git-commit-id-maven-plugin.version>
		<flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version>
		<maven-checkstyle-plugin.version>3.4.0</maven-checkstyle-plugin.version>
		<checkstyle.version>10.17.0</checkstyle.version>
		<spring-javaformat.version>0.0.41</spring-javaformat.version>
		<spring-javaformat-checkstyle.version>0.0.41</spring-javaformat-checkstyle.version>
		<nexus-staging-maven-plugin.version>1.7.0</nexus-staging-maven-plugin.version>
		<node.version>v18.20.2</node.version>
		<npm.version>10.5.2</npm.version>

		<sonar-maven-plugin.version>3.11.0.3922</sonar-maven-plugin.version>

		<skip.git-commit-id>false</skip.git-commit-id>
		<timestamp-version.number>${git.commit.time}-${git.commit.id.abbrev}</timestamp-version.number>
		<git-version.number>${git.commit.id.full}</git-version.number>

		<skip.kafka-schema-registry-maven-plugin>false</skip.kafka-schema-registry-maven-plugin>

		<skip.unit.tests>false</skip.unit.tests>
		<skip.integration.tests>false</skip.integration.tests>

		<disable.javaformat>false</disable.javaformat>
		<disable.checkstyle>false</disable.checkstyle>
		<disable.archunit>false</disable.archunit>

		<maven-checkstyle-plugin.failsOnError>false</maven-checkstyle-plugin.failsOnError>
		<maven-checkstyle-plugin.failOnViolation>false</maven-checkstyle-plugin.failOnViolation>
		<maven-checkstyle-plugin.includeTestSourceDirectory>true</maven-checkstyle-plugin.includeTestSourceDirectory>
		<spring-cloud-build-checkstyle.branch>master</spring-cloud-build-checkstyle.branch>
		<checkstyle.suppressions.file>
			https://raw.githubusercontent.com/nexsol-technologies/spring-build-tools/main/checkstyle/checkstyle-suppressions.xml</checkstyle.suppressions.file>
		<checkstyle.additional.suppressions.file>
			${project.basedir}/src/checkstyle/checkstyle-suppressions.xml</checkstyle.additional.suppressions.file>
		<jacoco.execution.data.path>${project.build.directory}/coverage-reports</jacoco.execution.data.path>
		<jacoco.it.execution.data.file>
			${jacoco.execution.data.path}/jacoco-it.exec</jacoco.it.execution.data.file>
		<jacoco.ut.execution.data.file>
			${jacoco.execution.data.path}/jacoco-ut.exec</jacoco.ut.execution.data.file>

	</properties>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
					<configuration>
						<layers>
							<enabled>true</enabled>
						</layers>
						<image>
							<builder>
								${docker-registry}/paketobuildpacks/builder-jammy-base:latest</builder>
							<runImage>
								${docker-registry}/paketobuildpacks/run-jammy-base:latest</runImage>
							<pullPolicy>IF_NOT_PRESENT</pullPolicy>
							<name>
								${publish-docker-registry}/${project.artifactId}:${project.version}</name>
							<env>
								<BP_JVM_VERSION>21</BP_JVM_VERSION>
								<BP_HEALTH_CHECKER_ENABLED>true</BP_HEALTH_CHECKER_ENABLED>

								<BPE_DELIM_JAVA_TOOL_OPTIONS
									xml:space="preserve"> </BPE_DELIM_JAVA_TOOL_OPTIONS>
								<BPE_APPEND_JAVA_TOOL_OPTIONS>-Dfile.encoding=UTF-8
									-Dserver.port=8080
									-Dmanagement.server.port=8088
									-XX:-TieredCompilation
									-XX:TieredStopAtLevel=1</BPE_APPEND_JAVA_TOOL_OPTIONS>

								<BPE_THC_PATH>/actuator/ping</BPE_THC_PATH>
								<BPE_THC_PORT>8088</BPE_THC_PORT>
							</env>
							<buildpacks>
								<buildpack>
									urn:cnb:builder:paketo-buildpacks/java</buildpack>
								<buildpack>
									gcr.io/paketo-buildpacks/health-checker:latest</buildpack>
							</buildpacks>
						</image>
					</configuration>
					<executions>
						<execution>
							<id>build-info</id>
							<goals>
								<goal>build-info</goal>
							</goals>
							<configuration>
								<additionalProperties>
									<encoding.source>UTF-8</encoding.source>
									<encoding.reporting>UTF-8</encoding.reporting>
									<java.source>${maven.compiler.release}</java.source>
									<java.target>${maven.compiler.release}</java.target>
									<parent.version>
										${spring-cloud-parent.version}</parent.version>
									<parent.artifactId>
										${project.parent.artifactId}</parent.artifactId>
									<parent.groupId>${project.parent.groupId}</parent.groupId>
								</additionalProperties>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<!-- COMPILE -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<configuration>
						<source>${java.version}</source>
						<target>${java.version}</target>
					</configuration>
				</plugin>
				<!-- TESTS -->
				<!-- Adds source and resource directories to our build -->
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>build-helper-maven-plugin</artifactId>
					<version>${build-helper-maven-plugin.version}</version>
					<executions>
						<!-- Add a new source directory to our build -->
						<execution>
							<id>add-integration-test-sources</id>
							<phase>generate-test-sources</phase>
							<goals>
								<goal>add-test-source</goal>
							</goals>
							<configuration>
								<!-- Configures the source directory of our
								integration tests -->
								<sources>
									<source>src/integration-test/java</source>
								</sources>
							</configuration>
						</execution>
						<!-- Add a new resource directory to our build -->
						<execution>
							<id>add-integration-test-resources</id>
							<phase>generate-test-resources</phase>
							<goals>
								<goal>add-test-resource</goal>
							</goals>
							<configuration>
								<!-- Configures the resource directory of our
								integration tests -->
								<resources>
									<!-- Placeholders that are found from the
									files located in the configured 
										resource directories are replaced with the property values found from the 
										profile specific configuration file. -->
									<resource>
										<filtering>true</filtering>
										<directory>
											src/integration-test/resources</directory>
									</resource>
								</resources>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>${maven-surefire-plugin.version}</version>
					<configuration>
						<!-- Sets the VM argument line used when unit tests are
						run. -->
						<argLine>${surefireArgLine}</argLine>
						<!-- Skips unit tests if the value of skip.unit.tests
						property is true -->
						<skipTests>${skip.unit.tests}</skipTests>
						<!-- Excludes integration tests when unit tests are run. -->
						<excludes>
							<exclude>**/IT*.java</exclude>
							<exclude>**/*IT.java</exclude>
							<exclude>**/*IntegrationTest.java</exclude>
							<exclude>**/*IntegrationTests.java</exclude>
						</excludes>
						<useSystemClassLoader>false</useSystemClassLoader>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-failsafe-plugin</artifactId>
					<version>${maven-failsafe-plugin.version}</version>
					<configuration>
						<!-- Sets the VM argument line used when integration
						tests are run. -->
						<argLine>${failsafeArgLine}</argLine>
						<!-- Skips integration tests if the value of
						skip.integration.tests 
							property is true -->
						<skipTests>${skip.integration.tests}</skipTests>
						<failIfNoTests>false</failIfNoTests>
						<includes>
							<!-- <include>**/*Test.java</include> -->
							<include>**/*IT.java</include>
							<include>**/*IntegrationTest.java</include>
							<include>**/*IntegrationTests.java</include>
						</includes>
						<testSourceDirectory>src/integration-test/java</testSourceDirectory>
						<useSystemClassLoader>false</useSystemClassLoader>
					</configuration>
					<executions>
						<execution>
							<phase>integration-test</phase>
							<goals>
								<goal>integration-test</goal>
								<goal>verify</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<!-- QUALITY -->
				<plugin>
					<groupId>org.sonarsource.scanner.maven</groupId>
					<artifactId>sonar-maven-plugin</artifactId>
					<version>${sonar-maven-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>${jacoco-maven-plugin.version}</version>
					<configuration>
						<append>true</append>
						<output>file</output>
					</configuration>
					<executions>
						<!-- Prepares the property pointing to the JaCoCo
						runtime agent which 
							is passed as VM argument when Maven the Surefire plugin is executed. -->
						<execution>
							<id>pre-unit-test</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
							<configuration>
								<!-- Sets the path to the file which contains
								the execution data. -->
								<destFile>${jacoco.ut.execution.data.file}</destFile>
								<!-- Sets the name of the property containing
								the settings for JaCoCo 
									runtime agent. -->
								<propertyName>surefireArgLine</propertyName>
							</configuration>
						</execution>
						<!-- Ensures that the code coverage report for unit
						tests is created 
							after unit tests have been run. -->
						<execution>
							<id>post-unit-test</id>
							<phase>test</phase>
							<goals>
								<goal>report</goal>
							</goals>
							<configuration>
								<!-- Sets the path to the file which contains
								the execution data. -->
								<dataFile>${jacoco.ut.execution.data.file}</dataFile>
								<!-- Sets the output directory for the code
								coverage report. -->
								<outputDirectory>
									${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
							</configuration>
						</execution>
						<!-- Prepares the property pointing to the JaCoCo
						runtime agent which 
							is passed as VM argument when Maven the Failsafe plugin is executed. -->
						<execution>
							<id>pre-integration-test</id>
							<phase>pre-integration-test</phase>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
							<configuration>
								<!-- Sets the path to the file which contains
								the execution data. -->
								<destFile>${jacoco.it.execution.data.file}</destFile>
								<!-- Sets the name of the property containing
								the settings for JaCoCo 
									runtime agent. -->
								<propertyName>failsafeArgLine</propertyName>
							</configuration>
						</execution>
						<!-- Ensures that the code coverage report for
						integration tests after 
							integration tests have been run. -->
						<execution>
							<id>post-integration-test</id>
							<phase>post-integration-test</phase>
							<goals>
								<goal>report</goal>
							</goals>
							<configuration>
								<!-- Sets the path to the file which contains
								the execution data. -->
								<dataFile>${jacoco.it.execution.data.file}</dataFile>
								<!-- Sets the output directory for the code
								coverage report. -->
								<outputDirectory>
									${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>io.spring.javaformat</groupId>
					<artifactId>spring-javaformat-maven-plugin</artifactId>
					<version>${spring-javaformat.version}</version>
					<configuration>
						<lineSeparator>lf</lineSeparator>
						<testSourceDirectories>
							<testSourceDirectory>
								src${file.separator}test${file.separator}java</testSourceDirectory>
							<testSourceDirectory>
								src${file.separator}integration-test${file.separator}java</testSourceDirectory>
						</testSourceDirectories>
					</configuration>
					<executions>
						<execution>
							<phase>generate-sources</phase>
							<inherited>true</inherited>
							<configuration>
								<skip>${disable.javaformat}</skip>
							</configuration>
							<goals>
								<goal>apply</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-checkstyle-plugin</artifactId>
					<version>${maven-checkstyle-plugin.version}</version>
					<dependencies>
						<dependency>
							<groupId>com.puppycrawl.tools</groupId>
							<artifactId>checkstyle</artifactId>
							<version>${checkstyle.version}</version>
						</dependency>
						<dependency>
							<groupId>io.spring.javaformat</groupId>
							<artifactId>spring-javaformat-checkstyle</artifactId>
							<version>${spring-javaformat-checkstyle.version}</version>
						</dependency>
					</dependencies>
					<configuration>
						<skip>${disable.checkstyle}</skip>
						<configLocation>
							https://raw.githubusercontent.com/nexsol-technologies/spring-build-tools/main/checkstyle/checkstyle.xml</configLocation>
						<headerLocation>
							https://raw.githubusercontent.com/nexsol-technologies/spring-build-tools/main/checkstyle/checkstyle-header.txt</headerLocation>
						<includeTestSourceDirectory>
							${maven-checkstyle-plugin.includeTestSourceDirectory}</includeTestSourceDirectory>
						<failsOnError>${maven-checkstyle-plugin.failsOnError}</failsOnError>
						<failOnViolation>
							${maven-checkstyle-plugin.failOnViolation} </failOnViolation>
						<propertyExpansion>
							checkstyle.build.directory=${project.build.directory}
							checkstyle.suppressions.file=${checkstyle.suppressions.file}
							checkstyle.additional.suppressions.file=${checkstyle.additional.suppressions.file}
							checkstyle.header.copyrightPattern=(20\d\d)
						</propertyExpansion>
						<testSourceDirectories>
							<testSourceDirectory>
								src/test/java</testSourceDirectory>
							<testSourceDirectory>src/integration-test/java</testSourceDirectory>
						</testSourceDirectories>
					</configuration>
					<executions>
						<execution>
							<id>checkstyle-validation</id>
							<phase>validate</phase>
							<inherited>true</inherited>
							<goals>
								<goal>check</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>com.societegenerale.commons</groupId>
					<artifactId>arch-unit-maven-plugin</artifactId>
					<version>${arch-unit-maven-plugin.version}</version>
					<configuration>
						<skip>${disable.archunit}</skip>
						<noFailOnError>true</noFailOnError>
						<rules>
							<preConfiguredRules>
								<rule>
									com.societegenerale.commons.plugin.rules.NoStandardStreamRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoJunitAssertRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoJodaTimeRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoJavaUtilDateRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoPowerMockRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoPrefixForInterfacesRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoPublicFieldRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoTestIgnoreWithoutCommentRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoInjectedFieldTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.NoAutowiredFieldTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.ConstantsAndStaticNonFinalFieldsNamesRuleTest</rule>
								<!--
								<rule>com.societegenerale.commons.plugin.rules.DontReturnNullCollectionTest</rule> -->
								<rule>
									com.societegenerale.commons.plugin.rules.HexagonalArchitectureTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.StringFieldsThatAreActuallyDatesRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.TestClassesNamingRuleTest</rule>
								<rule>
									com.societegenerale.commons.plugin.rules.TestMethodsNamingRuleTest</rule>
							</preConfiguredRules>
						</rules>
						<excludedPaths>
							<excludedPath>generated-sources</excludedPath>
							<excludedPath>annotations</excludedPath>
						</excludedPaths>
					</configuration>
				</plugin>

				<!-- PROJECT METADATA -->
				<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>
							<phase>initialize</phase>
						</execution>
					</executions>
					<configuration>
						<skip>${skip.git-commit-id}</skip>
						<verbose>false</verbose>
						<dateFormat>yyyyMMddHHmmss</dateFormat>
						<generateGitPropertiesFile>true</generateGitPropertiesFile>
						<generateGitPropertiesFilename>
							${project.build.outputDirectory}/git.properties
						</generateGitPropertiesFilename>
						<skipPoms>false</skipPoms>
						<injectAllReactorProjects>true</injectAllReactorProjects>
						<failOnNoGitDirectory>false</failOnNoGitDirectory>
						<failOnUnableToExtractRepoInfo>false</failOnUnableToExtractRepoInfo>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>${maven-javadoc-plugin.version}</version>
					<executions>
						<execution>
							<id>aggregate</id>
							<goals>
								<goal>jar</goal>
							</goals>
							<inherited>true</inherited>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>${maven-source-plugin.version}</version>
					<executions>
						<execution>
							<id>attach-sources</id>
							<goals>
								<goal>jar-no-fork</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.asciidoctor</groupId>
					<artifactId>asciidoctor-maven-plugin</artifactId>
					<version>${asciidoctor-maven-plugin.version}</version>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>${maven-javadoc-plugin.version}</version>
				<reportSets>
					<reportSet>
						<id>non-aggregate</id>
						<configuration>
						</configuration>
						<reports>
							<report>javadoc</report>
						</reports>
					</reportSet>
					<reportSet>
						<id>aggregate</id>
						<configuration>
						</configuration>
						<reports>
							<report>aggregate</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-report-plugin</artifactId>
				<version>${maven-surefire-report-plugin.version}</version>
				<configuration>
					<skipSurefireReport>${skip.unit.tests}</skipSurefireReport>
					<skipFailsafeReport>${skip.integration.tests}</skipFailsafeReport>
					<reportsDirectories>
						<reportsDirectory>
							${project.build.outputDirectory}/failsafe-reports</reportsDirectory>
					</reportsDirectories>
				</configuration>
				<reportSets>
					<reportSet>
						<id>integration-test</id>
						<reports>
							<report>failsafe-report-only</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>
			<plugin>
				<groupId>com.github.spyhunter99</groupId>
				<artifactId>jacoco-report-plugin</artifactId>
				<version>1.0.2</version>
				<reportSets>
					<reportSet>
						<reports>
							<report>jacoco-aggregate</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>
		</plugins>
	</reporting>

	<profiles>
		<profile>
			<id>default</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<build.profile.id>default</build.profile.id>
			</properties>
		</profile>

		<!-- The Configuration of the unit-test profile -->
		<profile>
			<id>unit-test</id>
			<properties>
				<!-- Specifies the build.profile.id property that must be equal
				than 
					the name of the directory that contains the profile specific configuration 
					file. Because the name of the directory that contains the configuration file 
					of the development profile is dev, we must set the value of the
				build.profile.id 
					property to dev. -->
				<build.profile.id>dev</build.profile.id>
				<!-- Only unit tests are run when the development profile is
				active -->
				<skip.integration.tests>true</skip.integration.tests>
				<skip.unit.tests>false</skip.unit.tests>
				<!-- disable quality checks during test phase -->
				<disable.javaformat>true</disable.javaformat>
				<disable.checkstyle>true</disable.checkstyle>
				<disable.archunit>true</disable.archunit>
				<skip.git-commit-id>true</skip.git-commit-id>
				<skip.kafka-schema-registry-maven-plugin>true</skip.kafka-schema-registry-maven-plugin>
			</properties>
		</profile>
		<!-- The Configuration of the integration-test profile -->
		<profile>
			<id>integration-test</id>
			<properties>
				<!-- Specifies the build.profile.id property that must be equal
				than 
					the name of the directory that contains the profile specific configuration 
					file. Because the name of the directory that contains the configuration file 
					of the integration-test profile is integration-test, we must set the value 
					of the build.profile.id property to integration-test. -->
				<build.profile.id>integration-test</build.profile.id>
				<!-- Only integration tests are run when the integration-test
				profile 
					is active -->
				<skip.integration.tests>false</skip.integration.tests>
				<skip.unit.tests>true</skip.unit.tests>
				<!-- disable quality checks during integration test phase -->
				<disable.javaformat>true</disable.javaformat>
				<disable.checkstyle>true</disable.checkstyle>
				<disable.archunit>true</disable.archunit>
				<skip.git-commit-id>true</skip.git-commit-id>
				<skip.kafka-schema-registry-maven-plugin>true</skip.kafka-schema-registry-maven-plugin>
			</properties>
		</profile>
		<profile>
			<id>all-tests</id>
			<properties>
				<build.profile.id>all-tests</build.profile.id>
				<!-- All tests are run. -->
				<skip.integration.tests>false</skip.integration.tests>
				<skip.unit.tests>false</skip.unit.tests>
				<!-- unable quality checks during integration test phase -->
				<disable.javaformat>false</disable.javaformat>
				<disable.checkstyle>false</disable.checkstyle>
				<disable.archunit>true</disable.archunit>
				<skip.git-commit-id>true</skip.git-commit-id>
				<skip.kafka-schema-registry-maven-plugin>true</skip.kafka-schema-registry-maven-plugin>
			</properties>
		</profile>
		<profile>
			<id>build-only</id>
			<properties>
				<build.profile.id>build-only</build.profile.id>
				<!-- All tests are disable. -->
				<skip.integration.tests>true</skip.integration.tests>
				<skip.unit.tests>true</skip.unit.tests>
				<!-- unable quality checks during integration test phase -->
				<disable.javaformat>true</disable.javaformat>
				<disable.checkstyle>true</disable.checkstyle>
				<disable.archunit>true</disable.archunit>
				<skip.git-commit-id>false</skip.git-commit-id>
				<skip.kafka-schema-registry-maven-plugin>false</skip.kafka-schema-registry-maven-plugin>
			</properties>
		</profile>

		<profile>
			<id>build-image-only</id>
			<properties>
				<build.profile.id>build-image-only</build.profile.id>
				<!-- All tests are disable. -->
				<skip.integration.tests>true</skip.integration.tests>
				<skip.unit.tests>true</skip.unit.tests>
				<!-- unable quality checks during integration test phase -->
				<disable.javaformat>true</disable.javaformat>
				<disable.checkstyle>true</disable.checkstyle>
				<disable.archunit>true</disable.archunit>
				<skip.git-commit-id>false</skip.git-commit-id>
				<skip.kafka-schema-registry-maven-plugin>false</skip.kafka-schema-registry-maven-plugin>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-maven-plugin</artifactId>
						<configuration>
							<image>
								<publish>false</publish>
								<name>
									${project.artifactId}:${project.version}</name>
							</image>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>build-publish-image-only</id>
			<properties>
				<build.profile.id>build-publish-image-only</build.profile.id>
				<!-- All tests are disable. -->
				<skip.integration.tests>true</skip.integration.tests>
				<skip.unit.tests>true</skip.unit.tests>
				<!-- unable quality checks during integration test phase -->
				<disable.javaformat>true</disable.javaformat>
				<disable.checkstyle>true</disable.checkstyle>
				<disable.archunit>true</disable.archunit>
				<skip.git-commit-id>false</skip.git-commit-id>
				<skip.kafka-schema-registry-maven-plugin>false</skip.kafka-schema-registry-maven-plugin>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-maven-plugin</artifactId>
						<configuration>
							<image>
								<publish>true</publish>
							</image>
							<docker>
								<publishRegistry>
									<username>
										${publish-docker-registry-username}</username>
									<password>
										${publish-docker-registry-password}</password>
									<url>${publish-docker-registry}</url>
								</publishRegistry>
							</docker>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>


</project>