快速入门:在 Azure 应用服务中创建 Java 应用

Azure 应用服务 提供高可扩展性、自动修补的网页应用托管服务。 在本快速入门中,你将使用 适用于 Azure 应用服务 Web 应用的 Maven 插件 将 Java Web 应用程序部署到 Azure 应用服务中的 Linux Tomcat 服务器。

如果 Maven 不是你的首选开发工具,请查看适用于 Java 开发人员的类似文章:

先决条件

如果没有 Azure 订阅,可在开始前创建一个试用帐户

1 - 使用 Azure cli

2 - 创建 Java 应用

在 Cloud Shell 中运行以下 Maven 命令,来创建一个名为 helloworld 的新应用:

mvn archetype:generate "-DgroupId=example.demo" "-DartifactId=helloworld" "-DarchetypeArtifactId=maven-archetype-webapp" "-DarchetypeVersion=1.4" "-Dversion=1.0-SNAPSHOT"

然后,通过运行 cd helloworld将工作目录更改为项目文件夹。

配置 Maven 插件

应用服务部署过程自动使用 Azure CLI 中的 Azure 凭据。 如果未在本地安装 Azure CLI,则 Maven 插件会使用 OAuth 或设备登录来进行身份验证。 有关详细信息,请参阅 Maven 插件的身份验证

运行以下 Maven 命令,通过设置应用服务作系统、Java 版本和 Tomcat 版本来配置部署。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.14.1:config
  1. 对于 “创建新的运行配置”,请键入 Y ,然后按 Enter
  2. 为 OS 定义值,输入 2 用于 Linux,然后按 Enter
  3. 对于 javaVersion 的定义值,键入 1 表示 Java 21,然后按 Enter
  4. webContainer 定义值,输入 1 以选择 Tomcat 10.1,然后按 Enter 键。
  5. 对于 PricingTier 的“定义值”,键入 3 表示 P1V2,然后按 Enter
  6. 对于 “确认”,键入 Y ,然后按 Enter

输出应类似于以下代码:

Please confirm webapp properties
AppName : helloworld-1745408005556
ResourceGroup : helloworld-1745408005556-rg
Region : chinanorth2
PricingTier : P1V2
OS : Linux
Java Version: Java 21
Web server stack: Tomcat 10.1
Deploy to slot : false
Confirm (Y/N) [Y]: 
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:36 min
[INFO] Finished at: 2025-04-23T11:34:44Z
[INFO] ------------------------------------------------------------------------

确认选择后,插件会将插件元素和所需的设置添加到项目的 pom.xml 文件中,该文件将 Web 应用配置为在应用服务中运行。

pom.xml 文件的相关部分应类似于以下示例。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>helloworld-1745408005556-rg</resourceGroup>
                <appName>helloworld-1745408005556</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

稍后将使用演示应用中的<appName><resourceGroup>helloworld-1745408005556helloworld-1745408005556-rg的值。

可以直接在 pom.xml 文件中修改应用服务的配置。

部署应用

pom.xml 文件中准备好所有配置后,可以使用以下命令将 Java 应用部署到 Azure。

mvn package azure-webapp:deploy

从可用订阅列表中选择后,Maven 将部署到 Azure 应用服务。 部署完成后,应用程序已准备就绪。

对于此演示,URL 为 http://helloworld-1745408005556.chinacloudsites.cn. 使用本地 Web 浏览器打开 URL 时,应会看到以下应用:

在 Azure 应用服务中运行的 Maven Hello World Web 应用的屏幕截图。

恭喜! 已将 Java 应用部署到应用服务。

清理资源

你在 Azure 资源组中为本教程创建了资源。 如果不再需要资源组,可以通过在 Cloud Shell 中运行以下 Azure CLI 命令来删除资源组及其所有资源。

az group delete --name helloworld-1745408005556-rg --yes

该命令可能需要一段时间才能运行。

