Demos
Every feature below is a **self-contained project you can clone and run** - each has its own `build/` launcher, so `java build/jenesis/Project.java build` from the demo folder builds it. They are numbered as a progression: the early ones establish the basics, the later ones go into specifics. Browse them on GitHub:Getting started
The four foundational project shapes - start here.
- Java (Maven layout) A single-module Java project in the classic Maven layout.
- Java (modular layout) The same, as a real JPMS module with a module-info.
- Multi-module (Maven) Several Maven-layout modules built together.
- Multi-module (modular) A multi-module modular project and its module graph.
Executables & packaging
Turning a project into something you can ship and run.
- Executable (Maven) A runnable application from a Maven-layout project.
- Executable (modular) A runnable modular application.
- Bundle A self-contained bundle archive of an application.
- jlink & jpackage A custom jmod, a jlink runtime image, and a jpackage installer.
- Native image A GraalVM native image built end to end.
- Publishing Publishing artifacts to a repository.
- Bill of materials Producing a BOM for downstream consumers.
JVM languages
Kotlin, Scala and Groovy - alone, mixed with Java, and with quality tooling.
- Kotlin A Kotlin (and mixed Java/Kotlin) project.
- Kotlin quality Kotlin with formatting and static-analysis checks.
- Kotlin compiler plugin Enabling a Kotlin compiler plugin.
- Scala A Scala (and mixed Java/Scala) project.
- Scala quality Scala with code-quality checks.
- Groovy A Groovy (and mixed Java/Groovy) project.
- Groovy quality Groovy with code-quality checks.
Quality & testing
Keeping a codebase healthy and tests fast.
- Code quality Formatting and static analysis for Java.
- Code coverage Measuring test coverage.
- Test selection Running only the tests a change can affect.
- Mutation testing Mutation testing with pitest, discovered from config.
Supply chain & security
Knowing and governing what your build depends on.
- SBOM Generating a software bill of materials.
- Dependency licensing Checking dependency licences against policy.
- Vulnerabilities Scanning dependencies for known vulnerabilities.
- Supply-chain security The supply-chain hardening features together.
The module system
Working with JPMS in earnest.
- Multi-release JAR A multi-release jar with a versioned module-info.
- Pure modular layout A strictly modular source layout.
- Module classifier Publishing a classified module artifact.
- Platform guard Guarding platform-specific code paths.
- Platform guard (Maven) The platform guard in a Maven layout.
- Internal module An internal, non-exported build module.
- External module Loading an external build module.
Build customization
Reaching past the defaults.
- Compiler arguments Passing custom arguments to javac.
- Annotation processing Running an annotation processor.
- Build profiles Switching configuration with profiles.
- Maven exclusions Excluding transitive Maven dependencies.
- Custom assembler A custom assembly step.
- Custom Maven build Customising a Maven-layout build.
- Custom modular build Customising a modular build.
- Custom build A fully custom build definition.
- Docker isolation Running the build isolated in a container.
- Build cache Sharing build outputs through a cache.
Cloning the whole repository gives you all of them at once, plus Jenesis itself as the largest worked
example. See Getting started to install the tool first.