-
Notifications
You must be signed in to change notification settings - Fork 64
using gradle
Gradle is an open-source build automation tool focused on flexibility and performance. App Engine provides a Gradle plugin that you can use to build and deploy your app to App Engine.
Note: For information about other ways to build and deploy your app, see Testing and deploying your app.
-
If you haven't already done so, follow the steps in this guide to download the gcloud CLI, create your Google Cloud project, and initialize your App Engine app.
-
Install the gcloud CLI
app-engine-javacomponent:gcloud components install app-engine-java
You can create a new Gradle project from scratch using the shell. Alternatively, to try out the plugin, you can download, run locally, and deploy the hello world project.
To create a new project:
-
Create a new directory and navigate to it.
-
To initialize a new project:
-
Run
gradle init:gradle init --type java-applicationYou'll be asked to answer questions:
- Enter target Java version (min: 7, default: 21): 21
- Select application structure: 1 for Single application project
- Select build script DSL: 2 (for Groovy)
- Select test framework: 1 (for JUnit 4)
- Generate build using new APIs and behavior: no
-
Create the
WEB-INFfolder:mkdir -p app/src/main/webapp/WEB-INF -
Create the
appenginefolder:mkdir -p app/src/main/appengine
-
-
Remove the stub files generated by
gradle init:rm ./app/src/main/java/org/example/App.java ./app/src/test/java/org/example/AppTest.java -
Add the following to your
app/build.gradlefile to add App Engine Gradle tasks, Maven repositories, the App Engine Gradle plugin, dependencies, and task configuration: -
You also need to add the following files to your project, using a text editor or integrated development environment (IDE):
+ [`app/src/main/appengine/app.yaml`](https://cloud.google.com/appengine/docs/flexible/java/configuring-your-app-with-app-yaml) + [`app/src/main/webapp/WEB-INF/web.xml`](https://cloud.google.com/appengine/docs/flexible/java/configuring-the-web-xml-deployment-descriptor) (unless your app uses [Servlet 3.1 annotations](https://www.javadoc.io/static/javax.servlet/javax.servlet-api/3.1.0/javax/servlet/annotation/package-summary.html)) + app/src/main/docker/Dockerfile (optional for [custom runtimes](https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build)) + Java classes + Java [testing classes](../../localunittesting)
See Set up your development environment for an overview of a Java App Engine project.
-
To access Google resources from your project when running locally, set the application default credentials by running:
gcloud auth application-default login -
Change to the root of your application directory.
-
During the development phase, you can run and test your application at any time in the development server by invoking Gradle:
gradle jettyRunAlternatively, you can run Gradle without installing it by using the Gradle wrapper.
-
Wait for the server to start. The server is started with your application running when you see a message similar to this:
:prepareInplaceWebAppFolder
:createInplaceWebAppFolder
:compileJava
:processResources UP-TO-DATE
:classes
:prepareInplaceWebAppClasses
:prepareInplaceWebApp
:jettyRun
17:40:05 INFO Jetty 9.2.15.v20160210 started and listening on port 8080
17:40:05 INFO runs at:
17:40:05 INFO http://localhost:8080/
- See your app running at
http://localhost:8080.
To learn more about the Gretty plugin, see Gretty Configuration and Gretty tasks.
To deploy your application:
gradle appengineDeploy
The appengineDeploy task and all other Gradle tasks have associated properties
that you can use. For a complete list of tasks and properties, refer to
App Engine Gradle Tasks and Properties.
Gradle provides a mechanism to download and run the required version of Gradle without installation:
-
{Linux/macOS}
-
Change to the sample code directory.
-
Run gradlew:
./gradlew jettyRun
-
-
{Windows}
-
Change to the sample code directory.
-
Run gradlew:
./gradlew.bat jettyRun
-
Additional information on Gradle can be found in
App Engine Gradle Tasks and Properties.
- Explore the plugin code and report issues on GitHub.
- Learn how to specify properties for tasks by referring to