name: using-gradle
description: Use this skill when you need to build the project, compile code, or run tests.
Some example usages:
"Check this code compiles"
"Run the tests for EmbeddedRelationalStatement"
"Run the yaml-tests suite"
Building
./gradlew build # full build
./gradlew package # build + generate protobuf sources (required before first compile)
./gradlew clean # clean build artifacts
./gradlew -PspotbugsEnableHtmlReport check # all checks including SpotBugs and Checkstyle
Compile a single module without running tests:
./gradlew :fdb-relational-core:compileJava
./gradlew :fdb-record-layer-core:compileJava
Running tests
Standard test tasks
| Task | What it runs |
|---|
test | Unit + integration tests, excluding WipesFDB and AutomatedTest tags |
quickTest | Like test but faster (excludes WipesFDB) |
destructiveTest | Tests tagged WipesFDB — wipes FDB data, single fork |
performanceTest | Tests tagged Performance, assertions disabled |
rpcTest | Tests via embedded RPC server rather than embedded connection |
mixedModeTest | Tests tagged MixedMode (requires external server JARs) |
singleVersionTest | Tests against a single external server version |
Run a specific test class or method in a module:
./gradlew :fdb-relational-core:test --tests 'com.apple.foundationdb.relational.recordlayer.EmbeddedRelationalStatementTest'
./gradlew :fdb-relational-core:test --tests 'com.apple.foundationdb.relational.recordlayer.EmbeddedRelationalStatementTest.testGet'
yaml-tests
./gradlew :yaml-tests:test # run all yaml integration tests
./gradlew :yaml-tests:test --tests 'YamlIntegrationTests.myTestName'
Custom seed and iteration count (for reproducing flaky yaml tests):
./gradlew :yaml-tests:test -Ptests.yaml.seed=12345 -Ptests.yaml.iterations=10
FDB prerequisite
Tests that hit FDB require a running FoundationDB cluster and fdb-environment.yaml in the
repo root.
Example fdb-environment.yaml:
libraryPath: /usr/local/lib/libfdb_c.dylib
clusterFiles:
- /usr/local/etc/foundationdb/fdb.cluster
Publishing locally (to use in another project)
./gradlew publishToMavenLocal -PpublishBuild=true
Jars land in ~/.m2/repository/org/foundationdb/.
JMH benchmarks (fdb-relational-core)
./gradlew :fdb-relational-core:jmh
Benchmark sources live in fdb-relational-core/src/jmh/java/. The active benchmarks are
controlled by the includes list in the jmh {} block of fdb-relational-core.gradle.
Useful JMH options (pass as Gradle properties or edit the block):
./gradlew :fdb-relational-core:jmh -Pjmh.include=DirectAccessVsQueryBenchmark