Skip to main content

Java Configuration

Codeflash stores its configuration inside your existing build file — pom.xml properties for Maven projects, or gradle.properties for Gradle projects. No separate config file is needed.

Maven Configuration

For Maven projects, Codeflash writes properties under the <properties> section of your pom.xml with the codeflash. prefix:
<properties>
    <!-- Only non-default overrides are written -->
    <codeflash.moduleRoot>src/main/java</codeflash.moduleRoot>
    <codeflash.testsRoot>src/test/java</codeflash.testsRoot>
    <codeflash.gitRemote>origin</codeflash.gitRemote>
    <codeflash.formatterCmds>mvn spotless:apply -DspotlessFiles=$file</codeflash.formatterCmds>
    <codeflash.disableTelemetry>false</codeflash.disableTelemetry>
    <codeflash.ignorePaths>src/main/java/generated/</codeflash.ignorePaths>
</properties>

Gradle Configuration

For Gradle projects, Codeflash writes settings to gradle.properties with the codeflash. prefix:
codeflash.moduleRoot=src/main/java
codeflash.testsRoot=src/test/java
codeflash.gitRemote=origin
Codeflash auto-detects most settings from your project structure. Running codeflash init will set up the correct config — manual configuration is usually not needed. For standard Maven/Gradle layouts, Codeflash may write no config at all if all defaults are correct.

Auto-Detection

When you run codeflash init, Codeflash inspects your project and auto-detects:
SettingDetection logic
Source rootLooks for src/main/java (Maven/Gradle standard layout), falls back to pom.xml sourceDirectory
Test rootLooks for src/test/java, test/, tests/
Build toolDetects Maven (pom.xml) or Gradle (build.gradle / build.gradle.kts)
Test frameworkChecks build file dependencies for JUnit 5, JUnit 4, or TestNG

Configuration Options

PropertyDescriptionDefault
moduleRootSource directory to optimizesrc/main/java
testsRootTest directorysrc/test/java
gitRemoteGit remote for pull requestsorigin
formatterCmdsCode formatter command ($file placeholder for file path)(none)
disableTelemetryDisable anonymized telemetryfalse
ignorePathsPaths within source root to skip during optimization(none)
Only non-default values are written to the config. If your project uses the standard src/main/java and src/test/java layout with the default origin remote, Codeflash may not need to write any config properties at all.

Multi-Module Projects

For multi-module Maven/Gradle projects, run codeflash init from the module you want to optimize. The config is written to that module’s pom.xml or gradle.properties:
my-project/
|- client/
|  |- src/main/java/com/example/client/
|  |- src/test/java/com/example/client/
|  |- pom.xml          <-- run codeflash init here
|- server/
|  |- src/main/java/com/example/server/
|- pom.xml
For non-standard layouts (like the Aerospike client where source is under client/src/), codeflash init will prompt you to override the detected paths.

Tracer Options

When using codeflash optimize to trace a Java program, these CLI options are available:
OptionDescriptionDefault
--timeoutMaximum time (seconds) for each tracing stageNo limit
--max-function-countMaximum captures per method100
--trace-onlyTrace and generate replay tests without optimizingfalse
Example with timeout:
codeflash optimize --timeout 30 java -jar target/my-app.jar --app-args

Example

Standard Maven project

my-app/
|- src/
|  |- main/java/com/example/
|  |  |- App.java
|  |  |- Utils.java
|  |- test/java/com/example/
|     |- AppTest.java
|- pom.xml
Standard layout — no extra config needed. codeflash init detects everything automatically.

Gradle project

my-lib/
|- src/
|  |- main/java/com/example/
|  |- test/java/com/example/
|- build.gradle
|- gradle.properties    <-- codeflash config written here if overrides needed
Standard layout — no extra config needed. codeflash init detects everything automatically.