Edit

Share via


Quickstart: Create a Java app on Azure App Service

In this quickstart, you'll use the Maven Plugin for Azure App Service Web Apps to deploy a Java web application to a Linux Tomcat server in Azure App Service. App Service provides a highly scalable, self-patching web app hosting service. Use the tabs to switch between Tomcat, JBoss, or embedded server (Java SE) instructions.

Screenshot of Maven Hello World web app running in Azure App Service.

If Maven isn't your preferred development tool, check out our similar tutorials for Java developers:

If you don't have an Azure subscription, create an Azure free account before you begin.

1 - Use Azure Cloud Shell

Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. You can use either Bash or PowerShell with Cloud Shell to work with Azure services. You can use the Cloud Shell preinstalled commands to run the code in this article, without having to install anything on your local environment.

To start Azure Cloud Shell:

Option Example/Link
Select Try It in the upper-right corner of a code or command block. Selecting Try It doesn't automatically copy the code or command to Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Button to launch Azure Cloud Shell.
Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Screenshot that shows the Cloud Shell button in the Azure portal

To use Azure Cloud Shell:

  1. Start Cloud Shell.

  2. Select the Copy button on a code block (or command block) to copy the code or command.

  3. Paste the code or command into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux, or by selecting Cmd+Shift+V on macOS.

  4. Select Enter to run the code or command.

2 - Create a Java app

Execute the following Maven command in the Cloud Shell prompt to create a new app named helloworld:

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

Then change your working directory to the project folder:

cd helloworld

3 - Configure the Maven plugin

The deployment process to Azure App Service uses your Azure credentials from the Azure CLI automatically. If the Azure CLI isn't installed locally, then the Maven plugin authenticates with OAuth or device sign-in. For more information, see authentication with Maven plugins.

Run the Maven command shown next to configure the deployment. This command helps you to set up the App Service operating system, Java version, and Tomcat version.

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.14.1:config
  1. For Create new run configuration, type Y, then Enter.

  2. For Define value for OS, type 1 for Windows, or 2 for Linux, then Enter.

  3. For Define value for javaVersion, type 1 for Java 21, then Enter.

  4. For Define value for webContainer, type 1 for Tomcat 10.1, then Enter.

  5. For Define value for pricingTier, type 3 for P1V2, then Enter.

  6. For Confirm, type Y, then Enter.

    Please confirm webapp properties
    AppName : helloworld-1745408005556
    ResourceGroup : helloworld-1745408005556-rg
    Region : centralus
    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] ------------------------------------------------------------------------
    

After you've confirmed your choices, the plugin adds the above plugin element and requisite settings to your project's pom.xml file that configure your web app to run in Azure App Service.

The relevant portion of the pom.xml file should look similar to the following example.

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

You can modify the configurations for App Service directly in your pom.xml.

Be careful about the values of <appName> and <resourceGroup> (helloworld-1745408005556 and helloworld-1745408005556-rg accordingly in the demo). They're used later.

4 - Deploy the app

With all the configuration ready in your pom.xml file, you can deploy your Java app to Azure with one single command.

mvn package azure-webapp:deploy

Once you select from a list of available subscriptions, Maven deploys to Azure App Service. When deployment completes, your application is ready at http://<appName>.azurewebsites.net/ (http://helloworld-1745408005556.azurewebsites.net in the demo). Open the URL with your local web browser, you should see

Screenshot of Maven Hello World web app running in Azure App Service.

Congratulations! You've deployed your first Java app to App Service.

5 - Clean up resources

In the preceding steps, you created Azure resources in a resource group. If you don't need the resources in the future, delete the resource group from portal, or by running the following command in the Cloud Shell:

az group delete --name <your resource group name; for example: helloworld-1745408005556-rg> --yes

This command may take a minute to run.

In this quickstart, you use the Maven Plugin for Azure App Service Web Apps to deploy a Java web application with an embedded server to Azure App Service. App Service provides a highly scalable, self-patching web app hosting service. Use the tabs to switch between Tomcat, JBoss, or embedded server (Java SE) instructions.

The quickstart deploys either a Spring Boot app, Quarkus app, or embedded Tomcat using the azure-webapp-maven-plugin plugin.

