浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式

简介: 浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式

我们开发人员在本地使用 Visual Studio Code 完成 Fiori Web 应用的开发之后,下一步就面临着将应用部署到 Web 服务器上的任务了。Fiori Web 应用最常见的服务器部署,当然就是部署在 ABAP 服务器上了。

本文详细介绍 Fiori 应用在本地 Visual Studio Code 完成开发后,如何通过命令行的方式,部署到 ABAP 服务器上运行的步骤。

如果是在以前的 Cloud Platform (现在改名叫 Business Technology Platform) Neo 环境提供的 Full Stack WebIDE 里开发 Fiori Elements 应用,那么直接使用 WebIDE 里的右键菜单,选择 “Deploy to UI5 ABAP Repository” 即可完成部署。

而通过 Visual Studio Code 进行 Fiori Elements 应用的本地开发,右键菜单里并没有部署相关的选项:

不过,我们仔细观察项目工程文件夹里的 package.json,还是发现了一些关于部署的线索。在该文件的 scripts 标签里,包含 deploy 和 deploy-config 两个指令。

先执行 npm run deploy 命令,这条命令的内容是 fiori verify,即进行部署前的校验工作。校验的结果,在本地检测不到部署配置信息,这样 Visual Studio Code 里安装的 Fiori tools, 根本不知道开发人员期望将该应用,部署到哪个 ABAP 服务器上。

因此按照上图橙色的提示信息,运行下列命令行,生成部署配置信息。

npm run deploy-config

如果遇到下列错误消息:

Yeoman is not installed or available in your executable path. Please check your configuration or use npm/yarn to install it globally.

说明 Yeoman 没有安装,使用 npm install --global yo 进行安装即可。

这里简单提一下 yeoman 这个工具。

Yeoman 在 UI5 开发中首先扮演的角色是快速生成项目脚手架。通过 Yeoman,开发人员可以轻松地创建一个预配置的、遵循最佳实践的 UI5 项目结构。例如,使用 generator-ui5-templates 这样的 Yeoman 生成器,开发者可以快速启动一个符合 的标准的 UI5 项目,这个项目已经包含了基本的视图、控制器、组件配置和其他必要文件。这样一来,开发人员就可以专注于业务逻辑的实现,而不必从零开始构建项目结构。

Yeoman 还在代码规范和质量控制方面发挥着重要作用。在通过 Yeoman 创建的 UI5 项目中,通常会包含一些代码检查和格式化工具,如 ESLint、Prettier 等。这些工具可以被集成到项目构建流程中,确保所有代码遵守一定的编码标准,减少了代码中的错误和不一致。比如,在一个复杂的 UI5 应用中,遵循一致的代码风格和质量标准对于维护代码和团队协作至关重要。

Yeoman 还可以帮助设置自动化构建和部署流程。通过集成诸如 Grunt 或 Gulp 这样的任务运行器,Yeoman 生成的项目可以自动化执行诸如代码压缩、合并、版本控制等一系列构建任务。这在将 UI5 应用部署到 ABAP 服务器的过程中尤为重要,因为自动化的构建流程可以大幅度提高部署效率,减少人为错误。例如,在部署之前自动进行代码压缩和测试,可以确保只有经过验证的代码被上传到服务器。

好吧我们回到正题,安装完 Yeoman 之后,重新运行命令行:

npm run deploy-config

首先选择部署目标类型为 ABAP 服务器。

接下来,需要指定待部署到的 ABAP 服务器的 url,client ID,部署到服务器上生成的 BSP 应用名称,存放该应用的 ABAP 开发包名称等信息。

我们在这个命令行向导里输入的内容,会维护到一个名为 ui5-deploy.yaml 的配置文件里。因此,此处我们可以一路回车,待结束向导后,在 Visual Studio Code 里继续编辑 ui5-deploy.yaml 即可。

npm run deploy-config 命令执行完毕后,生成了对应包含部署明细信息的 ui5-deploy.yaml 文件,同时 package.json 文件里,deploy 命令的内容,也从之前的 fiori verify,自动替换成了如下内容:

下图是我修改过的 ui5-deploy.yaml 文件。整个文件由 Fiori tools 自动生成,我们只需要修改图中 1~3 区域的内容。

  1. 部署 ABAP 服务器的主机名和端口号,以及 client ID. 我部署的 ABAP 服务器为 ER9/001,采用 basic Authentication 方式认证。
  2. credentials 区域,维护我登录 ER9/001 的用户名和密码。因为该 yaml 文件需要上传到 Github 上进行版本管理,故不应直接维护用户名和密码等敏感信息,而是将这些信息维护到一个叫做 .env 的文件里,然后在 ui5-deploy.yaml 里引用该 .env 文件。

部署到 ABAP 服务器上生成 BSP 应用的名称,以及用来存储该 BSP 应用的 ABAP 开发包名称。

一切就绪之后,执行命令行:

npm run deploy

我第一次试图部署时,遇到了下图的错误消息:

Invalid URL: //opu/odata/UI5/ABAP_REPOSITORY_SRV

把该错误消息粘贴到 Google 里,很快找到了错误原因。

