https://github.com/copydataai/jv
JV is a lightweight Java build tool designed for university assignments, prototyping, and simple projects that don't need enterprise complexity.
https://github.com/copydataai/jv
bash java
Last synced: 6 months ago
JSON representation
JV is a lightweight Java build tool designed for university assignments, prototyping, and simple projects that don't need enterprise complexity.
- Host: GitHub
- URL: https://github.com/copydataai/jv
- Owner: copydataai
- License: mit
- Created: 2025-10-14T09:55:14.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-10-15T11:22:41.000Z (9 months ago)
- Last Synced: 2025-10-16T02:49:26.662Z (9 months ago)
- Topics: bash, java
- Language: Shell
- Homepage: https://jv.copydataai.com
- Size: 72.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# JV
**The simple Java build tool for students and early releases**
[](https://opensource.org/licenses/MIT)
[](https://www.gnu.org/software/bash/)
*An alternative to Maven, Gradle, and Ant for simple projects*
---
## β‘ What is JV?
JV is a lightweight Java build tool designed for **university assignments**, **prototyping**, and **simple projects** that don't need enterprise complexity.
### Why JV?
- **β‘ Fast Setup** - Get started in under 1 minute
- **π― Zero Configuration** - Convention over configuration
- **π¦ Simple Dependencies** - Just drop JARs in `lib/`
- **π§βπ Student Friendly** - No steep learning curve
### The Problem
As a Computer Science student, many courses require Eclipse or complex build tools like Maven and Gradle. But these tools are:
- **Overkill** for simple assignments
- **Time-consuming** to set up
- **Complex** with steep learning curves
- **Verbose** with XML or DSL configuration files
### The Solution
JV provides a simple CLI wrapper around `javac` and `java` that handles:
- Project structure creation
- Compilation with proper classpaths
- Running programs with arguments
- Managing external JAR dependencies
**No configuration files. No XML. No DSL. Just code.**
---
## π Quick Start
### Installation
```bash
# Quick install (recommended)
curl -fsSL https://raw.githubusercontent.com/copydataai/jv/main/install.sh | bash
# Or manual installation
git clone https://github.com/copydataai/jv.git
cd jv
chmod +x jv.sh
sudo ln -s $(pwd)/jv.sh /usr/local/bin/jv
```
### Basic Usage
```bash
# Create a new project
jv create my-assignment
# Create with package structure
jv create my-assignment ie.atu.sw
# Compile and run
cd my-assignment
jv run ie.atu.sw.Main
# Add external library
cp professor-library.jar lib/
# Compile with dependencies
jv compile
# Clean build artifacts
jv clean
```
---
## π Commands
| Command | Description |
|---------|-------------|
| `jv create [package]` | Create new project with optional package structure |
| `jv init` | Initialize project in current directory |
| `jv compile [ClassName]` | Compile all or specific Java files |
| `jv run [args...]` | Run compiled program (auto-compiles if needed) |
| `jv clean` | Remove all `.class` files |
| `jv help` | Show usage and available commands |
---
## β¨ Features
- β
**Convention-based** directory structure (`src/`, `bin/`, `lib/`)
- β
**Auto-detect** and include JARs from `lib/` folder
- β
**Simple** `jv.json` config file for project metadata
- β
**Pass-through** arguments to Java programs
- β
**Clear** error messages for compilation failures
- β
**Zero** external dependencies (just bash and Java)
---
## π Why JV over Maven/Gradle?
| Feature | JV | Maven | Gradle |
|---------|-----|-------|--------|
| **Setup time** | < 1 minute | 5-10 minutes | 5-10 minutes |
| **Config complexity** | Minimal/None | XML (verbose) | Groovy/Kotlin DSL |
| **Learning curve** | Minimal | Steep | Steep |
| **Best for** | University assignments, small projects | Enterprise, large projects | Enterprise, Android |
| **Dependencies** | Drop JARs in `lib/` | XML declaration | DSL declaration |
---
## πΊοΈ Roadmap
### β
Phase 1: Shell-Based MVP (Current)
- Basic project management for university assignments
- Simple CLI commands for create, compile, run, clean
- Convention-based directory structure
- JAR dependency support
### π§ Phase 2: Go Implementation (Planned)
- Single binary distribution (Windows, Linux, macOS)
- Faster execution and better error handling
- Colored terminal output
- Watch mode for auto-recompilation
- Enhanced dependency management
### π Phase 3: Template System (Planned)
- Project templates (console-app, microservice, mvc, etc.)
- `jv create --template ` command
- Custom user-defined templates
- Best practices and boilerplate code
---
## π Documentation
- **[Examples](EXAMPLES.md)** - Detailed usage examples
- **[Contributing](CONTRIBUTING.md)** - Contribution guidelines
- **[Changelog](CHANGELOG.md)** - Version history and updates
---
## π€ Contributing
Contributions are welcome! Whether it's:
- π Bug reports
- π‘ Feature requests
- π Documentation improvements
- π§ Code contributions
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
---
## π License
MIT License - feel free to use JV in your projects!
---
**Made with β€οΈ for students and developers**
[Website](https://jv.copydataai.com) β’ [GitHub](https://github.com/copydataai/jv) β’ [Examples](EXAMPLES.md)