If Maven isn't your preferred development tool, check out our similar tutorials for Java developers:

If you don't have an Azure subscription, create an Azure free account before you begin.

1 - Use Azure Cloud Shell

Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. You can use either Bash or PowerShell with Cloud Shell to work with Azure services. You can use the Cloud Shell preinstalled commands to run the code in this article, without having to install anything on your local environment.

To start Azure Cloud Shell:

Option Example/Link
Select Try It in the upper-right corner of a code or command block. Selecting Try It doesn't automatically copy the code or command to Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Button to launch Azure Cloud Shell.
Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Screenshot that shows the Cloud Shell button in the Azure portal

To use Azure Cloud Shell:

  1. Start Cloud Shell.

  2. Select the Copy button on a code block (or command block) to copy the code or command.

  3. Paste the code or command into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux, or by selecting Cmd+Shift+V on macOS.

  4. Select Enter to run the code or command.

2 - Get the sample app

  1. Download and extract the default Spring Boot web application template. This repository is cloned for you when you run the Spring CLI command spring boot new my-webapp.

    git clone https://github.com/rd-1-2022/rest-service my-webapp
    
  2. Change your working directory to the project folder:

    cd my-webapp
    

3 - Configure the Maven plugin

The deployment process to Azure App Service uses your Azure credentials from the Azure CLI automatically. If the Azure CLI isn't installed locally, then the Maven plugin authenticates with OAuth or device sign-in. For more information, see authentication with Maven plugins.

Run the Maven command shown next to configure the deployment. This command helps you to set up the App Service operating system, Java version, and Tomcat version.

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.14.1:config
  1. For Create new run configuration, type Y, then Enter.

  2. For Define value for OS, type 2 for Linux, then Enter.

  3. For Define value for javaVersion, type 1 for Java 21, then Enter.

  4. For Define value for pricingTier, type 3 for P1v2, then Enter.

  5. For Confirm, type Y, then Enter.

    Please confirm webapp properties
    AppName : <generated-app-name>
    ResourceGroup : <generated-app-name>-rg
    Region : centralus
    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] ------------------------------------------------------------------------
    

After you confirm your choices, the plugin adds the above plugin element and requisite settings to your project's pom.xml file that configure your web app to run in Azure App Service.

The relevant portion of the pom.xml file should look similar to the following example.

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

You can modify the configurations for App Service directly in your pom.xml.

Be careful about the values of <appName> and <resourceGroup>. They're used later.

4 - Deploy the app

With all the configuration ready in your pom.xml file, you can deploy your Java app to Azure with one single command.

  1. Build the JAR file using the following command(s):

    mvn clean package
    

    Tip

    Spring Boot produces two JAR files with mvn package, but azure-webapp-maven-plugin picks the right JAR file to deploy automatically.

  2. Deploy to Azure by using the following command:

    mvn azure-webapp:deploy
    

    Once you select from a list of available subscriptions, Maven deploys to Azure App Service. When the deployment completes, you see the following output:

    [INFO] Successfully deployed the artifact to https://<app-name>.azurewebsites.net
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  02:20 min
    [INFO] Finished at: 2023-07-26T12:47:50Z
    [INFO] ------------------------------------------------------------------------
    

    Your application is ready at http://<appName>.azurewebsites.net/.

Open the URL http://<appName>.azurewebsites.net/greeting with your local web browser (note the /greeting path), and you should see:

Screenshot of Spring Boot Hello World web app running in Azure App Service.

Congratulations! You deployed your first Java app to App Service.

5 - Clean up resources

In the preceding steps, you created Azure resources in a resource group. If you don't need the resources in the future, delete the resource group from portal, or by running the following command in the Cloud Shell:

az group delete --name <your resource group name; for example: quarkus-hello-azure-1690375364238-rg> --yes

This command might take a minute to run.

In this quickstart, you'll use the Maven Plugin for Azure App Service Web Apps to deploy a Java web application to a Linux JBoss EAP server in Azure App Service. App Service provides a highly scalable, self-patching web app hosting service. Use the tabs to switch between Tomcat, JBoss, or embedded server (Java SE) instructions.

