SuperAPI AI 工具集

mta-descriptor

部署与运维

查看项目

更新于 10-16 11:15

技能介绍

用途

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>/。

生成步骤

  1. 分析应用需求:通过 grep 检查 XSUAA、Destination、HANA、SDM 等依赖。
  2. 选择基础模板并复制(如 cp skills/mta-descriptor/assets/mtad-base.yaml mtad.yaml)。
  3. 自定义应用属性:更新 ID、version、模块名、path、memory(最低 1GB,512M 会导致部署错误)、disk-quota 等。
  4. 添加所需服务:按分析结果添加资源定义与模块 requires。
  5. 如使用 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 模式)。