Getting Started
Introduction
To get started with the SAP Cloud SDK for Java you can either create a new project or integrate the SAP Cloud SDK into your existing one. You will need an installation of Java and Maven.
The SAP Cloud SDK itself is compatible with Java 8 and 11. Other Java versions may work as well depending on your setup but are not yet tested by us. Note that the SAP Business Technology Platform Cloud Foundry environment only supports Java 8 out of the box but can be configured to also run with Java 11. SAP Business Technology Platform Neo only supports Java 8.
To start with a clean, new project you can select one of our archetypes and build upon it. Alternatively, you can follow these instructions to integrate the SAP Cloud SDK into your existing setup.
Generating a Project from a Maven Archetype
The SAP Cloud SDK provides archetypes based on Spring and TomEE, so select whatever suits you best.
The mentioned archetypes work out-of-the-box for Cloud Foundry.
For Neo platform we provide an archetype scp-neo-javaee7
for only servlet based projects.
Run:
- Spring
- TomEE
mvn archetype:generate "-DarchetypeGroupId=com.sap.cloud.sdk.archetypes" \
"-DarchetypeArtifactId=scp-cf-spring" \
"-DarchetypeVersion=RELEASE"
mvn archetype:generate "-DarchetypeGroupId=com.sap.cloud.sdk.archetypes" \
"-DarchetypeArtifactId=scp-cf-tomee" \
"-DarchetypeVersion=RELEASE"
Maven will ask you to provide the following:
groupId
- usually serves as your organization identifier, i.e.foo.bar.cloud.app
artifactId
- it's your application's name, i.e.mydreamapp
version
- we recommend keeping1.0-SNAPSHOT
if you're just startingpackage
- by default this equals togroupId
. Change it only if you know what you're doing
After providing all the interactive values to the CLI it will generate your first SAP Cloud SDK based application:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] ....
[INFO] ....
Define value for property 'groupId': foo.bar.cloud.app
Define value for property 'artifactId' (should match expression '[^_]+'): mydreamapp
[INFO] Using property: artifactId = mydreamapp
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' foo.bar.cloud.app: :
[INFO] Using property: gitignore = .gitignore
[INFO] Using property: skipUsageAnalytics = false
Confirm properties configuration:
groupId: foo.bar.cloud.app
artifactId: mydreamapp
artifactId: mydreamapp
version: 1.0-SNAPSHOT
package: foo.bar.cloud.app
gitignore: .gitignore
skipUsageAnalytics: false
Y: :
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: scp-cf-tomee:RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: foo.bar.cloud.app
[INFO] Parameter: artifactId, Value: mydreamapp
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: foo.bar.cloud.app
[INFO] Parameter: packageInPathFormat, Value: foo/bar/cloud/app
[INFO] Parameter: package, Value: foo.bar.cloud.app
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: groupId, Value: foo.bar.cloud.app
[INFO] Parameter: skipUsageAnalytics, Value: false
[INFO] Parameter: gitignore, Value: .gitignore
[INFO] Parameter: artifactId, Value: mydreamapp
[INFO] Project created from Archetype in dir: /home/i531196/dev/temp/mydreamapp
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:28 min
[INFO] Finished at: 2020-04-19T19:25:33+02:00
[INFO] ------------------------------------------------------------------------
Congratulations! You've just set up a brand-new application with the SAP Cloud SDK for Java.
To change the Java version modify the <java.version>
property in the root pom.xml
.
Integrate the SAP Cloud SDK for Java Into Your Project
Adding Dependencies
The SAP Cloud SDK integrates with CAP projects! Follow the steps below or check out the dedicated tutorial on SAP Developers.
To get started with an existing project include the SAP Cloud SDK BOM in the dependency management section of your project:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.sap.cloud.sdk</groupId>
<artifactId>sdk-bom</artifactId>
<version>use-latest-version-here</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
If your application is running on SAP Business Technology Platform please add the appropriate dependency:
- Cloud Foundry
- Neo
<dependency>
<groupId>com.sap.cloud.sdk.cloudplatform</groupId>
<artifactId>scp-cf</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.cloudplatform</groupId>
<artifactId>scp-neo</artifactId>
</dependency>
If you want to connect to an SAP S/4HANA system via the OData protocol, you should also add a dependency to the client libraries of the SAP Cloud SDK. The dependencies differ with respect to the type of SAP S/4HANA system(SAP S/4HANA Cloud or SAP S/4HANA On-premise 2020/2021):
- SAP S/4HANA Cloud
- SAP S/4HANA On-premise 2020
- SAP S/4HANA On-premise 2021
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-all</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-api-odata-onpremise-2020</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-api-odata-v4-onpremise-2020</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-connectivity</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-core</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-api-odata-onpremise</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-api-odata-v4-onpremise</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-connectivity</artifactId>
</dependency>
<dependency>
<groupId>com.sap.cloud.sdk.s4hana</groupId>
<artifactId>s4hana-core</artifactId>
</dependency>
In case you have a CAP application which uses multitenancy features and/or a protected backend your service will need the following dependency:
<dependency>
<groupId>com.sap.cds</groupId>
<artifactId>cds-integration-cloud-sdk</artifactId>
</dependency>
We also recommend that you include the following plugin:
<plugin>
<groupId>com.sap.cloud.sdk.plugins</groupId>
<artifactId>usage-analytics-maven-plugin</artifactId>
<version>use-latest-version-here</version>
<executions>
<execution>
<goals>
<goal>usage-analytics</goal>
</goals>
<configuration>
<skipUsageAnalytics>false</skipUsageAnalytics>
<generateSalt>true</generateSalt>
</configuration>
</execution>
</executions>
</plugin>
It sends anonymized usage data such as the SAP Cloud SDK version used and helps us with improving the SAP Cloud SDK.
Furthermore, the plugin is capable of generating a report with useful information about the project setup.
Invoking diagnosis-report
will print out the SAP Cloud SDK modules used and their version but also other information like the Java and Maven version.
This is helpful when you are facing an issue and are reaching out to us for help.
Framework Integration
In general, the SAP Cloud SDK for Java integrates natively into the Spring Boot and TomEE frameworks.
In particular the SAP Cloud SDK provides listeners that can extract tenant and principal information from an incoming request. To ensure these listeners are present, please configure your project accordingly.
- Spring
- TomEE
For a Spring based project please ensure that the application is annotated to scan for components of the SAP Cloud SDK:
@ComponentScan({"com.sap.cloud.sdk", "your.own.package"})
@ServletComponentScan({"com.sap.cloud.sdk", "your.own.package"})
Check the logs during application startup to ensure the listeners got registered. Also, please check the Spring version declared in the SAP Cloud SDK BOM doesn't clash with your version of Spring.
For Spring based projects we provide out-of-the-box support only on Cloud Foundry with archetype scp-cf-spring
.
For a TomEE based project, the filters should be registered automatically.
They are part of the servlet
module which comes into the dependency tree through scp-cf
or scp-neo
automatically.
Check the logs during application startup to ensure the listeners got registered.
By default, the SAP Cloud SDK archetypes reference the SAP Cloud SDK Bill-of-Material sdk-bom
, which manages dependency versions for all SAP Cloud SDK modules and transitive dependencies.
If you face dependency conflicts, you can instead try using the SAP Cloud SDK Modules Bill-of-Material sdk-modules-bom
in the dependencyManagement
section of your Maven POM file.
More Step-by-Step Guides
If you want to continue learning by example check out our tutorials for SAP Cloud SDK for Java.
Next Steps and Useful Resources
- Get and configure the Cloud Foundry CLI
- Check our latest release notes
- Welcome to our support if you have questions or experiencing any issues