一个标准的 OData 服务 /UI5/ABAP_REPOSITORY_SRV, 能够将本地 UI5 应用打成的 zip 压缩包上传到 ABAP 服务器,并生成对应的 BSP 应用。

关于该 OData 服务的更多说明,请参阅官方帮助文档

note 2999557 提供了激活该 OData 服务的步骤:

执行事务码 /IWFND/MAINT_SERVICE, 将 /UI5/ABAP_REPOSITORY_SRV 添加到服务列表中。

注意,该 OData 服务仅在 _UI 753 及其以上的版本才可用。

对于 _UI 753 以下的版本,可以尝试使用报表 /UI5/UI5_REPOSITORY_LOAD 手动上传。

npm run deploy 命令执行成功后,命令行会打印出部署到 ABAP 服务器上的 Fiori Elements 应用可供访问的 url:

粘贴到浏览器后即可访问这个运行在 ABAP 服务器上的 Fiori Elements 应用了:

至此,这个 Fiori 应用就成功的部署到 ABAP 服务器上并能够正常运行了。

本文使用的完整的 ui5-deploy.yaml 文件源代码:

# yaml-language-server: $schema=https://.github.io/ui5-tooling/schema/ui5.yaml.json
specVersion: '1.0'
metadata:
  name: '.m.tutorial.walkthrough.35'
type: application
ui5Theme: _fiori_3
builder:
  resources:
    excludes:
      - /test/**
      - /localService/**
  customTasks:
    - name: deploy-to-abap
      afterTask: generateCachebusterInfo
      configuration:
        target:
          url: env:SYSTEM
          client: "001"
          auth: basic
        credentials:
          username: env:UI5_USERNAME
          password: env:UI5_PASSWORD
        app:
          name: JERRYPUREUI35
          description: "test app for 35 part"
          package: $ZJERRYGIT
          transport: ""
相关文章
|
1天前
|
XML JSON PHP
PHP的生命周期:从诞生到现代Web开发
【5月更文挑战第31天】探索PHP的历史演变,了解其如何塑造网络技术。本文将引导您穿越时间的长廊,见证一个编程语言如何适应不断变化的技术需求,并持续影响全球数百万开发者和用户。
|
1天前
|
前端开发 JavaScript Java
Java与CSS:解析在Web开发中的协同作用
Java与CSS:解析在Web开发中的协同作用
|
1天前
|
存储 安全 数据库
使用Flask进行小型Web应用开发
【5月更文挑战第31天】本文介绍了使用Python的Flask框架开发小型Web应用的基本步骤和最佳实践。从环境搭建开始,确保安装Python和pip,然后通过`pip install Flask`安装Flask。创建应用涉及初始化Flask实例、定义路由函数处理HTTP请求,如`@app.route('/')`。Flask使用Jinja2模板引擎渲染HTML,如`render_template('about.html')`。为了集成数据库,可借助Flask扩展如Flask-SQLAlchemy或Flask-MongoEngine。
|
2天前
|
缓存 监控 NoSQL
使用Elixir进行可扩展的Web服务开发
【5月更文挑战第30天】本文探讨了使用Elixir进行可扩展Web服务开发,Elixir基于Erlang/OTP,提供并发、分布式处理和容错能力。Phoenix框架助力构建实时Web应用,支持WebSocket。实现可扩展性涉及并发处理、分布式架构、数据库优化、缓存策略及监控告警。实践案例显示,Elixir和Phoenix能有效应对高并发场景,适用于构建高性能Web服务。
|
2天前
|
设计模式 存储 前端开发
Java的mvc设计模式在web开发中应用
Java的mvc设计模式在web开发中应用
|
5天前
|
开发框架 安全 前端开发
使用Ruby on Rails进行快速Web开发
【5月更文挑战第27天】Ruby on Rails是一款基于Ruby的高效Web开发框架,以其快速开发、简洁优雅和强大的社区支持著称。遵循“约定优于配置”,Rails简化了开发流程,通过MVC架构保持代码清晰。安装Ruby和Rails后,可使用命令行工具创建项目、定义模型、控制器和视图,配置路由,并运行测试。借助Gem扩展功能,优化性能和确保安全性,Rails是快速构建高质量Web应用的理想选择。
|
6天前
|
前端开发 开发者 UED
CSS能力是Web开发中不可或缺的技能
【5月更文挑战第26天】CSS能力是Web开发中不可或缺的技能
15 3
|
15天前
|
数据安全/隐私保护
那些酷炫的网页你也可以做到——第六篇,小型公司web开发
那些酷炫的网页你也可以做到——第六篇,小型公司web开发
|
16天前
|
存储 安全 前端开发
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
|
7天前
|
敏捷开发 设计模式 负载均衡
探索现代Web开发中的微服务架构
【5月更文挑战第25天】 随着数字化转型的深入,Web应用变得越来越复杂多变。传统的单体架构因其耦合度高、扩展性差等限制,已难以满足快速迭代与灵活部署的需求。本文将深入探讨微服务架构在现代Web开发中的应用,解析其设计原则、核心组件以及如何通过微服务提升系统的可维护性和可扩展性。我们将从理论到实践,展示微服务如何优化资源利用,实现敏捷开发和持续集成,并最终为企业带来竞争优势。

热门文章

最新文章

http://www.vxiaotou.com