The FTGO application is a multi-module Gradle project. Each microservice lives in its own Gradle submodule under the repository root. This page walks you through the two build steps required before you can start the application, explains how to build a single service in isolation, and describes the Gradle wrapper so you do not need a local Gradle installation.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/microservices-patterns/ftgo-application/llms.txt
Use this file to discover all available pages before exploring further.
Before you start
Make sure you have completed the steps on the Prerequisites page. You need Java 8 or later and an internet connection so Gradle can download dependencies from Maven Central and the Eventuate snapshot repository on the first build.Build steps
Build the Spring Cloud Contracts
Spring Cloud Contracts must be published to the local build repository before the service tests can consume them. Run this command from the repository root:This task discovers every subproject whose name ends in
-contracts, then runs the publish task for each one. The published artifacts land in build/repo/ inside the project root, which is already listed as a repository in build.gradle.This step is required. Skipping it will cause compilation errors in the service modules that depend on the generated contract stubs.
Building a single service
If you are working on one service and want a faster feedback loop, you can build only that submodule. From the repository root, prefix the task with the subproject name:ftgo-order-service with the name of whichever module you want to build. The available service modules are listed in settings.gradle:
ftgo-consumer-serviceftgo-order-serviceftgo-kitchen-serviceftgo-restaurant-serviceftgo-accounting-serviceftgo-order-history-serviceftgo-delivery-serviceftgo-api-gateway
Gradle wrapper
The repository ships with the Gradle wrapper (gradlew / gradlew.bat), so you do not need to install Gradle separately. The wrapper downloads the correct Gradle version automatically on the first invocation. Always use ./gradlew rather than a system-installed gradle binary to ensure you use the version the project was tested with.
Docker images for each service are built during
composeUp, not during assemble. The assemble step only produces the JARs that are later copied into the Docker images.