<?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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.sap.cloud.sdk</groupId>
	<artifactId>sdk-parent</artifactId>
	<version>5.18.0</version>
	<packaging>pom</packaging>
	<name>SAP Cloud SDK - Parent POM</name>
	<description>Parent POM of the SAP Cloud SDK.</description>
	<url>https://sap.github.io/cloud-sdk/docs/java/getting-started</url>
	<organization>
		<name>SAP SE</name>
		<url>https://www.sap.com</url>
	</organization>
	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
		</license>
	</licenses>
	<developers>
		<developer>
			<name>SAP</name>
			<email>cloudsdk@sap.com</email>
			<organization>SAP SE</organization>
			<organizationUrl>https://www.sap.com</organizationUrl>
		</developer>
	</developers>
	<modules>
		<module>archetypes</module>
		<module>dependency-bundles/bom</module>
		<module>cloudplatform</module>
		<module>datamodel</module>
		<module>dependency-bundles/modules-bom</module>
		<module>s4hana</module>
		<module>testutil</module>
		<module>dependency-bundles/sdk-core</module>
	</modules>
	<scm>
		<connection />
		<url />
	</scm>
	<properties>
		<x-sap-release-audience>Public</x-sap-release-audience>
		<x-sap-release-maturity>Stable</x-sap-release-maturity>
		<!--  do not modify the following line, it is updated by the versioning script  -->
		<sdk.version>5.18.0</sdk.version>
		<maven.version>3.5</maven.version>
		<java.version>17</java.version>
		<java.failOnWarning>true</java.failOnWarning>
		<java.compilerArgument />
		<javadoc.opts />
		<project.rootdir>${project.basedir}</project.rootdir>
		<project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<project.build.generated-sources>${project.build.directory}/generated-sources/java</project.build.generated-sources>
		<project.build.javaCodeFormatter>${project.rootdir}/codestyle/java_formatter.xml</project.build.javaCodeFormatter>
		<skipFormatting>false</skipFormatting>
		<!--  Quality assurance  -->
		<enforcer.skipBanLoggingFrameworks>false</enforcer.skipBanLoggingFrameworks>
		<enforcer.skipEnforceScopeLoggerBridges>false</enforcer.skipEnforceScopeLoggerBridges>
		<enforcer.skipEnforceScopeJavaEE>false</enforcer.skipEnforceScopeJavaEE>
		<enforcer.skipEnforceScopeLombok>false</enforcer.skipEnforceScopeLombok>
		<enforcer.skipBanGeneratedModulesReference>false</enforcer.skipBanGeneratedModulesReference>
		<enforcer.skipBanJunit4>false</enforcer.skipBanJunit4>
		<surefire.forkCount>4</surefire.forkCount>
		<surefire.include>*</surefire.include>
		<surefire.exclude />
		<surefire.groups />
		<surefire.excludedGroups />
		<surefire.maxMemorySize>1024m</surefire.maxMemorySize>
		<surefire.logLevel>error</surefire.logLevel>
		<!--
                Use the argLine property to define the arguments for the JVMs that are forked by the surefire plugin.
                This avoids the need to use late property evaluation for configuring the jacoco plugin.
                Relying on late evaluation of properties such as @{argLine} can result in issues with certain IDEs.

                For more details, visit:
                https://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html
                 -->
		<argLine>-Xmx${surefire.maxMemorySize} -Dfile.encoding=${project.build.sourceEncoding} -Dorg.slf4j.simpleLogger.defaultLogLevel=${surefire.logLevel}</argLine>
		<jacoco.executionDataFile>${project.build.directory}/coverage-reports/jacoco.exec</jacoco.executionDataFile>
		<codeAnalysisExclusions>**/testclasses/**</codeAnalysisExclusions>
		<!--  Non-essential dependencies  -->
		<jco-api.version>4.87.9</jco-api.version>
		<jackson.version>2.18.3</jackson.version>
		<commons-configuration.version>1.10</commons-configuration.version>
		<!--  WordUtils used twice in OData generator  -->
		<json.version>20250107</json.version>
		<!--  XML used once in SOAP payload deserialisation  -->
		<!--  End of non-essential dependencies  -->
		<!--  Fully internal (test) dependencies  -->
		<!-- Spring dependencies -->
		<!-- Keep these versions consistent with the ones from the SAP Java Buildpack (after their 2.0 release) -->
		<!-- see https://github.wdf.sap.corp/xs2-java/xs-java-buildpack/blob/master/resources/pom.xml -->
		<spring.version>6.2.5</spring.version>
		<spring-security.version>6.1.5</spring-security.version>
		<slf4j.version>2.0.17</slf4j.version>
		<assertj-core.version>3.27.3</assertj-core.version>
		<assertj-vavr.version>0.4.3</assertj-vavr.version>
		<mockito.version>5.17.0</mockito.version>
		<jsonassert.version>1.5.3</jsonassert.version>
		<junit.jupiter.version>5.12.2</junit.jupiter.version>
		<codemodel.version>2.6</codemodel.version>
		<olingo-v4.version>5.0.0</olingo-v4.version>
		<olingo-v2.version>2.0.13</olingo-v2.version>
		<maven-plugin.version>3.9.9</maven-plugin.version>
		<maven-plugin-annotations.version>3.15.1</maven-plugin-annotations.version>
		<maven-plugin-testing.version>3.3.0</maven-plugin-testing.version>
		<caffeine.version>3.2.0</caffeine.version>
		<openapi-generator.version>7.12.0</openapi-generator.version>
		<io-swagger-core-v3.version>2.2.30</io-swagger-core-v3.version>
		<io-swagger-parser-v3.version>2.1.26</io-swagger-parser-v3.version>
		<io-swagger-core.version>1.6.11</io-swagger-core.version>
		<!--  sync plexus version with transitive dependency coming from "org.twadata.maven:mojo-executor"  -->
		<stax2-api.version>4.2.2</stax2-api.version>
		<bouncycastle.version>1.80</bouncycastle.version>
		<jakarta-activation.version>2.1.0</jakarta-activation.version>
		<qdox.version>2.2.0</qdox.version>
		<wiremock.version>3.12.1</wiremock.version>
		<checkstyle.version>10.23.0</checkstyle.version>
		<byte-buddy.version>1.17.5</byte-buddy.version>
		<snakeyaml.version>2.4</snakeyaml.version>
		<commons-codec.version>1.18.0</commons-codec.version>
		<jsr305.optional>true</jsr305.optional>
		<maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>
		<maven.compiler.proc>full</maven.compiler.proc>
	</properties>
	<dependencyManagement>
		<dependencies>
			<!--Dependencies with import scope-->
			<dependency>
				<groupId>com.sap.cloud.sdk</groupId>
				<artifactId>sdk-bom</artifactId>
				<version>${sdk.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<!-- Imported for multiple spring dependencies we use in tests -->
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-framework-bom</artifactId>
				<version>${spring.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<!--Dependencies with runtime scope-->
			<!-- replaces the excluded commons-logging with slf4j -->
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jcl-over-slf4j</artifactId>
				<version>${slf4j.version}</version>
				<scope>runtime</scope>
			</dependency>
			<!--Dependencies with provided scope-->
			<!--Used in Odata and openApi generators-->
			<dependency>
				<groupId>org.apache.maven</groupId>
				<artifactId>maven-core</artifactId>
				<version>${maven-plugin.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.maven</groupId>
				<artifactId>maven-plugin-api</artifactId>
				<version>${maven-plugin.version}</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.maven.plugin-tools</groupId>
				<artifactId>maven-plugin-annotations</artifactId>
				<version>${maven-plugin-annotations.version}</version>
				<scope>provided</scope>
			</dependency>
			<!--Dependencies used in generators-->
			<!--Used in Odata generator and test modules-->
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-simple</artifactId>
				<version>${slf4j.version}</version>
				<scope>runtime</scope>
			</dependency>
			<!--Dependencies with compile scope-->
			<!-- Contains JCo -->
			<dependency>
				<groupId>com.sap.cloud</groupId>
				<artifactId>neo-java-web-api</artifactId>
				<version>${jco-api.version}</version>
				<!-- we need it at compile time, but NOT at runtime.
				At runtime, the actual JCo artifacts from the buildpack take effect, not this dependency.-->
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>commons-configuration</groupId>
				<artifactId>commons-configuration</artifactId>
				<version>${commons-configuration.version}</version>
			</dependency>
			<!--Used in odata-generator-->
			<dependency>
				<groupId>com.sun.codemodel</groupId>
				<artifactId>codemodel</artifactId>
				<version>${codemodel.version}</version>
			</dependency>
			<!--Used in Odata v4 generator-->
			<dependency>
				<groupId>org.apache.olingo</groupId>
				<artifactId>odata-commons-core</artifactId>
				<version>${olingo-v4.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.olingo</groupId>
				<artifactId>odata-commons-api</artifactId>
				<version>${olingo-v4.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.olingo</groupId>
				<artifactId>odata-client-core</artifactId>
				<version>${olingo-v4.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.olingo</groupId>
				<artifactId>odata-client-api</artifactId>
				<version>${olingo-v4.version}</version>
			</dependency>
			<!--Used in odata-v4-generator and datamodel-metadata-generator-->
			<dependency>
				<groupId>com.fasterxml.jackson.dataformat</groupId>
				<artifactId>jackson-dataformat-xml</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<!-- Used in odata generator-->
			<dependency>
				<groupId>org.apache.olingo</groupId>
				<artifactId>olingo-odata2-api</artifactId>
				<version>${olingo-v2.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.olingo</groupId>
				<artifactId>olingo-odata2-core</artifactId>
				<version>${olingo-v2.version}</version>
			</dependency>
			<!--Used in datamodel-metadata-generator and odata-generator-utility-->
			<dependency>
				<groupId>com.thoughtworks.qdox</groupId>
				<artifactId>qdox</artifactId>
				<version>${qdox.version}</version>
			</dependency>
			<!--Used in openApi generator-->
			<dependency>
				<groupId>org.openapitools</groupId>
				<artifactId>openapi-generator</artifactId>
				<version>${openapi-generator.version}</version>
			</dependency>
			<dependency>
				<groupId>io.swagger.core.v3</groupId>
				<artifactId>swagger-models</artifactId>
				<version>${io-swagger-core-v3.version}</version>
			</dependency>
			<dependency>
				<groupId>io.swagger.parser.v3</groupId>
				<artifactId>swagger-parser</artifactId>
				<version>${io-swagger-parser-v3.version}</version>
			</dependency>
			<dependency>
				<groupId>io.swagger.parser.v3</groupId>
				<artifactId>swagger-parser-core</artifactId>
				<version>${io-swagger-parser-v3.version}</version>
			</dependency>
			<!-- Used in openapi-generator -->
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-core</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.dataformat</groupId>
				<artifactId>jackson-dataformat-yaml</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<!--Rest of SDK Dependencies-->
			<!--Used only in RFC module as a compile dependency, everywhere else in test scope -->
			<dependency>
				<groupId>org.json</groupId>
				<artifactId>json</artifactId>
				<version>${json.version}</version>
			</dependency>
			<!-- Used in connectivity-apache-httpclient4 and connectivity-apache-httpclient5 -->
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcpkix-jdk18on</artifactId>
				<version>${bouncycastle.version}</version>
			</dependency>
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcprov-jdk18on</artifactId>
				<version>${bouncycastle.version}</version>
			</dependency>
			<!--Dependencies with test scope-->
			<dependency>
				<groupId>com.sap.cloud.sdk</groupId>
				<artifactId>testutil</artifactId>
				<version>${sdk.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.assertj</groupId>
				<artifactId>assertj-core</artifactId>
				<version>${assertj-core.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.assertj</groupId>
				<artifactId>assertj-vavr</artifactId>
				<version>${assertj-vavr.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.mockito</groupId>
				<artifactId>mockito-core</artifactId>
				<version>${mockito.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.wiremock</groupId>
				<artifactId>wiremock</artifactId>
				<version>${wiremock.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.junit.jupiter</groupId>
				<artifactId>junit-jupiter-engine</artifactId>
				<version>${junit.jupiter.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.junit.jupiter</groupId>
				<artifactId>junit-jupiter-api</artifactId>
				<version>${junit.jupiter.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.junit.jupiter</groupId>
				<artifactId>junit-jupiter-params</artifactId>
				<version>${junit.jupiter.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.skyscreamer</groupId>
				<artifactId>jsonassert</artifactId>
				<version>${jsonassert.version}</version>
				<scope>test</scope>
			</dependency>
			<!--Used in odata generator and open api generator maven plugins-->
			<dependency>
				<groupId>org.apache.maven</groupId>
				<artifactId>maven-compat</artifactId>
				<version>${maven-plugin.version}</version>
				<scope>test</scope>
			</dependency>
			<!--Used in odata generator and open api generator maven plugins-->
			<dependency>
				<groupId>org.apache.maven.plugin-testing</groupId>
				<artifactId>maven-plugin-testing-harness</artifactId>
				<version>${maven-plugin-testing.version}</version>
				<scope>test</scope>
			</dependency>
			<!--Used in resilience 4j-->
			<dependency>
				<groupId>com.github.ben-manes.caffeine</groupId>
				<artifactId>jcache</artifactId>
				<version>${caffeine.version}</version>
				<scope>test</scope>
			</dependency>
			<!--Dependencies managed for conflict resolution-->
			<!--Used for dependency convergence in odata-v4-generator-->
			<dependency>
				<groupId>org.codehaus.woodstox</groupId>
				<artifactId>stax2-api</artifactId>
				<version>${stax2-api.version}</version>
			</dependency>
			<!--Used to override version 1.7.36 coming from openapi-generator -->
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-ext</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<!--For dependency convergence error between assertj-core and mockito-core-->
			<dependency>
				<groupId>net.bytebuddy</groupId>
				<artifactId>byte-buddy</artifactId>
				<version>${byte-buddy.version}</version>
				<scope>test</scope>
			</dependency>
			<!-- Added to resolve dependency convergence between httpclient5, httpclient, and olingo-odata2-core -->
			<dependency>
				<groupId>commons-codec</groupId>
				<artifactId>commons-codec</artifactId>
				<version>${commons-codec.version}</version>
			</dependency>
			<!-- Added to resolve dependency convergence between openapi-generator, and jackson -->
			<dependency>
				<groupId>org.yaml</groupId>
				<artifactId>snakeyaml</artifactId>
				<version>${snakeyaml.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<dependencies>
		<!--  add logger for tests  -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-simple</artifactId>
			<version>${slf4j.version}</version>
			<scope>test</scope>
		</dependency>
		<!--  add engine for junit 5 here to ensure it is available everywhere in the project  -->
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-engine</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.google.code.findbugs</groupId>
			<artifactId>jsr305</artifactId>
			<optional>${jsr305.optional}</optional>
		</dependency>
	</dependencies>
	<build>
		<resources>
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
			</resource>
			<!--  include README and LICENSE in all jar files  -->
			<resource>
				<filtering>false</filtering>
				<directory>${project.rootdir}</directory>
				<includes>
					<include>README</include>
					<include>LICENSE</include>
				</includes>
			</resource>
		</resources>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-enforcer-plugin</artifactId>
					<version>3.5.0</version>
					<executions>
						<execution>
							<id>enforce-project-rules</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<rules>
									<requireMavenVersion>
										<version>${maven.version}</version>
									</requireMavenVersion>
									<requireJavaVersion>
										<version>${java.version}</version>
									</requireJavaVersion>
									<banDistributionManagement />
									<banDuplicatePomDependencyVersions />
									<dependencyConvergence />
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>ban-deprecated-dependencies</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<rules>
									<bannedDependencies>
										<message>Do not use deprecated dependencies.</message>
										<excludes>
											<exclude>javax.servlet:servlet-api</exclude>
											<exclude>javax.ws.rs:jsr311-api</exclude>
											<!--  use javax.ws.rs:javax.ws.rs-api  -->
											<exclude>commons-httpclient:commons-httpclient</exclude>
										</excludes>
									</bannedDependencies>
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>ban-logging-frameworks</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<skip>${enforcer.skipBanLoggingFrameworks}</skip>
								<rules>
									<bannedDependencies>
										<message>Do not use and do exclude all transitive uses of logging frameworks.</message>
										<excludes>
											<exclude>org.slf4j:slf4j-simple</exclude>
											<exclude>commons-logging</exclude>
											<exclude>ch.qos.logback</exclude>
											<exclude>org.apache.logging.log4j</exclude>
											<exclude>org.apache.log4j</exclude>
											<exclude>log4j</exclude>
											<exclude>org.tinylog</exclude>
										</excludes>
										<includes>
											<include>org.slf4j:slf4j-simple:*:*:test</include>
										</includes>
									</bannedDependencies>
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>enforce-scope-logger-bridges</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<skip>${enforcer.skipEnforceScopeLoggerBridges}</skip>
								<rules>
									<bannedDependencies>
										<message>Logger bridges must use scope runtime or test.</message>
										<excludes>
											<exclude>org.slf4j:jul-to-slf4j</exclude>
											<exclude>org.slf4j:jcl-over-slf4j</exclude>
											<exclude>org.slf4j:log4j-over-slf4j</exclude>
										</excludes>
										<includes>
											<include>org.slf4j:jul-to-slf4j:*:*:runtime</include>
											<include>org.slf4j:jul-to-slf4j:*:*:test</include>
											<include>org.slf4j:jcl-over-slf4j:*:*:runtime</include>
											<include>org.slf4j:jcl-over-slf4j:*:*:test</include>
											<include>org.slf4j:log4j-over-slf4j:*:*:runtime</include>
											<include>org.slf4j:log4j-over-slf4j:*:*:test</include>
										</includes>
									</bannedDependencies>
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>enforce-scope-javaee</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<skip>${enforcer.skipEnforceScopeJavaEE}</skip>
								<rules>
									<bannedDependencies>
										<message>Use Java EE modules with scope provided or test.</message>
										<excludes>
											<exclude>javax:javaee-api</exclude>
											<exclude>javax.inject:javax.inject</exclude>
											<exclude>javax.ws.rs:javax.ws.rs-api</exclude>
										</excludes>
										<includes>
											<include>javax:javaee-api:*:*:provided</include>
											<include>javax:javaee-api:*:*:test</include>
											<include>javax.ws.rs:javax.ws.rs-api:*:*:provided</include>
											<include>javax.ws.rs:javax.ws.rs-api:*:*:test</include>
										</includes>
									</bannedDependencies>
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>enforce-scope-lombok</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<skip>${enforcer.skipEnforceScopeLombok}</skip>
								<rules>
									<bannedDependencies>
										<message>Use lombok with scope provided.</message>
										<excludes>
											<exclude>org.projectlombok:lombok</exclude>
										</excludes>
										<includes>
											<include>org.projectlombok:lombok:*:*:provided</include>
										</includes>
									</bannedDependencies>
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>ban-api-dependencies</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<skip>${enforcer.skipBanGeneratedModulesReference}</skip>
								<rules>
									<bannedDependencies>
										<message>Do not reference generated API modules (or modules transitively
											referencing generated API modules), as they might be removed by profiles.</message>
										<excludes>
											<exclude>com.sap.cloud.sdk.datamodel:odata-api-sample</exclude>
											<exclude>com.sap.cloud.sdk.datamodel:odata-v4-api-sample</exclude>
											<exclude>com.sap.cloud.sdk.datamodel:openapi-api-sample</exclude>
										</excludes>
									</bannedDependencies>
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>ban-old-junit</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<skip>${enforcer.skipBanJunit4}</skip>
								<rules>
									<bannedDependencies>
										<message>Do not use JUnit 4.X, instead exclusively use Junit Jupiter. JUnit 4 tests will (silently) simply not be executed.</message>
										<excludes>
											<exclude>junit:junit</exclude>
										</excludes>
									</bannedDependencies>
								</rules>
							</configuration>
						</execution>
					</executions>
					<configuration>
						<fail>true</fail>
					</configuration>
				</plugin>
				<plugin>
					<groupId>net.revelc.code.formatter</groupId>
					<artifactId>formatter-maven-plugin</artifactId>
					<version>2.23.0</version>
					<executions>
						<execution>
							<goals>
								<goal>format</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<skip>${skipFormatting}</skip>
						<configFile>${project.build.javaCodeFormatter}</configFile>
						<encoding>${project.build.sourceEncoding}</encoding>
						<directories>
							<directory>${project.basedir}/src/main/java</directory>
							<directory>${project.basedir}/src/test/java</directory>
						</directories>
					</configuration>
				</plugin>
				<plugin>
					<groupId>net.revelc.code</groupId>
					<artifactId>impsort-maven-plugin</artifactId>
					<version>1.12.0</version>
					<executions>
						<execution>
							<goals>
								<goal>sort</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<skip>${skipFormatting}</skip>
						<groups>java.,javax.,org.,com.</groups>
						<staticGroups>java,*</staticGroups>
						<staticAfter>false</staticAfter>
						<removeUnused>true</removeUnused>
						<compliance>${java.version}</compliance>
						<excludes>
							<exclude>**/test/resources/**</exclude>
						</excludes>
					</configuration>
				</plugin>
				<plugin>
					<groupId>com.github.ekryd.sortpom</groupId>
					<artifactId>sortpom-maven-plugin</artifactId>
					<version>2.15.0</version>
					<executions>
						<execution>
							<goals>
								<goal>sort</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<skip>${skipFormatting}</skip>
						<encoding>${project.build.sourceEncoding}</encoding>
						<createBackupFile>false</createBackupFile>
						<expandEmptyElements>false</expandEmptyElements>
						<!--  -1 stands for tab  -->
						<nrOfIndentSpace>-1</nrOfIndentSpace>
						<sortDependencies>none</sortDependencies>
						<sortPlugins>none</sortPlugins>
						<sortProperties>false</sortProperties>
						<sortModules>false</sortModules>
						<verifyFail>stop</verifyFail>
						<verifyFailOn>strict</verifyFailOn>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-dependency-plugin</artifactId>
					<version>3.8.1</version>
					<executions>
						<execution>
							<id>analyze</id>
							<phase>process-test-classes</phase>
							<goals>
								<goal>analyze-only</goal>
							</goals>
						</execution>
						<execution>
							<id>analyze-dep-mgt</id>
							<phase>process-test-classes</phase>
							<goals>
								<goal>analyze-dep-mgt</goal>
							</goals>
						</execution>
						<execution>
							<id>analyze-duplicate</id>
							<phase>process-test-classes</phase>
							<goals>
								<goal>analyze-duplicate</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<failOnWarning>true</failOnWarning>
						<failBuild>true</failBuild>
						<ignoreNonCompile>false</ignoreNonCompile>
						<ignoreUnusedRuntime>true</ignoreUnusedRuntime>
						<ignoredUnusedDeclaredDependencies combine.children="append">
							<!--  ignore annotations that are not visible on bytecode level  -->
							<ignoredUnusedDeclaredDependency>com.google.code.findbugs:jsr305</ignoredUnusedDeclaredDependency>
							<!-- Logging API, adapters and default implementation for tests -->
							<ignoredUnusedDeclaredDependency>org.slf4j:slf4j-api</ignoredUnusedDeclaredDependency>
							<ignoredUnusedDeclaredDependency>org.slf4j:jcl-over-slf4j</ignoredUnusedDeclaredDependency>
							<ignoredUnusedDeclaredDependency>org.slf4j:slf4j-simple</ignoredUnusedDeclaredDependency>
							<!-- Lombok usage for code generation -->
							<ignoredUnusedDeclaredDependency>org.projectlombok:lombok</ignoredUnusedDeclaredDependency>
							<!-- By default, JUnit5 adapters are added to every module to ensure no tests are skipped -->
							<ignoredUnusedDeclaredDependency>org.junit.jupiter:junit-jupiter-engine</ignoredUnusedDeclaredDependency>
						</ignoredUnusedDeclaredDependencies>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-clean-plugin</artifactId>
					<version>3.4.1</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>${maven-compiler-plugin.version}</version>
					<configuration>
						<release>${java.version}</release>
						<showWarnings>true</showWarnings>
						<showDeprecation>true</showDeprecation>
						<failOnWarning>${java.failOnWarning}</failOnWarning>
						<compilerArgument>${java.compilerArgument}</compilerArgument>
						<compilerArgs combine.children="append">
							<arg>-Xlint:all</arg>
							<arg>-Xlint:-processing</arg>
						</compilerArgs>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-resources-plugin</artifactId>
					<version>3.3.1</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jar-plugin</artifactId>
					<version>3.4.2</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-install-plugin</artifactId>
					<version>3.1.4</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>3.1.4</version>
					<configuration>
						<retryFailedDeploymentCount>3</retryFailedDeploymentCount>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-site-plugin</artifactId>
					<version>3.21.0</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-archetype-plugin</artifactId>
					<version>3.3.1</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-plugin-plugin</artifactId>
					<version>3.15.1</version>
				</plugin>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>build-helper-maven-plugin</artifactId>
					<version>3.6.0</version>
					<executions>
						<execution>
							<id>remove-old-artifacts</id>
							<phase>verify</phase>
							<goals>
								<goal>remove-project-artifact</goal>
							</goals>
							<configuration>
								<removeAll>false</removeAll>
								<failOnError>false</failOnError>
							</configuration>
						</execution>
						<execution>
							<id>add-source</id>
							<phase>generate-sources</phase>
							<goals>
								<goal>add-source</goal>
							</goals>
							<configuration>
								<sources>
									<source>${project.build.generated-sources}</source>
								</sources>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>0.8.13</version>
					<executions>
						<execution>
							<id>prepare-agent</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
							<configuration>
								<destFile>${jacoco.executionDataFile}</destFile>
							</configuration>
						</execution>
						<execution>
							<id>report</id>
							<goals>
								<goal>report</goal>
							</goals>
							<configuration>
								<dataFile>${jacoco.executionDataFile}</dataFile>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>3.5.3</version>
					<configuration>
						<includes>
							<include>${surefire.include}</include>
						</includes>
						<excludes>
							<exclude>${surefire.exclude}</exclude>
						</excludes>
						<forkCount>${surefire.forkCount}</forkCount>
						<reuseForks>false</reuseForks>
						<groups>${surefire.groups}</groups>
						<excludedGroups>${surefire.excludedGroups}</excludedGroups>
						<systemPropertyVariables>
							<surefire.forkDir>${project.build.directory}/surefire-fork/${surefire.forkNumber}/</surefire.forkDir>
						</systemPropertyVariables>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-checkstyle-plugin</artifactId>
					<version>3.6.0</version>
					<dependencies>
						<dependency>
							<groupId>com.puppycrawl.tools</groupId>
							<artifactId>checkstyle</artifactId>
							<version>${checkstyle.version}</version>
						</dependency>
					</dependencies>
					<configuration>
						<configLocation>${project.rootdir}/codestyle/checkstyle.xml</configLocation>
						<linkXRef>false</linkXRef>
						<includeResources>false</includeResources>
						<includeTestResources>false</includeTestResources>
						<excludes>${codeAnalysisExclusions}</excludes>
					</configuration>
				</plugin>
				<plugin>
					<groupId>com.github.spotbugs</groupId>
					<artifactId>spotbugs-maven-plugin</artifactId>
					<version>4.9.3.0</version>
					<configuration>
						<includeFilterFile>${project.rootdir}/codestyle/findbugs.xml</includeFilterFile>
						<excludeFilterFile>${project.rootdir}/codestyle/spotbugs-exclusions.xml</excludeFilterFile>
						<effort>Max</effort>
						<threshold>Low</threshold>
						<maxHeap>2048</maxHeap>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-pmd-plugin</artifactId>
					<version>3.26.0</version>
					<configuration>
						<rulesets>
							<ruleset>${project.rootdir}/codestyle/pmd.xml</ruleset>
							<ruleset>${project.rootdir}/codestyle/sdk_specific_pmd_rules.xml</ruleset>
							<!-- content of the PMD default rule set for Java can be found here:
                                                        https://gitbox.apache.org/repos/asf?p=maven-pmd-plugin.git;a=blob_plain;f=src/main/resources/rulesets/java/maven-pmd-plugin-default.xml;hb=HEAD
                                                         -->
							<ruleset>/rulesets/java/maven-pmd-plugin-default.xml</ruleset>
						</rulesets>
						<linkXRef>false</linkXRef>
						<targetJdk>${java.version}</targetJdk>
						<excludes>
							<exclude>${codeAnalysisExclusions}</exclude>
						</excludes>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.projectlombok</groupId>
					<artifactId>lombok-maven-plugin</artifactId>
					<version>1.18.20.0</version>
					<executions>
						<execution>
							<id>delombok</id>
							<phase>generate-sources</phase>
							<goals>
								<goal>delombok</goal>
							</goals>
							<configuration>
								<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
								<outputDirectory>${project.build.directory}/delombok</outputDirectory>
							</configuration>
						</execution>
						<execution>
							<id>test-delombok</id>
							<phase>generate-test-sources</phase>
							<goals>
								<goal>testDelombok</goal>
							</goals>
							<configuration>
								<sourceDirectory>${project.basedir}/src/test/java</sourceDirectory>
								<outputDirectory>${project.build.directory}/delombok-test</outputDirectory>
							</configuration>
						</execution>
					</executions>
					<dependencies>
						<dependency>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
							<version>1.18.38</version>
						</dependency>
					</dependencies>
					<configuration>
						<addOutputDirectory>false</addOutputDirectory>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>properties-maven-plugin</artifactId>
					<version>1.2.1</version>
					<executions>
						<execution>
							<phase>initialize</phase>
							<goals>
								<goal>read-project-properties</goal>
							</goals>
							<configuration>
								<files>
									<file>${project.rootdir}/javadoc.properties</file>
								</files>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>3.11.2</version>
					<executions>
						<execution>
							<id>javadoc-jar</id>
							<goals>
								<goal>jar</goal>
							</goals>
						</execution>
						<execution>
							<id>javadoc-aggregate</id>
							<goals>
								<goal>aggregate</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<quiet>true</quiet>
						<additionalOptions>${javadoc.opts}</additionalOptions>
						<show>protected</show>
						<groups>
							<group>
								<title>Cloud Platform</title>
								<packages>com.sap.cloud.sdk.cloudplatform*</packages>
							</group>
							<group>
								<title>Utility Packages</title>
								<packages>com.sap.cloud.sdk.datamodel* :com.sap.cloud.sdk.result*:*
									:com.sap.cloud.sdk.scp* :com.sap.cloud.sdk.testutil*
									:com.sap.cloud.sdk.typeconverter* :com.sap.marmolata* :com.sap.security*
									:org.eclipse*</packages>
							</group>
							<group>
								<title>SAP S/4HANA</title>
								<packages>com.sap.cloud.sdk.s4hana*</packages>
							</group>
						</groups>
						<sourcepath>${project.basedir}/target/delombok; ${javadoc.sourcepath}</sourcepath>
						<overview>${project.rootdir}/javadoc.overview.html</overview>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>3.3.1</version>
					<executions>
						<execution>
							<goals>
								<goal>jar-no-fork</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<forceCreation>true</forceCreation>
					</configuration>
				</plugin>
				<plugin>
					<groupId>com.sap.cloud.sdk.datamodel</groupId>
					<artifactId>openapi-generator-maven-plugin</artifactId>
					<version>${sdk.version}</version>
					<configuration>
						<apiMaturity>beta</apiMaturity>
						<sapCopyrightHeader>true</sapCopyrightHeader>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-shade-plugin</artifactId>
					<version>3.6.0</version>
				</plugin>
			</plugins>
		</pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>net.revelc.code.formatter</groupId>
				<artifactId>formatter-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>net.revelc.code</groupId>
				<artifactId>impsort-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>com.github.spotbugs</groupId>
				<artifactId>spotbugs-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>com.github.ekryd.sortpom</groupId>
				<artifactId>sortpom-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
	<profiles>
		<profile>
			<id>disable-doclint-java8</id>
			<activation>
				<jdk>[1.8,)</jdk>
			</activation>
			<properties>
				<javadoc.opts>-Xdoclint:none</javadoc.opts>
			</properties>
		</profile>
		<profile>
			<id>docs</id>
			<activation>
				<property>
					<name>docs</name>
				</property>
			</activation>
			<build>
				<resources>
					<resource>
						<targetPath>${project.build.directory}/apidocs</targetPath>
						<filtering>false</filtering>
						<directory>${project.rootdir}</directory>
						<includes>
							<include>LICENSE</include>
						</includes>
					</resource>
				</resources>
				<plugins>
					<plugin>
						<groupId>org.projectlombok</groupId>
						<artifactId>lombok-maven-plugin</artifactId>
					</plugin>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>properties-maven-plugin</artifactId>
						<inherited>false</inherited>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-source-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>build-test-modules</id>
			<activation>
				<property>
					<name>!audience</name>
				</property>
			</activation>
			<modules>
				<module>testutil</module>
			</modules>
		</profile>
		<profile>
			<id>skip-openapi-vdm-generation</id>
			<properties>
				<openapi.generate.skip>true</openapi.generate.skip>
			</properties>
		</profile>
	</profiles>
</project>
