jeka.version=0.11.64
jeka.java.version=25
@project.gitVersioning.enable=true
@native.includeAllResources=true
Start with zero configuration. Manage dependencies, compile, test, create JARs, native exec, and Docker images—all without setup. Configure later, if needed.
Customize with simple properties or plain Java code. Handle advanced devOps scenarios using intuitive mechanisms without unnecessary complexity.
Jeka auto-fetches required tool versions—JDK, JeKa itself, GraalVM, Node.js, ...—making builds reproducible and runnable on bare machines, without needing Java.
Jeka offers a remarkably lean component model, making it easy to write extensions, implement CI/CD pipelines, manage multi-module projects, or share build logic.
Push your code to a Git repository, and users can run it instantly. Jeka enables client-side builds on first run, removing the need for binary hosting and deployment.
Jeka takes Java containerization to new standard of simplicity, enabling zero-config creation of optimized Docker images for JVM and native apps.
# force the use of a specific JeKa and Java version
# versions are installed on-the-fly if missing
jeka.version=0.11.64
jeka.java.version=25
# import plugins or libs by mentioning their coordinates
jeka.classpath=dev.jeka:springboot-plugin dev.jeka:jacoco-plugin
# activate plugin's KBeans
@springboot=on
@jacoco=on
# configure the different aspects of the build
@project.gitVersioning.enable=true
@jacoco.htmlReport=false
@docker.jvmImageName=amazoncorretto:25.0.2
@docker.jvmAgents.0.coordinate=io.opentelemetry.javaagent:opentelemetry-javaagent:2.16.0
@docker.jvmAgents.0.optionLine=-Dotel.traces.exporter=otlp,-Dotel.metrics.exporter=otlp
[version]
org.springframework.boot:spring-boot-dependencies:4.0.5@pom
org.projectlombok:lombok:1.18.44
[compile]
org.springframework.boot:spring-boot-starter-webmvc
org.springframework.boot:spring-boot-starter-data-jpa
com.google.guava:guava:33.5.0-jre
[compile-only]
org.projectlombok:lombok
[runtime]
org.postgresql:postgresql
[test]
org.springframework.boot:spring-boot-starter-webmvc-test
[processor]
org.projectlombok:lombok
@JkDep("com.google.guava:guava:33.5.0-jre")
@JkDep("com.google.code.gson:gson:2.13.2")
class Custom extends KBean {
@JkPostInit
private void postInit(ProjectKBean projectKBean) {
JkProject project = projectKBean.project;
project.compilation.postCompileActions
.append("import-resources", () -> importResources(project));
}
private void importResources(JkProject project) {
Path zip = JkPathFile.of(this.getOutputDir().resolve("res.zip"))
.fetchContentFrom("https://myhost/myres.zip")
.get();
JkZipTree.of(zip).copyTo(
project.compilation.layout.resolveClassDir());
}
}
jeka task: deployFtp without compiling.
@JkDep("commons-net:commons-net:3.11.1")
class Task extends KBean {
@JkPropValue("FTP_PWD")
public String ftpPassword;
@JkInject
private ProjectKBean projectKBean;
@JkDoc("Deploy Spring-Boot application on remote server")
public void deployFtp() throws IOException {
Path jar = projectKBean.project.artifactLocator.getMainArtifactPath();
FTPClient ftp = new FTPClient();
ftp.connect("my.ftp.server", 21);
ftp.login("myUser", ftpPassword);
try (InputStream input = Files.newInputStream(jar)) {
ftp.storeFile("/usr/local/myapp/app.jar", input);
}
ftp.logout();
ftp.disconnect();
}
}
Jeka efficiently runs Java or Kotlin directly from source code without needing a pre-installed JDK. Runtime downloading and compilation occur on-the-fly and are cached for faster subsequent runs. Runs on Windows, Linux, MacOS, and containers.
Configure standard needs with a simple properties file, and switch to Java for more advanced requirements. Properties integrate seamlessly with Java components, offering simple yet powerful configuration.
Jeka consists of a single zero-dependency JAR, weighing less than 2MB, that upgrades in a flash. It runs applications efficiently, eliminating unnecessary JVM startup time.
Jeka offers a wide range of out-of-the-box functionalities, including Java/Kotlin compilation, dependency management, unit testing, uber/shaded JARs, Git, native compilation, Docker, and more.
Jeka’s lean model makes writing extensions straightforward. Plugins already exist for Spring-Boot, Node.js, SonarQube, JaCoCo, Nexus, Protobuf, OpenAPI, and more. We’re waiting for your contribution.
JeKa integrates with the most commonly used enterprise tools and promotes centralized build and pipeline definitions for greater reuse and standardization. It’s released under the business-friendly Apache 2 license.