将 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 等其他语言。你可将创建的 Web 应用托管在 Linux、Windows 上或 docker 容器中。 在将 Web 应用部署到 Azure 之前,你将在 Azure 上创建应用服务计划,该计划指定 OS 和定价层,确定你的应用所需的预配计算资源的大小。

Maven 工作流

Maven 有 3 个用于生成项目的内置生命周期:defaultcleansite,其中 default 生命周期包含以下阶段:

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

但是,如果使用的是 Azure 应用服务的 Maven 插件,则不使用 Maven 的 default 生命周期中包含的部署阶段。 你转而需要通过 mvn azure-webapp:deploy 命令将应用部署到 Azure。

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

若要将用于 Azure 应用服务的 Maven 插件添加到 Web 应用,可以将 azure-webapp-maven-plugin 的 XML 添加到项目的 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 应用服务中运行。

注意

要了解 Maven 插件的最新版本,请查看 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>11111111-1111-1111-1111-111111111111</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 应用服务。