sdk-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>com.sap.cloud.sdk</groupId> <artifactId>sdk-parent</artifactId> <version>5.22.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.22.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>scm:git:git://github.com/SAP/cloud-sdk-java.git</connection> <developerConnection>scm:git:ssh://github.com:SAP/cloud-sdk-java.git</developerConnection> <url>https://github.com/SAP/cloud-sdk-java/tree/main</url> </scm> <distributionManagement> <snapshotRepository> <id>artifactory-snapshots</id> <url>https://common.repositories.cloud.sap/artifactory/build-snapshots-cloudsdk</url> </snapshotRepository> </distributionManagement> <properties> <!-- do not modify the following line, it is updated by the versioning script --> <sdk.version>5.22.0</sdk.version> <maven.version>3.5</maven.version> <java.version>17</java.version> <java.failOnWarning>true</java.failOnWarning> <java.compilerArgument /> <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.19.2</jackson.version> <!-- WordUtils used twice in OData generator --> <json.version>20250517</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.10</spring.version> <spring-security.version>6.1.5</spring-security.version> <slf4j.version>2.0.17</slf4j.version> <assertj-core.version>3.27.4</assertj-core.version> <assertj-vavr.version>0.4.3</assertj-vavr.version> <mockito.version>5.19.0</mockito.version> <jsonassert.version>1.5.3</jsonassert.version> <junit.jupiter.version>5.13.4</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.11</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.2</caffeine.version> <openapi-generator.version>7.14.0</openapi-generator.version> <io-swagger-core-v3.version>2.2.36</io-swagger-core-v3.version> <io-swagger-parser-v3.version>2.1.32</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.81</bouncycastle.version> <jakarta-activation.version>2.1.0</jakarta-activation.version> <qdox.version>2.2.0</qdox.version> <wiremock.version>3.13.1</wiremock.version> <checkstyle.version>11.0.0</checkstyle.version> <byte-buddy.version>1.17.7</byte-buddy.version> <snakeyaml.version>2.4</snakeyaml.version> <commons-codec.version>1.19.0</commons-codec.version> <commons-beanutils.version>1.11.0</commons-beanutils.version> <findbugs-jsr305.version>3.0.2</findbugs-jsr305.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> <!--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 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, odata-v4-generator and datamodel-metadata-generator --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-yaml</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-guava</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-joda</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</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> <!-- resolve vulnerability CVE-2025-48734 --> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>${commons-beanutils.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> <version>${junit.jupiter.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>${findbugs-jsr305.version}</version> <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-clean-plugin</artifactId> <version>3.5.0</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-jar-plugin</artifactId> <version>3.4.2</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>3.4.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>3.15.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.11.2</version> </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> </plugins> </pluginManagement> <plugins> <!-- phase: validate --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.6.1</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-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> <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> </executions> </plugin> <!-- phase: process-sources --> <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> <!-- phase: process-resources and process-test-resources --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> </plugin> <!-- phase: test-compile --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.8.1</version> <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> <!-- Transitive dependencies explicitly declared to fic CVEs--> <ignoredUnusedDeclaredDependency>commons-beanutils:commons-beanutils</ignoredUnusedDeclaredDependency> </ignoredUnusedDeclaredDependencies> </configuration> <executions> <execution> <id>analyze</id> <goals> <goal>analyze-only</goal> </goals> <phase>process-test-classes</phase> </execution> <execution> <id>analyze-dep-mgt</id> <goals> <goal>analyze-dep-mgt</goal> </goals> <phase>process-test-classes</phase> </execution> <execution> <id>analyze-duplicate</id> <goals> <goal>analyze-duplicate</goal> </goals> <phase>process-test-classes</phase> </execution> </executions> </plugin> <!-- phase: test --> <plugin> <!-- Needed because GitHub actions uses an old Maven version <3.9.0 --> <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> <!-- phase: verify --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>3.6.0</version> <configuration> <configLocation>${project.rootdir}/codestyle/checkstyle.xml</configLocation> <linkXRef>false</linkXRef> <includeResources>false</includeResources> <includeTestResources>false</includeTestResources> <excludes>${codeAnalysisExclusions}</excludes> </configuration> <dependencies> <dependency> <groupId>com.puppycrawl.tools</groupId> <artifactId>checkstyle</artifactId> <version>${checkstyle.version}</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.27.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.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.6.1</version> <executions> <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>com.github.spotbugs</groupId> <artifactId>spotbugs-maven-plugin</artifactId> <version>4.9.4.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> </plugins> </build> <profiles> <profile> <id>skip-openapi-vdm-generation</id> <properties> <openapi.generate.skip>true</openapi.generate.skip> </properties> </profile> <profile> <id>release</id> <activation> <property> <name>release</name> </property> </activation> <!-- Children projects inherit the configuration --> <build> <!-- Resources taken from docs profile --> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.3.1</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar-no-fork</goal> </goals> <phase>package</phase> </execution> </executions> </plugin> <plugin> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven-plugin</artifactId> <version>1.18.20.0</version> <configuration> <addOutputDirectory>false</addOutputDirectory> </configuration> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.38</version> </dependency> </dependencies> <executions> <execution> <id>delombok</id> <goals> <goal>delombok</goal> </goals> <phase>process-sources</phase> <configuration> <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory> <outputDirectory>${project.build.directory}/delombok</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <quiet>true</quiet> <doclint>none</doclint> <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</sourcepath> <overview>${project.rootdir}/javadoc.overview.html</overview> </configuration> <executions> <execution> <id>javadoc-jar</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>3.2.8</version> <executions> <execution> <id>sign-artifacts</id> <goals> <goal>sign</goal> </goals> <phase>verify</phase> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>3.1.4</version> <executions> <execution> <goals> <goal>install-file</goal> </goals> <phase>install</phase> <configuration> <file>${project.basedir}/target/${project.artifactId}-${project.version}.jar</file> <sources>${project.basedir}/target/${project.artifactId}-${project.version}-sources.jar</sources> <javadoc>${project.basedir}/target/${project.artifactId}-${project.version}-javadoc.jar</javadoc> <pomFile>${project.basedir}/pom.xml</pomFile> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> <packaging>${project.packaging}</packaging> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.4</version> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.sonatype.central</groupId> <artifactId>central-publishing-maven-plugin</artifactId> <version>0.8.0</version> <extensions>true</extensions> <configuration> <deploymentName>SAP Cloud SDK ${project.version}</deploymentName> <publishingServerId>central</publishingServerId> <autoPublish>false</autoPublish> </configuration> </plugin> <!-- flatten POM files to resolve dependency version information stored in BOMs --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>flatten-maven-plugin</artifactId> <version>1.7.2</version> <executions> <execution> <id>flatten</id> <phase>process-resources</phase> <goals> <goal>flatten</goal> </goals> </execution> <execution> <id>flatten.clean</id> <goals> <goal>clean</goal> </goals> </execution> </executions> <configuration> <!-- pre-defined config for open source projects --> <flattenMode>oss</flattenMode> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <!-- The release artifacts don't contain our custom config files for these plugins --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>com.github.spotbugs</groupId> <artifactId>spotbugs-maven-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> <plugin> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>flatten-maven-plugin</artifactId> </plugin> <!-- The plugins configuration below will not be inherited by children projects, they are specific to the parent pom --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <inherited>false</inherited> <executions> <execution> <configuration> <file>${project.basedir}/pom.xml</file> <!-- The parent has no sources --> <sources>${empty.property}</sources> <javadoc>${empty.property}</javadoc> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.sonatype.central</groupId> <artifactId>central-publishing-maven-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> </profiles> </project>