浅谈本地开发好的 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: ""
相关文章
|
3天前
|
开发框架 安全 前端开发
使用Ruby on Rails进行快速Web开发
【5月更文挑战第27天】Ruby on Rails是一款基于Ruby的高效Web开发框架,以其快速开发、简洁优雅和强大的社区支持著称。遵循“约定优于配置”,Rails简化了开发流程,通过MVC架构保持代码清晰。安装Ruby和Rails后,可使用命令行工具创建项目、定义模型、控制器和视图,配置路由,并运行测试。借助Gem扩展功能,优化性能和确保安全性,Rails是快速构建高质量Web应用的理想选择。
|
4天前
|
前端开发 开发者 UED
CSS能力是Web开发中不可或缺的技能
【5月更文挑战第26天】CSS能力是Web开发中不可或缺的技能
12 3
|
5天前
|
敏捷开发 设计模式 负载均衡
探索现代Web开发中的微服务架构
【5月更文挑战第25天】 随着数字化转型的深入,Web应用变得越来越复杂多变。传统的单体架构因其耦合度高、扩展性差等限制,已难以满足快速迭代与灵活部署的需求。本文将深入探讨微服务架构在现代Web开发中的应用,解析其设计原则、核心组件以及如何通过微服务提升系统的可维护性和可扩展性。我们将从理论到实践,展示微服务如何优化资源利用,实现敏捷开发和持续集成,并最终为企业带来竞争优势。
|
6天前
|
Java 应用服务中间件 Apache
Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目
Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目
21 1
|
6天前
|
应用服务中间件 数据库 nginx
Python Web开发实战:从搭建博客到部署上线
使用Python和Flask初学者指南:从搭建简单博客到部署上线。文章详细介绍了如何从零开始创建一个博客系统,包括准备Python环境、使用Flask和SQLite构建应用、设计数据库模型、创建视图函数和HTML模板,以及整合所有组件。最后,简述了如何通过Gunicorn和Nginx将应用部署到Linux服务器。
|
6天前
|
前端开发 JavaScript Java
JAVA Web开发入门与实战
本文引导读者入门JAVA Web开发,介绍了Web开发的基本概念,如Servlet、JSP和JavaBean,并详细阐述了JAVA Web开发环境的搭建。文章通过一个在线书店系统的实战项目,展示了从需求分析、数据库设计到前后端开发的全过程,涵盖Servlet处理请求、JSP动态生成页面及表单添加书籍功能。最后,文章提及了进阶技术,如框架使用、前端集成和安全性考虑,鼓励读者深入探索JAVA Web开发的广阔世界。
|
8天前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
13天前
|
数据安全/隐私保护
那些酷炫的网页你也可以做到——第六篇,小型公司web开发
那些酷炫的网页你也可以做到——第六篇,小型公司web开发
|
14天前
|
存储 安全 前端开发
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
|
10天前
|
存储 人工智能 前端开发
从前端到后端,探索Web开发的奥秘
Web开发是当今最热门的技术领域之一,涉及前端、后端、数据库等多个方面。本文将介绍Web开发的基本架构和技术要点,并深入探讨前后端交互、安全性等问题,帮助读者更好地理解Web开发的奥秘。