Manual Gradle and Maven Setup
- Full manual
build.gradle.ktsconfiguration for Higher-Kinded-J - Full manual
pom.xmlconfiguration for Higher-Kinded-J - Snapshot repository configuration for both build tools
Most projects should use the HKJ build plugin covered in the next chapter -- a single line replaces all the boilerplate below. This page documents the full manual configuration for projects that cannot use the plugin (constrained environments, in-house build frameworks, or plugins that conflict with the HKJ plugin).
Gradle Manual Setup
// build.gradle.kts
plugins { java }
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(25))
}
}
dependencies {
implementation("io.github.higher-kinded-j:hkj-core:LATEST_VERSION")
// Optional: generates Focus paths and Effect paths for your records
annotationProcessor("io.github.higher-kinded-j:hkj-processor-plugins:LATEST_VERSION")
}
// Required: enable Java preview features
tasks.withType<JavaCompile>().configureEach {
options.compilerArgs.add("--enable-preview")
}
tasks.withType<Test>().configureEach {
jvmArgs("--enable-preview")
}
tasks.withType<JavaExec>().configureEach {
jvmArgs("--enable-preview")
}
Gradle SNAPSHOT Configuration
For SNAPSHOT versions of HKJ, add the Sonatype snapshots repository:
repositories {
mavenCentral()
maven {
url = uri("https://central.sonatype.com/repository/maven-snapshots/")
}
}
Maven Manual Setup
<properties>
<maven.compiler.release>25</maven.compiler.release>
<maven.compiler.enablePreview>true</maven.compiler.enablePreview>
</properties>
<dependencies>
<dependency>
<groupId>io.github.higher-kinded-j</groupId>
<artifactId>hkj-core</artifactId>
<version>LATEST_VERSION</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Optional: generates Focus paths and Effect paths for your records -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>io.github.higher-kinded-j</groupId>
<artifactId>hkj-processor-plugins</artifactId>
<version>LATEST_VERSION</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<!-- Required: enable preview features for tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>--enable-preview</argLine>
</configuration>
</plugin>
<!-- Required: enable preview features for application execution -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>java</executable>
<arguments>
<argument>--enable-preview</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
Maven SNAPSHOT Configuration
For SNAPSHOT versions, add the Sonatype snapshots repository to your pom.xml:
<repositories>
<repository>
<id>central-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
The HKJ build plugin handles all of the above -- dependencies, preview flags, annotation processors, and compile-time Path type checking -- with a single plugins { } block. Unless you have a specific reason to avoid it, the plugin is the recommended path.
Previous: Tooling Next: Build Plugins