GitHub - sachahjkl/jav: A modern CLI for Java projects · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
sachahjkl
jav
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
master
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>18 Commits<br>18 Commits
.github/workflows
.github/workflows
scripts
scripts
src
src
templates
templates
tests
tests
.gitignore
.gitignore
Cargo.lock
Cargo.lock
Cargo.toml
Cargo.toml
README.md
README.md
flake.lock
flake.lock
flake.nix
flake.nix
justfile
justfile
View all files
Repository files navigation
jav
jav is a modern CLI for Java projects. It creates projects from templates, detects Maven/Gradle/simple Java layouts, and gives you one command shape for new, build, test, run, clean, doctor, and upgrade.
The goal is not to replace Maven or Gradle. The goal is to make the everyday Java workflow feel integrated.
Quick Start
jav new<br>jav new list --verbose<br>jav new console --name Demo --package dev.example.demo<br>cd Demo<br>jav run
jav run builds first when sources are newer than outputs. Use --no-build when you explicitly want to skip that check.
Commands
jav doctor<br>jav new list<br>jav new springweb --describe<br>jav new springweb --name Api --build-tool gradle<br>jav build --configuration release<br>jav test<br>jav run --configuration debug -- hello world<br>jav clean<br>jav upgrade --check
Build and run support debug and release configurations. For generated projects this maps to Java-native Maven profiles or Gradle properties.
Generated runnable projects include a jav.toml file for run defaults such as main class and Maven/Gradle task. Edit it when a project needs a custom run shape.
Templates
Installed templates:
console: executable Java app with JUnit tests, defaults to Maven
cli: command-line app skeleton, defaults to Gradle
worker: long-running/background worker skeleton, defaults to Gradle
library: reusable Java library, defaults to Maven
junit: focused JUnit 5 test project, defaults to Maven
springboot: configurable Spring Boot app, defaults to Gradle
springweb: Spring REST API, defaults to Gradle
springdata: Spring API with JPA/PostgreSQL scaffolding, defaults to Gradle
springsecurity: Spring API with security defaults, defaults to Gradle
springbatch: Spring Batch job starter, defaults to Gradle
Common template options:
jav new console --name Demo --package dev.example.demo<br>jav new library --name Core --build-tool gradle<br>jav new springboot --name Service --feature web --feature actuator<br>jav new springdata --name Api --spring-boot-version 3.5.0
Supported build tools are maven and gradle. Pass --build-tool to override the template default.
Template aliases are supported too, for example webapi for springweb and classlib for library.
Install
Run without installing through Nix:
nix run github:sachahjkl/jav -- doctor
Install with Nix:
nix profile install github:sachahjkl/jav
Install from release binaries:
irm https://raw.githubusercontent.com/sachahjkl/jav/master/scripts/install.ps1 | iex
curl -fsSL https://raw.githubusercontent.com/sachahjkl/jav/master/scripts/install.sh | sh
Nix-managed installs should be upgraded with Nix. Release-binary installs can use jav upgrade.
Development
nix develop<br>cargo run -- new list<br>cargo run -- build --configuration release
Verify changes:
cargo fmt --all<br>cargo clippy --all-targets -- -D warnings<br>cargo test
Cargo.toml is the source of truth for the package version.
Release
Releases are automated from master. The release workflow builds Windows and Linux artifacts, creates the GitHub release, and publishes release.json for jav upgrade.
Before a release commit:
nix run .#set-version<br>git add Cargo.toml Cargo.lock<br>git commit -m "bump version"<br>git push origin master
About
A modern CLI for Java projects
Topics
java
cli
developer-tools
Resources
Readme
Uh oh!
There was an error while loading. Please reload this page.
Activity
Stars
stars
Watchers
watching
Forks
forks
Report repository
Releases
v2026.623.8
Latest
Jun 23, 2026
+ 3...