| author | cephalin |
|---|---|
| ms.service | azure-app-service |
| ms.devlang | java |
| ms.topic | include |
| ms.date | 06/10/2025 |
| ms.author | cephalin |
Azure App Service provides a highly scalable, self-patching web app hosting service. In this quickstart, you use the Maven Plugin for Azure App Service Web Apps to deploy a Java web application with an embedded Spring Boot, Quarkus, or Tomcat server to App Service. For more information, see azure-webapp-maven-plugin.
If Maven isn't your preferred development tool, check out similar articles for Java developers:
-
[!INCLUDE quickstarts-free-trial-note]
-
Run the commands in this quickstart by using Azure Cloud Shell, an interactive shell that you can use through your browser to work with Azure services. To use Cloud Shell:
-
Select the following Launch Cloud Shell button or go to https://shell.azure.com to open Cloud Shell in your browser.
:::image type="icon" source="~/reusable-content/ce-skilling/azure/media/cloud-shell/launch-cloud-shell-button.png" alt-text="Button to launch the Azure Cloud Shell." border="false" link="https://shell.azure.com":::
-
Sign in to Azure if necessary, and make sure you're in the Bash environment of Cloud Shell.
-
Select Copy in a code block, paste the code into Cloud Shell, and run it.
-
Choose the appropriate tab and follow instructions to get the sample Spring Boot, Quarkus, or Embedded Tomcat web app.
Download and extract the default Spring Boot web application template, or clone it by running the following command. Running the Spring CLI command spring boot new my-webapp also clones the web app.
git clone https://github.com/rd-1-2022/rest-service my-webappThen change your working directory to the project folder by running cd my-webapp.
-
Generate a new Quarkus app named
quarkus-hello-azureby running the following Maven command:mvn io.quarkus.platform:quarkus-maven-plugin:3.21.3:create \ -DprojectGroupId=org.acme \ -DprojectArtifactId=quarkus-hello-azure \ -Dextensions='resteasy-reactive' -
Change your working directory to the project folder by running
cd quarkus-hello-azure.
-
Download and extract the embeddedTomcatExample repository, or clone it locally by running the following
git clonecommand.git clone https://github.com/Azure-Samples/java-docs-embedded-tomcat
-
Change your working directory to the project folder by running
cd java-docs-embedded-tomcat. -
Run the application by using the standard Tomcat class. See Main.java in the sample.
The App Service deployment process uses your Azure credentials from Cloud Shell automatically. The Maven plugin authenticates with OAuth or device sign-in. For more information, see Authentication.
Run the following Maven command to configure the deployment by setting the App Service operating system and Java version.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.14.1:config- For Create new run configuration, type Y and then press Enter.
- For Define value for OS, type 2 for Linux, and then press Enter.
- For Define value for javaVersion, type 1 for Java 21, and then press Enter.
- For Define value for pricingTier, type 3 for P1v2, and then press Enter.
- For Confirm, type Y and then press Enter.
The output should look similar to the following code:
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 plugin element and required settings to your project's pom.xml file, which configures your web app to run in 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>generated-app-name-rg</resourceGroup>
<appName>generated-app-name</appName>
...
</configuration>
</plugin>
</plugins>
</build>The values for <appName> and <resourceGroup> are used later.
You can modify the configurations for App Service directly in your pom.xml file.
- For the complete list of configurations, see Common Configurations.
- For configurations specific to App Service, see Azure Web App: Configuration Details.
With all the configuration ready in your pom.xml file, you can deploy your Java app to Azure.
-
Build the JAR file using the following command.
mvn clean package
[!TIP] Spring Boot produces two JAR files with
mvn package, but theazure-webapp-maven-pluginpicks the right JAR file to deploy automatically. -
Deploy the app 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 deployment completes, your application is ready, and you see the following output:
[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] ------------------------------------------------------------------------ -
Open your app's default domain from the Overview page in the Azure portal, and append
/greetingto the URL. You should see the following app::::image type="content" source="../../media/quickstart-java/springboot-hello-world-in-browser-azure-app-service.png" alt-text="Screenshot of Spring Boot Hello World web app running in Azure App Service.":::
-
Build the JAR file using the following command.
echo '%prod.quarkus.http.port=${PORT}' >> src/main/resources/application.properties mvn clean package -Dquarkus.package.jar.type=uber-jar
Set the Quarkus port in the application.properties file to the
PORTenvironment variable in the Linux Java container.Dquarkus.package.jar.type=uber-jartells Maven to generate an Uber-Jar, which includes all dependencies in the JAR file.[!TIP] Quarkus produces two JAR files with
mvn package, butazure-webapp-maven-pluginpicks the right JAR file to deploy automatically. -
Deploy the app 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 deployment completes, your application is ready, and you see the following output:
[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] ------------------------------------------------------------------------ -
Open your app's default domain from the Overview in the Azure portal, and append
/helloto the URL. You should see the following app::::image type="content" source="../../media/quickstart-java/quarkus-hello-world-in-browser-azure-app-service.png" alt-text="Screenshot of Quarkus web app running in Azure App Service.":::
-
Build the JAR file using the following command.
mvn clean package
To make the application deploy using the azure-webapp-maven-plugin and run on Azure App Service, the sample configures the
packagegoal as follows:- Builds a single uber JAR file, which contains everything the application needs to run.
- Creates an executable JAR by specifying the Tomcat class as the startup class.
- Replaces the original artifact with the
Uber-Jarto ensure that the deploy step deploys the right file.
-
Deploy the app 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 deployment completes, your application is ready, and you see the following output:
[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] ------------------------------------------------------------------------ -
Open the URL for your app's default domain from the Overview in the Azure portal. You should see the following app:
:::image type="content" source="../../media/quickstart-java/embedded-tomcat-hello-world-in-browser-azure-app-service.png" alt-text="Screenshot of embedded Tomcat web app running in Azure App Service.":::
Congratulations! You deployed a Java app to App Service.
You created the resources for this tutorial in an Azure resource group. If you no longer need them, you can delete the resource group and all its resources by running the following Azure CLI command in Cloud Shell.
az group delete --name <resource group name> --yes
For example, run az group delete --name quarkus-hello-azure-1690375364238-rg --yes. This command might take a while to run.