Use Java and Gradle to create and publish a function to Azure
This article shows you how to build and publish a Java function project to Azure Functions with the Gradle command-line tool. When you're done, your function code runs in Azure in a serverless hosting plan and is triggered by an HTTP request.
Note
If Gradle is not your preferred development tool, check out our similar tutorials for Java developers using Maven, IntelliJ IDEA and VS Code.
Prerequisites
To develop functions using Java, you must have the following installed:
- Java Developer Kit, version 8, 11, 17 or 21. (Java 21 is currently supported in preview on Linux only)
- Azure CLI
- Azure Functions Core Tools version 2.6.666 or above
- Gradle, version 6.8 and above
You also need an active Azure subscription. If you don't have an Azure subscription, create an Azure free account before you begin.
Important
The JAVA_HOME environment variable must be set to the install location of the JDK to complete this quickstart.
Prepare a Functions project
Use the following command to clone the sample project:
git clone https://github.com/Azure-Samples/azure-functions-samples-java.git
cd azure-functions-samples-java/
Open build.gradle
and change the appName
in the following section to a unique name to avoid domain name conflict when deploying to Azure.
azurefunctions {
resourceGroup = 'java-functions-group'
appName = 'azure-functions-sample-demo'
pricingTier = 'Consumption'
region = 'westus'
runtime {
os = 'windows'
}
localDebug = "transport=dt_socket,server=y,suspend=n,address=5005"
}
Open the new Function.java file from the src/main/java path in a text editor and review the generated code. This code is an HTTP triggered function that echoes the body of the request.
Run the function locally
Run the following command to build then run the function project:
gradle jar --info
gradle azureFunctionsRun
You see output like the following from Azure Functions Core Tools when you run the project locally:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...
Trigger the function from the command line using the following cURL command in a new terminal window:
curl -w "\n" http://localhost:7071/api/HttpExample --data AzureFunctions
The expected output is the following:
Hello, AzureFunctions
Note
If you set authLevel to FUNCTION
or ADMIN
, the access key isn't required when running locally.
Use Ctrl+C
in the terminal to stop the function code.
Deploy the function to Azure
A function app and related resources are created in Azure when you first deploy your function app. Before you can deploy, use the az login Azure CLI command to sign in to your Azure subscription.
az login
Tip
If your account can access multiple subscriptions, use az account set to set the default subscription for this session.
Use the following command to deploy your project to a new function app.
gradle azureFunctionsDeploy
This creates the following resources in Azure, based on the values in the build.gradle file:
- Resource group. Named with the resourceGroup you supplied.
- Storage account. Required by Functions. The name is generated randomly based on Storage account name requirements.
- App Service plan. Serverless Consumption plan hosting for your function app in the specified region. The name is generated randomly.
- Function app. A function app is the deployment and execution unit for your functions. The name is your appName, appended with a randomly generated number.
The deployment also packages the project files and deploys them to the new function app using zip deployment, with run-from-package mode enabled.
The authLevel for HTTP Trigger in sample project is ANONYMOUS
, which will skip the authentication. However, if you use other authLevel like FUNCTION
or ADMIN
, you need to get the function key to call the function endpoint over HTTP. The easiest way to get the function key is from the Azure portal.
Get the HTTP trigger URL
You can get the URL required to trigger your function, with the function key, from the Azure portal.
Browse to the Azure portal, sign in, type the appName of your function app into Search at the top of the page, and press enter.
In your function app, select Functions, choose your function, then click Get Function Url at the top right.
Choose default (Function key) and select Copy.
You can now use the copied URL to access your function.
Verify the function in Azure
To verify the function app running on Azure using cURL
, replace the URL from the sample below with the URL that you copied from the portal.
curl -w "\n" http://azure-functions-sample-demo.azurewebsites.net/api/HttpExample --data AzureFunctions
This sends a POST request to the function endpoint with AzureFunctions
in the body of the request. You see the following response.
Hello, AzureFunctions
Next steps
You've created a Java functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. Now, extend your function by...