This page walks you through everything you need to run MARLO on your own machine: installing prerequisites, copying the properties template, choosing the right run script for your branch’s Java version, and verifying the build with the mandatory quality gates.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/CCAFS/MARLO/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
| Tool | Required version | Notes |
|---|---|---|
| Java (JDK) | 8 (default) or 17 | Java 17 only on branches containing java17 or java_17 in the name |
| Maven | 3.8.x | Used for the multi-module build and for launching the embedded server |
| MySQL | 8.x | Local instance; shared CIAT test data requires VPN (see below) |
Setup steps
Check out the right branch
New feature work branches from To work on a feature, branch off here:
aiccra-staging. Check it out before creating your own branch.If you are assigned to a
java17-named branch (for example aiccra-staging-java17), you must use the Java 17 run scripts throughout this guide.Create your local properties file
Credential files are gitignored and must be created locally. Bootstrap from the committed template:Then open
marlo-dev.properties and fill in your local database host, username, and password — see Configuring MARLO for the full property reference.Set the active Spring profile
The active profile controls which properties file the application loads:Available profiles:
dev, api, pro, test. For local development you will almost always use dev. The run scripts set this automatically — no manual configuration is needed when you use them.Run MARLO
Choose the script that matches your branch’s Java version. The script stops any existing server, cleans the
marlo-web/target directory, builds the project with mvn clean install -DskipTests -pl marlo-web -am, patches the base URL in marlo-dev.properties, and then starts the embedded server.- Java 8 (default branches)
- Java 17 (java17 branches)
What the script does:The app is available at:
- Kills any process matching
tomcat7:run - Detects or uses
JAVA_HOMEpointing to JDK 8 - Builds with Maven
- Calls
scripts/update-marlo-dev-java8.shto rewrite base URLs tohttps://localhost:8443 - Starts Tomcat via
mvn -pl marlo-web tomcat7:run -P java8
- HTTPS:
https://localhost:8443/marlo-web/ - HTTP:
http://localhost:8080/marlo-web/
JAVA_HOME first:Verify startup
The script opens the browser automatically once the server responds. You can also watch the Maven output for Flyway migration logs and Tomcat startup messages.Flyway applies all pending SQL migrations from
marlo-web/src/main/resources/database/migrations/ automatically on every startup — you do not need to run migrations manually.Quality gates
Run these before committing or opening a PR. Both are mandatory.configuration/marlo-checkstyle.xml and enforces a 120-character line limit, 2-space indentation, and mandatory braces. SonarCloud and Snyk run automatically on push via GitHub Actions and do not need to be run locally.
About the update-marlo-dev-* scripts
The run scripts call a helper that patches marlo-dev.properties to use the correct base URL for the current Java version:
| Java version | Scheme | Port | Script called |
|---|---|---|---|
| Java 8 | HTTPS | 8443 | scripts/update-marlo-dev-java8.sh (or .bat) |
| Java 17 | HTTP | 8080 | scripts/update-marlo-dev-java17.sh (or .bat) |
run-marlo-*.sh again) so the base URL stays in sync.