Reference · Curie.toml

TOML reference

Every key accepted by Curie.toml, with its type, default value, and whether it can be declared in a workspace root and inherited by members.

Keys marked W in the Inherited column are workspace-inheritable: declare them in the root Curie.toml and every member picks them up. A member that declares the same key overrides the inherited value (for scalar fields) or merges with it (for maps — member entries take precedence on collision).

[application] / [library] / [bom]

Exactly one of these sections must appear in every non-workspace Curie.toml. A workspace root has [workspace] and none of these.

KeyTypeRequiredDefaultNotes
namestringYesBase name of the output JAR; Docker image name default
versionstringYesEmbedded in the JAR filename and MANIFEST.MF
mainClassstringNoAuto-detected[application] only. Must be set when more than one main class exists
groupIdstringNoRequired for curie publish and SBOM metadata

[workspace]

Required in a workspace root; absent in member projects.

KeyTypeRequiredDefaultNotes
membersstring[]YesRelative paths to member directories, each containing its own Curie.toml

[java]

Controls Java compilation. Workspace-inheritable — a root-level [java] block applies to every member that does not declare its own.

KeyTypeInheritedDefaultNotes
releaseVersionstringWRunning JDKPassed to javac --release. Omit to target the running JDK's version automatically
enablePreviewboolWfalseAdds --enable-preview to javac and the test JVM. When no releaseVersion is set, Curie supplies --release <running-jdk> as required by javac

[kotlin]

Enables Kotlin compilation. Only needed when .kt source files are present. Workspace-inheritable.

KeyTypeInheritedDefaultNotes
versionstringWKotlin compiler and stdlib version. Required when Kotlin sources are present

[groovy]

Enables Groovy compilation. Workspace-inheritable.

KeyTypeInheritedDefaultNotes
versionstringWGroovy version used for compilation and the Spock framework

[spock]

Configures Spock Framework integration. Workspace-inheritable.

KeyTypeInheritedDefaultNotes
enabledboolWfalseAdd org.spockframework:spock-core to the test classpath. A member can set false to opt out of a workspace-inherited true
versionstringWSpock version; required when enabled = true

[test]

Controls test execution. Workspace-inheritable.

KeyTypeInheritedDefaultNotes
junitPlatformVersionstringW6.0.3Version of JUnit Platform Console Standalone used to run tests
coverageboolWfalseEnable JaCoCo coverage instrumentation. Produces target/jacoco.exec and an HTML report

[dependencies] / [test-dependencies]

Maps of "group:artifact" to a version string or inline table. Not workspace-inheritable — each member declares its own dependencies.

Curie.toml
[dependencies]
"com.fasterxml.jackson.core:jackson-databind" = "2.17.2"
"net.shibboleth.oidc:oidc-common"             = { version = "3.3.0", repository = "shibboleth" }
"com.google.guava:guava"                       = { version = "", exclusions = ["com.google.guava:listenablefuture"] }

[test-dependencies]
"org.assertj:assertj-core" = "3.26.0"
Inline keyTypeNotes
versionstringEmpty string "" defers to a BOM import
repositorystringID of a [[repositories]] entry; routes this artifact to that repo
exclusionsstring[]Transitive artifacts to drop, as "group:artifact" coordinates

[bom-imports] / [test-bom-imports]

BOM imports for version management. Workspace-inheritable — member entries are merged in and take precedence on collision.

Curie.toml
[bom-imports]
"com.fasterxml.jackson:jackson-bom" = "2.17.2"

[test-bom-imports]
"org.junit:junit-bom" = "5.11.0"

[annotation-processors] / [test-annotation-processors]

Processors placed on the annotation processor path during compilation. Workspace-inheritable — member entries are merged in and take precedence on collision.

Curie.toml
[annotation-processors]
"org.projectlombok:lombok" = "1.18.32"
"com.google.auto.value:auto-value" = { version = "1.11.0", on-compile-classpath = true }

[test-annotation-processors]
"com.example:test-proc" = "1.0.0"
Inline keyTypeNotes
versionstringEmpty string defers to a BOM import
on-compile-classpathboolAlso place on the regular compile classpath — required by Lombok and some other processors whose annotations must be visible to javac

[[repositories]]

Additional Maven repositories. Array of tables; workspace-inheritable (member entries are appended). Maven Central is always included and does not need to be declared.

KeyTypeRequiredNotes
idstringYesUnique identifier; referenced by repository = "id" in dependency entries
urlstringYesBase URL of the repository

[workspace-dependencies]

Declares intra-workspace dependencies. Each key is a logical name; the value is an inline table with a path pointing to another workspace member.

app/Curie.toml
[workspace-dependencies]
core  = { path = "../core" }
utils = { path = "../utils" }

[docker]

Enables Docker image building. The section is activated by its presence or by a Dockerfile at the project root.

KeyTypeDefaultNotes
baseImagestringeclipse-temurin:21-jre-alpineBase image for the generated Dockerfile
imageNamestringapplication.nameDocker image name
imageTagstringapplication.versionDocker image tag

[native-image]

GraalVM native-image compilation.

KeyTypeDefaultNotes
outputNamestringapplication.nameName of the produced native binary
configDirstringDirectory containing native-image configuration files (reflect-config.json, etc.)
extraArgsstring[][]Extra flags passed to native-image, e.g. ["--no-fallback"]

[fat-jar]

Enables fat JAR (uber JAR) packaging — all dependency classes merged into a single JAR.

KeyTypeDefaultNotes
enabledboolfalseWhen true, extracts dependency JARs and merges them into the output JAR. The Class-Path manifest entry is omitted

[build-info]

Controls embedding of git metadata in the JAR.

KeyTypeDefaultNotes
enabledbooltrueWhen true and the project is inside a git repo, embeds META-INF/build-info.properties containing git.commit.id. Suffixed with -dirty if there are uncommitted changes

[publish]

Controls curie publish — publishing artifacts to a Maven repository.

KeyTypeRequiredNotes
repositorystringYesID of a [[repositories]] entry to publish to
signboolNoSign artifacts with GPG before publishing
descriptionstringNoHuman-readable description embedded in the POM
homepagestringNoProject URL embedded in the POM
licensesstring[]NoSPDX license identifiers, e.g. ["Apache-2.0"]
developersobject[]NoEach entry has id, name, and email string fields

[maven]

Controls curie maven sync — generating a pom.xml from Curie.toml. See Maven sync for full details.

KeyTypeDefaultNotes
pinTransitiveboolfalseWhen true, resolves the full transitive closure and emits every version into <dependencyManagement> so Maven's version mediation cannot diverge from Curie's resolver

[modules]

Java Platform Module System (JPMS) configuration. See JPMS for full details.

KeyTypeDefaultNotes
enabledboolfalseEnables JPMS mode. Requires a module-info.java at the source root

[plugins.*]

Declares Maven plugins for use with curie maven sync. Each sub-key is a group:artifact coordinate for a Maven plugin. See Plugins and Maven sync for details.