Skip to main content
The Gradle plugin runs the schema engine as part of your build and owns two output trees: generated sources and a discovery resource. This page is the reference for that machinery; for the end-to-end setup, start at the quickstart.

The generator block

A Kotlin generator block sets four things the other languages don’t need:
repost/schema.repost
Source and resources are one transaction: a regeneration replaces both together or restores the previous tree — a crash never leaves a half-written client or a stale registry. Point output/resourceOutput at build/ directories (as above); they are regenerated, not committed.

The engine

The plugin resolves and runs a signed, platform-specific schema engine (sh.repost:repost-schema-engine:0.9.0) — nothing else to install. Pin a different engine build with repostSdk { engineVersion.set("…") }; its checksum and signature are verified before it runs. The generated code emits Kotlin language/API 2.1, so it compiles on the 2.1 baseline and every newer compiler.

Generate and check

The plugin binds repostGenerate before compileKotlin, so a normal build already has your client, and wires repostGenerateCheck into check:
repostGenerateCheck regenerates into an isolated directory, hashes the result, and fails if it differs from the committed output without writing to your source tree — the CI gate that proves generated code is in sync. The repost CLI produces the identical tree from the same schema.

GENERATE versus multi-module AGGREGATE_ONLY

Every module runs in one of two modes (repostSdk { schemaMode.set(...) }; default GENERATE):
  • GENERATE — run the engine on this module’s schema, emit the client and its registry, and aggregate any client registries found on the compile classpath. A single-module app or a schema library uses this.
  • AGGREGATE_ONLY — run no engine and generate no client. Only merge the registries published by dependency modules into one application registry. An application module that consumes clients from several schema libraries uses this so it never regenerates code it doesn’t own.
Application module — build.gradle.kts

Continue

Schema workflow

Version the schema with migrations and deploy it to your environment.

Configuration

Credentials, timeouts, retries, and the trailing-lambda config DSL.

Frameworks

Spring Boot, Jakarta CDI, Ktor, and the framework-neutral core pattern.