将 Web 应用部署到 Azure 应用服务

已完成

Java azure-webapp-maven-plugin 开发人员有两个目标:第一个是简化管理和配置 Azure 应用服务插件,第二个目标是简化将 Maven 项目部署到 Azure 应用服务的过程。 在上一个练习中,你创建了一个快速的“hello world”示例 Java Web 应用,并在本地对其进行了测试。 将适用于 Azure 应用服务的 Maven 插件添加到项目后,可以将应用部署到 Azure 应用服务。

在本单元中,你将了解公司将其应用托管在 Azure 应用服务上的不同选项,然后学习如何向你的 Maven 项目添加和配置 azure-webapp-maven-plugin

Azure 应用服务简介

Azure 应用服务允许在 Azure 上托管公司的网站、Web 应用、REST API 和其他应用程序代码。 项目代码在云中运行;无需预配或配置任何基础结构。 在 Azure 应用服务中运行 Web 应用可提供在 Azure 上运行的所有优势:应用全局可用,可自动缩放、内置安全性和符合性,并且只需为使用的资源付费。

Azure 应用服务支持多种编程语言,使开发人员可以使用最舒适的语言继续编写其应用程序。 Java 是一流的公民,以及 .NET Core、Python、Node.js等其他语言。可以在 Linux、Windows 或 Docker 容器中托管创建的 Web 应用。 在将 Web 应用部署到 Azure 之前,你将在 Azure 上创建一个应用服务计划,用于指定 OS 和定价层,这决定了应用所需的预配计算资源的大小。

Maven 工作流

Maven 有三个用于生成项目的内置生命周期:defaultclean,其中sitedefault生命周期包括以下阶段:

阶段 DESCRIPTION
compile 编译代码
package 将代码打包到 JAR 或 WAR 中
install 将包安装到本地存储库中
deploy 将最终包复制到远程存储库

但是,使用适用于 Azure 应用服务的 Maven 插件时,不会使用 Maven 生命周期随附的 default 部署阶段。 而是使用 mvn azure-webapp:deploy 命令将应用部署到 Azure。

将用于 Azure 应用服务的 Maven 插件添加到项目

若要将适用于 Azure 应用服务的 Maven 插件添加到 Web 应用,需要将 XML azure-webapp-maven-plugin 添加到项目的 pom.xml 文件中,如下所示:

<plugin>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>azure-webapp-maven-plugin</artifactId>
  <version>2.13.0</version>
</plugin>

但是,该插件提供了一种便捷的交互式方式,用于将配置添加到 POM 文件:

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config

该插件会提示你输入配置应用服务计划所需的信息。 确认选择后,该插件会将前面的插件元素和必备设置添加到项目的 pom.xml 文件中,以便将 Web 应用配置为在 Azure 应用服务中运行。

注释

请查看 适用于 Azure 应用服务的文档Maven 中央存储库以获取有关最新版本 Maven 插件的信息。

配置选项

本单元前面的部分演示了如何使用适用于 Azure 应用服务的 Maven 插件以交互方式配置 Web 应用。 但是,无需以交互方式运行配置。 如果需要,可以手动将插件的 XML 添加到项目的 pom.xml 文件中。

以下文件pom.xml中的带批注摘录演示了一些必需的设置:

<plugin> 
  <groupId>com.microsoft.azure</groupId>  
  <artifactId>azure-webapp-maven-plugin</artifactId>  
  <version>2.13.0</version>  
  <configuration> 
    <schemaVersion>v2</schemaVersion>  
    <subscriptionId>aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e</subscriptionId>  
    <resourceGroup>learn-9c627899-58ae-4ef5-9630-3336ec7bce0c</resourceGroup>  
    <appName>MyWebApp-1610102860270</appName>  
    <pricingTier>S1</pricingTier>  
    <region>westus</region>  
    <runtime> 
      <os>Linux</os>  
      <javaVersion>Java 17</javaVersion>  
      <webContainer>Tomcat 10.0</webContainer> 
    </runtime>  
    <deployment> 
      <resources> 
        <resource> 
          <directory>${project.basedir}/target</directory>  
          <includes> 
            <include>*.war</include> 
          </includes> 
        </resource> 
      </resources> 
    </deployment> 
  </configuration> 
</plugin> 

下表中列出了一些相关的配置选项。 有关选项的完整列表,请参阅适用于 Azure 应用服务的 Maven 插件文档。

标记 选项
<javaVersion> Linux 支持版本 8、11 和 17
Windows 支持版本 8、11 和 17
<webContainer> Linux 支持 Tomcat、JBoss EAP 7.2 和 Java SE
Windows 支持 Tomcat 和 Java SE
<resource> 指定 WAR 或 JAR 位于项目中的位置

部署选项

如果您已创建应用服务计划,可以在 pom.xml 文件中指定该计划的设置。 将 Web 应用部署到 Azure 时,Maven 使用这些设置将新应用部署到现有应用服务计划。

<!-- Deploy Web App to the existing App Service Plan -->
<appServicePlanResourceGroup>${PLAN_RESOURCEGROUP_NAME}</appServicePlanResourceGroup>
<appServicePlanName>${PLAN_NAME}</appServicePlanName>

另一个选项是允许 azure-webapp-maven-plugin 在以交互方式配置插件设置时为你创建应用服务计划。 如果未在 pom.xml 文件中指定现有应用服务计划,则此选项是插件的默认行为。

无论是选择以交互方式还是手动创建应用服务计划,都使用相同的 Maven 命令将应用程序代码部署到 Azure:

mvn package azure-webapp:deploy

在下一练习中,你将将 Web 应用部署到 Azure 应用服务。