Skip to content

Add Jenesis candidate#775

Merged
chloe41427[bot] merged 1 commit into
sdkman:masterfrom
raphw:add-jenesis-candidate
May 18, 2026
Merged

Add Jenesis candidate#775
chloe41427[bot] merged 1 commit into
sdkman:masterfrom
raphw:add-jenesis-candidate

Conversation

@raphw
Copy link
Copy Markdown
Contributor

@raphw raphw commented May 18, 2026

Onboards jenesis candidate

Adds the jenesis candidate per the vendor onboarding process. No versions are inserted in this migration; releases will follow via the vendor API once credentials are provisioned.

What Jenesis is

Jenesis is a Java-native build tool focused on the Java module system. Three properties define it:

  1. Configured in plain Java. There is no external DSL: no XML, Groovy, or Kotlin script. Build descriptors are regular Java code that compiles against the public build.jenesis API.
  2. Zero installation. The launcher is itself a .java source file executed via the JVM's single-file launcher. A clone of the project plus a JDK is the entire setup: no wrapper script, lockfile, or pre-built binary required.
  3. Incremental and cache-friendly. Builds are expressed as a step DAG with content-addressed inputs. Each step reruns only when its inputs change; unchanged steps are served from cache. Builds are reproducible from a clean clone.

The default Layout.AUTO inspects the project root: a module-info.java selects the modular pipeline, a pom.xml selects the Maven-compatible one. The same java build/jenesis/Project.java invocation works for both.

Archive shape

The SDKMAN distribution is a well-formed UNIVERSAL zip:

jenesis-<version>/
├── bin/
│   ├── jenesis      (Unix launcher, exec bit set)
│   └── jenesis.bat  (Windows launcher)
├── lib/
│   └── build.jenesis-<version>.jar
└── LICENSE

Both launchers prefer JAVA_HOME/bin/java, fall back to java on PATH, and require Java 25 or newer (printing a readable error otherwise). The bundled jar's module descriptor carries a main-class attribute, so launch is java -p lib -m build.jenesis "\$@".

marc0der
marc0der previously approved these changes May 18, 2026
## Onboards `jenesis` candidate

Adds the `jenesis` candidate per the [vendor onboarding process](https://github.com/sdkman/sdkman-cli/wiki/Vendor-onboarding-process). No versions are inserted in this migration; releases will follow via the vendor API once credentials are provisioned.

- Repository: https://github.com/raphw/jenesis
- Homepage: https://jenesis.build
- License: Apache-2.0
- Distribution: `UNIVERSAL`

## What Jenesis is

Jenesis is a Java-native build tool focused on the Java module system. Three properties define it:

1. **Configured in plain Java.** There is no external DSL: no XML, Groovy, or Kotlin script. Build descriptors are regular Java code that compiles against the public `build.jenesis` API.
2. **Zero installation.** The launcher is itself a `.java` source file executed via the JVM's single-file launcher. A clone of the project plus a JDK is the entire setup: no wrapper script, lockfile, or pre-built binary required.
3. **Incremental and cache-friendly.** Builds are expressed as a step DAG with content-addressed inputs. Each step reruns only when its inputs change; unchanged steps are served from cache. Builds are reproducible from a clean clone.

The default `Layout.AUTO` inspects the project root: a `module-info.java` selects the modular pipeline, a `pom.xml` selects the Maven-compatible one. The same `java build/jenesis/Project.java` invocation works for both.

## Archive shape

The SDKMAN distribution is a well-formed `UNIVERSAL` zip:

    jenesis-<version>/
    ├── bin/
    │   ├── jenesis      (Unix launcher, exec bit set)
    │   └── jenesis.bat  (Windows launcher)
    ├── lib/
    │   └── build.jenesis-<version>.jar
    └── LICENSE

Both launchers prefer \`JAVA_HOME/bin/java\`, fall back to \`java\` on \`PATH\`, and require Java 25 or newer (printing a readable error otherwise). The bundled jar's module descriptor carries a \`main-class\` attribute, so launch is \`java -p lib -m build.jenesis "\$@"\`.
@chloe41427
Copy link
Copy Markdown
Contributor

chloe41427 Bot commented May 18, 2026

Hey Rafael! 👋

Thanks for the PR — Jenesis looks great! Just spotted a quick formatting thing: the Scala code needs to be run through scalafmt to align with the project's style.

Per the README, just run:

scalafmt

It'll auto-format everything to spec. After that, you're all set!

Cheers 🙂

@raphw
Copy link
Copy Markdown
Contributor Author

raphw commented May 18, 2026

Thanks for the quick feedback and your kind words. I spotted this as quickly as I pushed and force-pushed a fixed commit.

@chloe41427 chloe41427 Bot merged commit 0077f4d into sdkman:master May 18, 2026
1 check passed
@chloe41427
Copy link
Copy Markdown
Contributor

chloe41427 Bot commented May 18, 2026

Merged! Thanks for the PR, Rafael — Jenesis is now in the candidate roster. 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants