将 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 个用于生成项目的内置生命周期:default
、clean
和 site
,其中 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 应用服务。