Azure 应用服务 提供高可扩展性、自动修补的网页应用托管服务。 在本快速入门中,你将使用 适用于 Azure 应用服务 Web 应用的 Maven 插件 将带有嵌入式 Spring Boot、Quarkus 或 Tomcat 服务器的 Java Web 应用程序部署到应用服务。 有关详细信息,请参阅 azure-webapp-maven-plugin

如果 Maven 不是你的首选开发工具,请查看适用于 Java 开发人员的类似文章:

先决条件

如果没有 Azure 订阅,可在开始前创建一个试用帐户

1 - 使用 Azure 本地 Shell

2 - 获取示例应用

选择相应的选项卡,并按照说明获取示例 Spring Boot、Quarkus 或 Embedded Tomcat Web 应用。

下载并提取 默认的 Spring Boot Web 应用程序模板,或通过运行以下命令克隆它。 运行 Spring CLI 命令 spring boot new my-webapp 还会克隆 Web 应用。

git clone https://github.com/rd-1-2022/rest-service my-webapp

然后,通过运行 cd my-webapp将工作目录更改为项目文件夹。

配置 Maven 插件

应用服务部署过程自动使用 Cloud Shell 中的 Azure 凭据。 Maven 插件使用 OAuth 或设备登录进行身份验证。 有关详细信息,请参阅身份验证

运行以下 Maven 命令,通过设置应用服务作系统和 Java 版本来配置部署。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.14.1:config
  1. 对于 “创建新的运行配置”,请键入 Y ,然后按 Enter
  2. 对于 定义操作系统的值,请键入 2以选择 Linux,然后按下Enter键。
  3. 对于 javaVersion 的定义值,键入 1 表示 Java 21,然后按 Enter
  4. 对于 “定义 pricingTier”值,键入 3 表示 P1v2,然后按 Enter
  5. 对于 “确认”,键入 Y ,然后按 Enter

输出应类似于以下代码:

Please confirm webapp properties
AppName : <generated-app-name>
ResourceGroup : <generated-app-name>-rg
Region : chinanorth2
PricingTier : P1v2
OS : Linux
Java Version: Java 21
Web server stack: Java SE
Deploy to slot : false
Confirm (Y/N) [Y]: 
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  47.533 s
[INFO] Finished at: 2025-04-23T12:20:08Z
[INFO] ------------------------------------------------------------------------

确认选择后,插件会将插件元素和所需的设置添加到项目的 pom.xml 文件中,该文件将 Web 应用配置为在应用服务中运行。

pom.xml 文件的相关部分应类似于以下示例。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>generated-app-name-rg</resourceGroup>
                <appName>generated-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

稍后将使用<appName><resourceGroup>的值。

可以直接在 pom.xml 文件中修改应用服务的配置。

部署应用

pom.xml 文件中准备好所有配置后,可以将 Java 应用部署到 Azure。

  1. 使用以下命令生成 JAR 文件。

     mvn clean package
    

    提示

    Spring Boot 会生成两个 JAR 文件 mvn package,但 azure-webapp-maven-plugin 选取正确的 JAR 文件以自动部署。

  2. 使用以下命令将应用部署到 Azure:

    mvn azure-webapp:deploy
    

    从可用订阅列表中选择后,Maven 将部署到 Azure 应用服务。 部署完成后,应用程序已准备就绪,会看到以下输出:

    [INFO] Successfully deployed the artifact to <URL>
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  02:20 min
    [INFO] Finished at: 2023-07-26T12:47:50Z
    [INFO] ------------------------------------------------------------------------
    
  3. 从 Azure 门户中的 “概述 ”页打开应用的默认域,并追加 /greeting 到 URL。 应会看到以下应用:

    屏幕截图显示在 Azure 应用服务中运行的 Spring Boot Hello World Web 应用。

恭喜! 已将 Java 应用部署到应用服务。

清理资源

你在 Azure 资源组中为本教程创建了资源。 如果不再需要资源组,可以通过在 Cloud Shell 中运行以下 Azure CLI 命令来删除资源组及其所有资源。

az group delete --name <resource group name>  --yes

例如,运行 az group delete --name quarkus-hello-azure-1690375364238-rg --yes。 此命令可能需要一段时间才能运行。