Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
70baa4b
Security warning potential injection in messages (#2088)
BraunMatthias Sep 22, 2025
56a9da1
Fix incorrectly placed @order annotations (#2106)
beckermarc Sep 22, 2025
6dfaf27
Mtxs deployment hint (#2102)
ecklie Sep 22, 2025
ecee456
initial topic stub
renejeglinsky Sep 24, 2025
395bc73
fix path for deploy and MT and Ext guides for local preview
renejeglinsky Sep 24, 2025
003f1c7
Hana tms section preparation (#2101)
ecklie Sep 24, 2025
6c7fbc4
chore(deps): update dependency @cap-js/cds-typer to v0.38.0 (#2110)
renovate[bot] Sep 25, 2025
f7b2846
chore(deps): update dependency sass to v1.93.2 (#2104)
renovate[bot] Sep 25, 2025
daaaacb
chore(deps): update eslint (#2103)
renovate[bot] Sep 25, 2025
73241ae
chore: Update CLI texts (#2109)
github-actions[bot] Sep 25, 2025
ec770d3
CDS Lint rules: edit (#2068)
renejeglinsky Sep 25, 2025
bc1cb06
chore(deps): update dependency eslint-plugin-vue to v10 (#2072)
renovate[bot] Sep 25, 2025
d6a5a40
lint: move rule docs and samples closer together (#2112)
chgeo Sep 25, 2025
2293e22
Maven modules are now globally resolved by default (#2113)
beckermarc Sep 26, 2025
61d4433
fix external menu
renejeglinsky Sep 26, 2025
126566e
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Sep 26, 2025
9bb0c9c
move file
renejeglinsky Sep 26, 2025
12e5c06
Better wording and links in multitenancy guide
swaldmann Sep 26, 2025
7a41cae
[cds^9.4] feat: `SELECT ... .stream ()` (#2114)
sjvans Sep 26, 2025
d6cf36b
docs: hana cloud maintenance (#2016)
johannes-vogel Sep 30, 2025
e1f115c
chore(deps): update dependency @cap-js/cds-types to v0.15.0 (#2119)
renovate[bot] Sep 30, 2025
17f93ae
chore(deps): update dependency @typescript-eslint/parser to v8.45.0 (…
renovate[bot] Sep 30, 2025
47971d9
chore: Update CLI texts (#2123)
github-actions[bot] Oct 1, 2025
03e6aa4
Improve explanations around custom Spring Security configurations (#2…
beckermarc Oct 2, 2025
f047619
[cds^9.4] Lean draft improvements (#2080)
David-Kunz Oct 2, 2025
0f29425
Prepare `cds add app-front` (#2095)
swaldmann Oct 2, 2025
fb39eda
Fill in LICENSE copyright owner (#2126)
swaldmann Oct 3, 2025
d15b55a
[cds^9.4] feat(node.js): translated error messages (#2087)
johannes-vogel Oct 6, 2025
bbf62d0
chore(deps): update cap java sdk to v4.3.2 (#2128)
renovate[bot] Oct 6, 2025
27c2a31
AEM plugins are GA (#2129)
sjvans Oct 7, 2025
8b977db
chore(deps): update eslint (#2127)
renovate[bot] Oct 7, 2025
cebcdc0
chore(deps): update cap java sdk to v4.4.0 (#2133)
renovate[bot] Oct 7, 2025
f15a844
Introduce outbox shared db workaround docs (#2108)
dimamost Oct 7, 2025
b58526d
Describe usage of `concat` (#2131)
eugene-andreev Oct 7, 2025
79e3175
chore: Update CLI texts (#2136)
github-actions[bot] Oct 8, 2025
1e54329
chore: Update Java Properties (#2135)
github-actions[bot] Oct 8, 2025
dd25b6c
chore(deps): update dependency com.sap.cds:cds4j-api to v4.4.1 (#2140)
renovate[bot] Oct 8, 2025
82936ea
fix profile (#2134)
Akatuoro Oct 9, 2025
8fdb419
DB HANA: update reference by removing version from link (#2137)
renejeglinsky Oct 9, 2025
1361118
chore(deps): update dependency @sap/cds to v9.4.2 (#2139)
renovate[bot] Oct 9, 2025
f489bc5
Java: Aggregation API (#2125)
MattSchur Oct 9, 2025
6570dca
fix: add missing `srv.after('DISCARD', MyEntity.drafts, /*...*/)` (#2…
sjvans Oct 9, 2025
4b76c68
Troubleshooting entry for missing index page and "Cannot GET /" (#2132)
swaldmann Oct 9, 2025
3972baa
cds-services-archetype: JDK 25 support (#2118)
mofterdinger Oct 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions .github/eslint-plugin/index.js
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,15 @@
import * as fs from 'node:fs'
import * as path from 'node:path'

const RULES_BASE_PATH = path.join('tools', 'cds-lint', 'rules');
const EXAMPLES_BASE_PATH = path.join('tools', 'cds-lint', 'examples');
const RULES_BASE_PATH = path.join(import.meta.dirname, '../../tools/cds-lint/rules');
const EXAMPLES_BASE_PATH = RULES_BASE_PATH
const MENU_FILE_NAME = '_menu.md';

/**
* Get a list of all rule description files.
* @returns {string[]} An array of rule description file names.
*/
const getRuleDescriptionFiles = () =>
fs.readdirSync(RULES_BASE_PATH)
.filter(file => file.endsWith('.md'))
.filter(file => !['index.md', MENU_FILE_NAME].includes(file))
.sort()
const getRuleDescriptionFiles = () => fs.globSync(path.join(RULES_BASE_PATH, '*/index.md')).sort()

/**
* Generates the menu markdown file
Expand All @@ -33,12 +29,13 @@ const getRuleDescriptionFiles = () =>
function generateMenuMarkdown () {
const rules = getRuleDescriptionFiles();
const menu = rules.map(rule => {
const clean = rule.replace('.md', '');
return `# [${clean}](${clean})`
const folderPath = path.posix.dirname(path.relative(RULES_BASE_PATH, rule));
const name = path.basename(folderPath);
return `# [${name}](${folderPath}/)`
}).join('\n');
const menuFilePath = path.join(RULES_BASE_PATH, '_menu.md')
const menuFilePath = path.join(RULES_BASE_PATH, MENU_FILE_NAME)
fs.writeFileSync(menuFilePath, menu);
console.info(`generated menu to ${menuFilePath}`)
console.info(`generated menu to ${path.relative(process.cwd(), menuFilePath)}`);
}

/**
Expand All @@ -52,11 +49,12 @@ function generateJsRuleStub (ruleName) {
console.error('Please provide a rule name, e.g. "no-shared-handler-variables" as second argument');
process.exit(1);
}
const stubFilePath = path.join(RULES_BASE_PATH, ruleName + '.md');
const stubFilePath = path.join(RULES_BASE_PATH, ruleName, 'index.md');
if (fs.existsSync(stubFilePath)) {
console.error(`file ${stubFilePath} already exists, will not overwrite`);
process.exit(2);
}
fs.mkdirSync(path.dirname(stubFilePath), { recursive: true });
const stub = fs.readFileSync(path.join(import.meta.dirname, 'js-rule-stub.md'), 'utf-8').replaceAll('$RULE_NAME', ruleName);
fs.writeFileSync(stubFilePath, stub);
console.info(`generated stub to ${stubFilePath}`);
Expand Down
6 changes: 3 additions & 3 deletions .github/eslint-plugin/js-rule-stub.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ status: released
---

<script setup>
import PlaygroundBadge from '../components/PlaygroundBadge.vue'
import PlaygroundBadge from '../../components/PlaygroundBadge.vue'
</script>

# $RULE_NAME
Expand All @@ -22,7 +22,7 @@ This rule was introduced in `@sap/eslint-plugin-cds x.y.z`.
DESCRIPTION OF CORRECT EXAMPLE

::: code-group
<<< ../examples/$RULE_NAME/correct/srv/admin-service.js#snippet{js:line-numbers} [srv/admin-service.js]
<<< correct/srv/admin-service.js#snippet{js:line-numbers} [srv/admin-service.js]
:::
<PlaygroundBadge
name="$RULE_NAME"
Expand All @@ -35,7 +35,7 @@ DESCRIPTION OF CORRECT EXAMPLE
DESCRIPTION OF INCORRECT EXAMPLE

::: code-group
<<< ../examples/$RULE_NAME/incorrect/srv/admin-service.js#snippet{js:line-numbers} [srv/admin-service.js]
<<< incorrect/srv/admin-service.js#snippet{js:line-numbers} [srv/admin-service.js]
:::
<PlaygroundBadge
name="$RULE_NAME"
Expand Down
4 changes: 2 additions & 2 deletions .vitepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ config.rewrites = rewrites
// Add custom capire info to the theme config
config.themeConfig.capire = {
versions: {
java_services: '4.3.1',
java_cds4j: '4.3.0'
java_services: '4.4.0',
java_cds4j: '4.4.1'
},
gotoLinks: []
}
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]
Copyright 2019-2025 SAP SE

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
6 changes: 5 additions & 1 deletion eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import cds from '@sap/cds/eslint.config.mjs'
import vue from 'eslint-plugin-vue'
import globals from 'globals'

export default [
{
Expand All @@ -12,11 +13,14 @@ export default [
...cds.recommended,
...vue.configs['flat/essential'],
{
files: ['*.vue', '**/*.vue'],
files: ['*.vue', '**/*.vue', '**/*.js'],
languageOptions: {
parserOptions: {
parser: '@typescript-eslint/parser'
},
globals: {
...globals.browser
}
},
rules: {
'vue/multi-word-component-names': 0,
Expand Down
12 changes: 10 additions & 2 deletions get-started/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -626,8 +626,7 @@ Now you can build the archive with:
mbt build -t gen --mtar mta.tar -e less.mtaext
```

::: warning
This approach is only recommended
::: warning Not recommended for production deployments
- For test deployments during _development_. For _production_ deployments, self-contained archives are preferrable.
- If all your dependencies are available in _public_ registries like npmjs.org or Maven Central. Dependencies from _corporate_ registries are not resolvable in this mode.
:::
Expand Down Expand Up @@ -768,7 +767,16 @@ If you receive an error response `404 Not Found: Requested route ('<route>') doe

:::

### Why do I get a _404 Cannot GET /_ error?

For security reasons, the **index page is not served in production** by default in both [Node.js](../node.js/cds-server#toggle-generic-index-page) and [Java](../java/developing-applications/configuring#production-profile).

If you try to access your backend URL, you will therefore see a _404 Cannot GET /_ error.
This also means you **cannot use the `/` path as a health status indicator**. See the [Health Checks guide](../guides/deployment/health-checks) for the correct paths.

Only if absolutely required and you understand the security implications to your application, you can enable this page in your deployment.

Learn more about the generic index page in [Java](../java/developing-applications/properties#cds-indexPage) and in [Node.js](../node.js/cds-server#toggle-generic-index-page).{.learn-more}

## CAP on Kyma

Expand Down
13 changes: 7 additions & 6 deletions guides/databases-hana.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@ status: released

[SAP HANA Cloud](https://www.sap.com/products/technology-platform/hana.html) is supported as the CAP standard database and recommended for productive use with full support for schema evolution and multitenancy.

::: warning
::: warning Validation strategy

CAP isn't validated with other variants of SAP HANA, like "SAP HANA Database as a Service" or "SAP HANA (on premise)".

The database services are validated against the latest maintained QRC version of SAP HANA Cloud. It's not guaranteed that outdated versions are fully functional with the latest database services.

[See the official SAP HANA Cloud documentation for their maintenance strategy.](https://help.sap.com/docs/HANA_CLOUD_CN/1f64fe39189f4176bf659e737d62222a/6ced4d164e234b74aa9bea82435ce9a8.html){.learn-more}

:::

## Setup & Configuration
Expand Down Expand Up @@ -53,9 +57,6 @@ The datasource for SAP HANA is then auto-configured based on available service b

:::




## Running `cds build`

Deployment to SAP HANA is done via the [SAP HANA Deployment Infrastructure (HDI)](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-developer-guide-for-cloud-foundry-multitarget-applications-sap-business-app-studio/sap-hdi-deployer?) which in turn requires running `cds build` to generate all the deployable HDI artifacts. For example, run this in [capire/bookshop](https://github.com/capire/bookshop):
Expand Down Expand Up @@ -201,7 +202,7 @@ cds deploy --to hana
Behind the scenes, `cds deploy` does the following:

* Compiles the CDS model to SAP HANA files (usually in _gen/db_, or _db/src/gen_)
* Generates _[.hdbtabledata](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-deployment-infrastructure-hdi-reference/table-data-hdbtabledata?)_ files for the [CSV files](databases#providing-initial-data) in the project. If a _[.hdbtabledata](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-deployment-infrastructure-hdi-reference/table-data-hdbtabledata?)_ file is already present next to the CSV files, no new file is generated.
* Generates _[.hdbtabledata](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-deployment-infrastructure-hdi-reference/table-data-hdbtabledata)_ files for the [CSV files](databases#providing-initial-data) in the project. If a _[.hdbtabledata](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-deployment-infrastructure-hdi-reference/table-data-hdbtabledata)_ file is already present next to the CSV files, no new file is generated.
* Creates a Cloud Foundry service of type `hdi-shared`, which creates an HDI container. Also, you can explicitly specify the name like so: `cds deploy --to hana:<myService>`.
* Starts `@sap/hdi-deploy` locally. If you need a tunnel to access the database, you can specify its address with `--tunnel-address <host:port>`.
* Stores the binding information with profile `hybrid` in the _.cdsrc-private.json_ file of your project. You can use a different profile with parameter `--for`. With this information, `cds watch`/`run` can fetch the SAP HANA credentials at runtime, so that the server can connect to it.
Expand Down Expand Up @@ -651,7 +652,7 @@ Only use CSV files for _configuration data_ that can't be changed by application

:::

Yet, if you need to support initial data with user changes, you can use the `include_filter` option that _[.hdbtabledata](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-deployment-infrastructure-hdi-reference/table-data-hdbtabledata?version=2024_1_QRC)_ offers.
Yet, if you need to support initial data with user changes, you can use the `include_filter` option that _[.hdbtabledata](https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-deployment-infrastructure-hdi-reference/table-data-hdbtabledata)_ offers.



Expand Down
10 changes: 4 additions & 6 deletions guides/deployment/to-cf.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,22 +194,20 @@ Two deployment options are available:

#### Option A: SAP Cloud Portal

If you intend to deploy user interface applications, you also need to set up the [HTML5 Application Repository](https://discovery-center.cloud.sap/serviceCatalog/html5-application-repository-service) in combination with the [SAP Cloud Portal service](https://discovery-center.cloud.sap/serviceCatalog/cloud-portal-service):
If you intend to deploy **multi-tenant** user interface applications, you also need to set up the [HTML5 Application Repository](https://discovery-center.cloud.sap/serviceCatalog/html5-application-repository-service) in combination with the [SAP Cloud Portal service](https://discovery-center.cloud.sap/serviceCatalog/cloud-portal-service):

```sh
cds add portal
```

#### Option B: SAP Build Work Zone, Standard Edition <Beta />
#### Option B: SAP BTP Application Frontend <Beta />

For **single-tenant applications**, you can use [SAP Build Work Zone, Standard Edition](https://discovery-center.cloud.sap/serviceCatalog/sap-build-work-zone-standard-edition):
For **single-tenant** applications, you can use the new [SAP BTP Application Frontend](https://help.sap.com/docs/application-frontend-service) service:

```sh
cds add workzone
cds add app-front
```

**Important:** This also requires you to set up SAP Build Work Zone, Standard Edition [according to the SAP Learning tutorial](https://developers.sap.com/tutorials/spa-configure-workzone.html).

### 6. Optional: Multitenancy { #add-multitenancy }

To enable multitenancy for production, run the following command:
Expand Down
2 changes: 1 addition & 1 deletion guides/extensibility/composition.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ Add the dependency to the reuse package to your `pom.xml`:
:::

As Maven dependencies are - in contrast to `npm` packages - downloaded into a global cache, you need to make the artifacts from the reuse package available in your project locally.
The CDS Maven Plugin provides a simple goal named `resolve`, that performs this task for you and extracts reuse packages into the `target/cds/` folder of the Maven project.
The CDS Maven Plugin provides a simple goal named `resolve`, that performs this task for you and extracts reuse packages into the `target/cds/` folder of the CAP project.
Include this goal into the `pom.xml`, if not already present:

::: code-group
Expand Down
17 changes: 16 additions & 1 deletion guides/multitenancy/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,12 +175,18 @@ cds add multitenancy
"devDependencies": {
"@cap-js/sqlite": "^2"
},
"engines": {
"node": ">=20"
},
"scripts": {
"start": "cds-serve",
"build": "cds build ../.. --for mtx-sidecar --production && npm ci --prefix gen"
},
"cds": {
"profile": "mtx-sidecar"
"profiles": [
"mtx-sidecar",
"java"
]
}
}
```
Expand Down Expand Up @@ -772,6 +778,13 @@ cds up --to k8s

:::

:::tip Ensure a unique metadata container
To prevent potential conflicts during the initial creation of the MTXS metadata container (`t0`), it is recommended to perform the initial deployment with only one instance of the MTXS sidecar.

Alternatively, you can run `cds-mtx upgrade t0` beforehand, such as in a [Cloud Foundry hook](#run-as-cloud-foundry-hook).
:::


### Subscribe

**Create a BTP subaccount** to subscribe to your deployed application. This subaccount has to be in the same region as the provider subaccount, for example, `us10`.
Expand Down Expand Up @@ -980,6 +993,8 @@ cds watch --profile dev

:::

<div id="hana-tms" />

## SaaS Dependencies {#saas-dependencies}
Some of the xsuaa-based services your application consumes need to be registered as _reuse services_ to work in multitenant environments. This holds true for the usage of both the SaaS Registry service and the Subscription Manager Service (SMS).

Expand Down
17 changes: 8 additions & 9 deletions java/building-plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ In the following sections, the different extension points and mechanisms are exp

### Java Version

When building CAP Java plugin modules, you need to keep in mind that the generated Java byte code of the plugin has to be compatible with the Java byte code version of the potential consumers of the plugin. To be on the safe side, we recommend using *Java 17* as this is anyways the minimum Java version for CAP Java (for 2.x release) applications. In case you deviate from this you need to check and align with the potential consumers of the plugin.
When building CAP Java plugin modules, you need to keep in mind that the generated Java byte code of the plugin has to be compatible with the Java byte code version of the potential consumers of the plugin. To be on the safe side, we recommend using *Java 17* as this is anyways the minimum Java version for CAP Java applications. In case you deviate from this you need to check and align with the potential consumers of the plugin.

### Maven GroupId and Java Packages

Expand All @@ -31,13 +31,12 @@ Of course, it's up to your project / plugin how you call the corresponding Maven

## Share CDS Models via Maven Artifacts

Before the CAP Java 2.2 release CDS definitions had to be shared as Node.js modules, also for Java projects.

Starting with the 2.2 release CDS models, CSV import data and i18n files can now be shared through Maven dependencies in addition to npm packages. This means you can now provide CDS models, CSV files, i18n files, and Java code (for example, event handlers) in a single Maven dependency.
CDS models, CSV import data and i18n files can be shared through Maven dependencies. In addition they can also be shared through npm packages.
This means you can provide CDS models, CSV files, i18n files, and Java code (for example, event handlers) in a single Maven dependency.

### Create the CDS Model in a New Maven Artifact

Simply create a plain Maven Java project and place your CDS models in the `main/resources/cds` folder of the reuse package under a unique module directory (for example, leveraging group ID and artifact ID): `src/main/resources/cds/com.sap.capire/bookshop/`. With `com.sap.capire` being the group ID and `bookshop` being the artifact ID.
Simply create a plain Maven Java project and place your CDS models in the `src/main/resources/cds` folder of the reuse package under a unique module directory (for example, leveraging group ID and artifact ID): `src/main/resources/cds/com.sap.capire/bookshop/`. With `com.sap.capire` being the group ID and `bookshop` being the artifact ID.

You can simplify the creation of such a **plain Maven Java** project by calling the following Maven archetype command:

Expand Down Expand Up @@ -65,7 +64,7 @@ Projects wanting to import the content simply add a Maven dependency to the reus
```
:::

Additionally, the new `resolve` goal from the CDS Maven Plugin needs to be added, to extract the models into the `target/cds/` folder of the Maven project, in order to make them available to the CDS Compiler.
Additionally, the `resolve` goal from the CDS Maven Plugin needs to be added, to extract the models into the `target/cds/` folder of the Maven project, in order to make them available to the CDS Compiler.

::: code-group
```xml [srv/pom.xml]
Expand All @@ -87,8 +86,8 @@ Additionally, the new `resolve` goal from the CDS Maven Plugin needs to be added
```
:::

::: details Reuse module as Maven module
Please be aware that the module that uses the reuse module needs to be a Maven module itself or a submodule to a Maven module that declares the dependency to the Maven module. Usually you would declare the dependency in the `srv` module of your CAP Java project and use the reuse model in the service's CDS files then. In case you want to use the reuse model in your `db` module you need to make sure that your `db` module is a Maven module and include it to the project's parent `pom.xml` file.
::: details Scope of the Reuse Package
Usually you would declare the dependency to the reuse package in the `srv` module of your CAP Java project. Since CAP Java 4.4.0 this makes the reuse models available to all CDS files in the CAP project. The models are extracted to the root `target/cds` folder. In case you want to make the reuse models only available within the Maven module that declared the dependency (e.g. `srv`) set the configuration `to` of the `resolve` goal to `${project.build.directory}`. In earlier versions of CAP Java reuse models where only available within CDS files placed in the Maven module that declared the dependency by default.
:::

When your Maven build is set up correctly, you can use the reuse models in your CDS files using the standard `using` directive:
Expand All @@ -112,7 +111,7 @@ In most of the cases an event handler plugin for a CAP Java application can be a

```xml
<properties>
<cds.services.version>2.4.0</cds.services.version>
<cds.services.version>...</cds.services.version>
</properties>

<dependencyManagement>
Expand Down
4 changes: 2 additions & 2 deletions java/developing-applications/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -335,10 +335,10 @@ It supports the following command-line options:
| `-Dpackage=<a valid Java package>` | The Java package for your project's classes. Defaults to `${groupId}.${artifactId}`. |
| `-DincludeModel=true` | Adds a minimalistic sample CDS model to the project. |
| `-DincludeIntegrationTest=true` | Adds an integration test module to the project. |
| `-DodataVersion=[v2\|v4]` | Specify which protocol adapter is activated by default. |
| `-DodataVersion=[v2\|v4]` | Specify which protocol adapter is activated by default. Defaults to `v4`|
| `-DtargetPlatform=cloudfoundry` | Adds CloudFoundry target platform support to the project. |
| `-DinMemoryDatabase=[h2\|sqlite]` | Specify which in-memory database is used for local testing. If not specified, the default value is `h2`. |
| `-DjdkVersion=[17\|21]` | Specifies the target JDK version. If not specified, the default value is `21`. |
| `-DjdkVersion=[17\|21\|25]` | Specifies the target JDK version. Defaults to `21`. |
| `-Dpersistence=[true\|false]` | Specify whether persistence is enabled (`true`) or disabled (`false`). Defaults to `true`. |
| `-DcdsdkVersion=<a valid cds-dk version>` | Sets the provided cds-dk version in the project. If not specified, the default of CAP Java is used. |

Expand Down
Loading