用途
MTA Descriptor 生成技能用于为迁移后的 Neo 应用生成部署到 SAP BTP Cloud Foundry 的 Multi-Target Application 部署描述文件 mtad.yaml。该文件定义应用模块(如 Java 应用、approuter)、所需的 Cloud Foundry 服务(XSUAA、HANA、Destination 等)、模块与服务之间的绑定,以及构建和部署参数。技能会分析应用所应用的迁移技能,并据此生成相应的 mtad.yaml 配置。
前提条件
- 工作目录:必须运行在由 jakarta-java25-migration 或 neo-to-cf-migration-orchestrator 创建的 -cf-migration 副本中。若当前目录不以 -cf-migration 结尾,需先切换。
- 调用前需已完成 jakarta-java25-migration(必需)、sdk-replacement(必需)以及适用于该应用的功能类技能。
- 应用需能成功编译(mvn clean compile)。
- 需了解应用所需哪些 CF 服务。
所需服务判定
根据已应用的迁移技能确定 CF 服务:
authentication-xsuaa → XSUAA(org.cloudfoundry.managed-service);destinations → Destination(org.cloudfoundry.managed-service);connectivity-onpremise → Destination + Connectivity(org.cloudfoundry.managed-service);persistence-hana → HANA Schema(com.sap.xs.hana-schema);document-management-sdm → SDM(org.cloudfoundry.managed-service);mail-destinations → 使用 Destination 服务;keystore-credstore → Credential Store(org.cloudfoundry.managed-service);monitoring-logging → 使用 CF 内置日志;tomee-runtime → 需设置 TARGET_RUNTIME 属性。
模板选择
- 无 Web 认证的基础应用:mtad-base.yaml(内部服务、后台任务、使用技术认证的 API)。
- 带 XSUAA 和 Approuter 的应用:mtad-with-approuter.yaml(需要认证的面向用户 Web 应用)。
- TomEE 应用:添加 TARGET_RUNTIME: tomee(使用 EJB 或需要 TomEE 运行时的应用)。
WAR 文件名规则(重要)
模板中的 path: target/<artifactId>.war 为占位符。生成 mtad.yaml 前需读取 pom.xml 中 <artifactId> 的值并原样写入,例如 artifactId 为 connectivity 时写 path: target/connectivity.war。cf deploy 按字面路径解析,不解析 Maven 属性表达式,写成 path: target/${project.artifactId}.war 会在部署时报 “file path ... not found”。
前置要求:pom.xml 必须配置 maven-war-plugin 且 <warName>${project.artifactId}</warName>。Maven 默认 WAR 文件名为 <artifactId>-<version>.war,与该技能写入的 target/<artifactId>.war 不一致,会导致部署失败。需要的 <build> 块使用 maven-war-plugin 3.4.0(默认 2.2 与 Java 25 不兼容)。自检命令需返回 1:grep -A 10 'maven-war-plugin' pom.xml | grep -c '<warName>${project.artifactId}</warName>'。若 pom.xml 确实需要不同的 <warName>(如 ROOT),则应更新描述文件的 path: 以匹配,规则是“描述文件跟随 pom”。另外,sap_java_buildpack_jakarta 始终在 /(ROOT 上下文)提供应用,集成测试与 approuter 目的地应使用 /,而非 /<artifactId>/。
生成步骤
- 分析应用需求:通过 grep 检查 XSUAA、Destination、HANA、SDM 等依赖。
- 选择基础模板并复制(如 cp skills/mta-descriptor/assets/mtad-base.yaml mtad.yaml)。
- 自定义应用属性:更新 ID、version、模块名、path、memory(最低 1GB,512M 会导致部署错误)、disk-quota 等。
- 添加所需服务:按分析结果添加资源定义与模块 requires。
- 如使用 tomee-runtime,将 TARGET_RUNTIME 改为 tomee。
服务配置要点
- XSUAA:type: org.cloudfoundry.managed-service,service: xsuaa,service-plan: application,path: ./xs-security.json。
- Destination:service: destination,service-plan: lite。
- Connectivity:service: connectivity,service-plan: lite,且需同时绑定 Destination。
- HANA Schema:使用 type: com.sap.xs.hana-schema,不要添加 service: hana 或 service-plan: hdi-shared,也不要在资源上设置 parameters(schema-name 等不被支持,会产生警告)。模块只需 - name: 即可完成绑定。
- SDM:service: sdm,service-plan: standard。
- Credential Store:service: credstore,service-plan: standard,可配置 encryption.user_key_name。
限制与注意事项
必须在 -cf-migration 目录内运行;JRE 需显式固定为 SapMachine JRE 25(使用 SAPMachineJRE,而非 SAPMachineJDK);approuter 使用自有目录和 package.json 时应使用 type: nodejs,而非 type: approuter.nodejs(后者用于特定多租户的托管 approuter 模式)。