Screenshot of Maven Hello World web app running in Azure App Service.

If Maven isn't your preferred development tool, check out our similar tutorials for Java developers:

If you don't have an Azure subscription, create an Azure free account before you begin.

1 - Use Azure Cloud Shell

Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. You can use either Bash or PowerShell with Cloud Shell to work with Azure services. You can use the Cloud Shell preinstalled commands to run the code in this article, without having to install anything on your local environment.

To start Azure Cloud Shell:

Option Example/Link
Select Try It in the upper-right corner of a code or command block. Selecting Try It doesn't automatically copy the code or command to Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Button to launch Azure Cloud Shell.
Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Screenshot that shows the Cloud Shell button in the Azure portal

To use Azure Cloud Shell:

  1. Start Cloud Shell.

  2. Select the Copy button on a code block (or command block) to copy the code or command.

  3. Paste the code or command into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux, or by selecting Cmd+Shift+V on macOS.

  4. Select Enter to run the code or command.

2 - Create a Java app

Clone the Pet Store demo application.

git clone https://github.com/Azure-Samples/app-service-java-quickstart

Change directory to the completed pet store project and build it.

Tip

The petstore-ee7 sample requires Java 11 or newer. The booty-duke-app-service sample project requires Java 17. If your installed version of Java is less than 17, run the build from within the petstore-ee7 directory, rather than at the top level.

cd app-service-java-quickstart
git checkout 20230308
cd petstore-ee7
mvn clean install

If you see a message about being in detached HEAD state, this message is safe to ignore. Because you won't make any Git commit in this quickstart, detached HEAD state is appropriate.

3 - Configure the Maven plugin

The deployment process to Azure App Service uses your Azure credentials from the Azure CLI automatically. If the Azure CLI isn't installed locally, then the Maven plugin authenticates with OAuth or device sign-in. For more information, see authentication with Maven plugins.

Run the Maven command shown next to configure the deployment. This command helps you to set up the App Service operating system, Java version, and Tomcat version.

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.14.1:config
  1. For Create new run configuration, type Y, then Enter.

  2. For Define value for OS, type 2 for Linux, then Enter.

  3. For Define value for javaVersion, type 2 for Java 17, then Enter. If you select Java 21, you won't see Jbosseap as an option later.

  4. For Define value for webContainer, type 4 for Jbosseap 7, then Enter.

  5. For Define value for pricingTier, type 1 for P1v3, then Enter.

  6. For Confirm, type Y, then Enter.

    Please confirm webapp properties
    AppName : petstoreee7-1745409173307
    ResourceGroup : petstoreee7-1745409173307-rg
    Region : centralus
    PricingTier : P1v3
    OS : Linux
    Java Version: Java 17
    Web server stack: Jbosseap 4
    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:54:22Z
    [INFO] ------------------------------------------------------------------------
    

After you've confirmed your choices, the plugin adds the above plugin element and requisite settings to your project's pom.xml file that configure your web app to run in Azure App Service.

The relevant portion of the pom.xml file should look similar to the following example.

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

You can modify the configurations for App Service directly in your pom.xml.

Be careful about the values of <appName> and <resourceGroup> (petstoreee7-1745409173307 and petstoreee7-1745409173307-rg accordingly in the demo). They're used later.

4 - Deploy the app

With all the configuration ready in your pom.xml file, you can deploy your Java app to Azure with one single command.

# Disable testing, as it requires Wildfly to be installed locally.
mvn package azure-webapp:deploy -DskipTests

Once you select from a list of available subscriptions, Maven deploys to Azure App Service. When deployment completes, your application is ready at http://<appName>.azurewebsites.net/ (http://petstoreee7-1745409173307.azurewebsites.net in the demo). Open the URL with your local web browser, you should see

Screenshot of Maven Hello World web app running in Azure App Service.

Congratulations! You've deployed your first Java app to App Service.

5 - Clean up resources

In the preceding steps, you created Azure resources in a resource group. If you don't need the resources in the future, delete the resource group from portal, or by running the following command in the Cloud Shell:

az group delete --name <your resource group name; for example: petstoreee7-1745409173307-rg> --yes

This command may take a minute to run.

Next steps