A modern CLI for Java projects

sachahjkl1 pts1 comments

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...

gradle cargo defaults java release build

Related Articles