sdk-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>com.sap.cloud.sdk</groupId> <artifactId>sdk-parent</artifactId> <version>5.18.0</version> </dependency>
<?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>