This project demonstrates a powerful command-line interface built with **Qua### **Standard JAR Package** The application can be packaged using:
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"; mvn packageThis produces the quarkus-run.jar file in the target/quarkus-app/ directory.
Dependencies are copied into the target/quarkus-app/lib/ directory.
Run with: java -jar target/quarkus-app/quarkus-run.jar [command] [options]
To build an รผber-jar with all dependencies included:
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"; mvn package -Dquarkus.package.jar.type=uber-jarRun with: java -jar target/*-runner.jar [command] [options]onic Subatomic Java Framework) and Picocli (a modern framework for building feature-rich command line applications).
A multi-command CLI application showcasing various enterprise patterns:
- Multi-command architecture with organized subcommands
- Rich option support including enums, required parameters, and boolean flags
- Multiple output formats (JSON, CSV, Table)
- Interactive features with progress indicators and styled output
- Comprehensive help system with automatic documentation
java -jar target/quarkus-app/quarkus-run.jar greet Alice --style WOW --timestampFeatures:
- Style options:
NORMAL,EXCITED,WOW - Optional timestamp display
- Personalized messaging
# List users in different formats
java -jar target/quarkus-app/quarkus-run.jar user list --format JSON
java -jar target/quarkus-app/quarkus-run.jar user list --format CSV
java -jar target/quarkus-app/quarkus-run.jar user list --format TABLE
# Create new user
java -jar target/quarkus-app/quarkus-run.jar user create johndoe --email john@example.com --role ADMIN
# Delete user
java -jar target/quarkus-app/quarkus-run.jar user delete aliceFeatures:
- Multiple output formats (JSON/CSV/Table)
- Role-based user creation (
USER,ADMIN,MODERATOR) - Simulated database operations
# Analyze file contents
java -jar target/quarkus-app/quarkus-run.jar file analyze document.txt --lines --words --chars
# Process files with operations
java -jar target/quarkus-app/quarkus-run.jar file process --input data.csv --operation TRANSFORM --output result.csv
# Backup multiple files
java -jar target/quarkus-app/quarkus-run.jar file backup "file1.txt" "file2.txt" "config.json" -d "C:\backups"Features:
- File analysis with statistics
- Processing pipeline with operations:
COPY,MOVE,TRANSFORM,COMPRESS,DECOMPRESS,ENCRYPT,DECRYPT - Batch backup operations with progress indicators
# Show system information
java -jar target/quarkus-app/quarkus-run.jar system --info
# Display memory usage
java -jar target/quarkus-app/quarkus-run.jar system --memory
# Show system properties
java -jar target/quarkus-app/quarkus-run.jar system --properties
# Combine multiple options
java -jar target/quarkus-app/quarkus-run.jar system --info --memory --propertiesFeatures:
- OS and Java version information
- Real-time memory usage monitoring
- System properties inspection
- Top-level command with
@TopCommandannotation - Subcommands organized by functional domain
- Nested subcommands for complex operations
- Help integration with automatic documentation
- Boolean flags (
--verbose,--timestamp) - Required options (
--input,--email) - Optional parameters with defaults
- Enum choices for controlled input
- Multi-value parameters for file lists
- Structured data with JSON/CSV export
- Tabular display with aligned columns
- Progress indicators for long operations
- Styled output with emojis and colors
- Error handling with user-friendly messages
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/.
For development with live coding enabled:
# Use regular Maven (recommended)
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"; mvn quarkus:dev
# Or use Maven wrapper (may have Java version conflicts)
./mvnw quarkus:devNOTE: Quarkus ships with a Dev UI available in dev mode at http://localhost:8080/q/dev/
Pass CLI arguments during development:
mvn quarkus:dev -Dquarkus.args='greet Alice --style WOW'
mvn quarkus:dev -Dquarkus.args='user list --format JSON'Build and run the optimized application:
# Build the application
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"; mvn package -DskipTests
# Run the CLI application
java -jar target/quarkus-app/quarkus-run.jar [command] [options]
# Show all available commands
java -jar target/quarkus-app/quarkus-run.jar --helpThe application can be packaged using:
./mvnw packageIt produces the quarkus-run.jar file in the target/quarkus-app/ directory.
Be aware that itโs not an รผber-jar as the dependencies are copied into the target/quarkus-app/lib/ directory.
The application is now runnable using java -jar target/quarkus-app/quarkus-run.jar.
If you want to build an รผber-jar, execute the following command:
./mvnw package -Dquarkus.package.jar.type=uber-jarThe application, packaged as an รผber-jar, is now runnable using java -jar target/*-runner.jar.
Create a native executable for ultra-fast startup:
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"; mvn package -DnativeBuild native executable without local GraalVM installation:
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"; mvn package -Dnative -Dquarkus.native.container-build=trueExecute native binary: ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner [command] [options]
If you encounter dependency injection errors:
- Ensure Java 21 is installed and
JAVA_HOMEis set correctly - Use regular Maven instead of Maven wrapper for better compatibility:
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21"; mvn [command]
- Maven wrapper conflicts: Use
mvninstead of./mvnw - Plugin compatibility: Ensure Quarkus version matches plugin versions
- Native build requirements: GraalVM or Docker required for native builds
This CLI application can be extended with:
- Configuration Management - Load/save settings from YAML/JSON files
- Database Integration - JPA entities with H2/PostgreSQL persistence
- REST API Client - Commands for calling external services
- Workflow Automation - Multi-step process orchestration
- Plugin System - Dynamically loadable command modules
- Interactive Mode - REPL-style command interface
- Scheduled Tasks - Cron-like job execution
- Report Generation - PDF/Excel export capabilities
- Quarkus 3.8.6 - Supersonic Subatomic Java Framework
- Picocli 4.7.6 - Modern CLI framework with rich features
- Jakarta CDI - Dependency injection and context management
- Java 21 - Latest LTS version with modern language features
- Maven 3.9.6 - Build automation and dependency management
- Quarkus Picocli Guide - Develop command line applications with Picocli
- Quarkus Maven Tooling - Learn about building native executables
- Picocli Documentation - Comprehensive Picocli framework documentation
# Process and transform data files
java -jar target/quarkus-app/quarkus-run.jar file process --input raw-data.csv --operation TRANSFORM --output clean-data.csv
# Analyze results
java -jar target/quarkus-app/quarkus-run.jar file analyze clean-data.csv --lines --words --chars# Create multiple users
java -jar target/quarkus-app/quarkus-run.jar user create admin --email admin@company.com --role ADMIN
java -jar target/quarkus-app/quarkus-run.jar user create manager --email manager@company.com --role MODERATOR
# Export user list
java -jar target/quarkus-app/quarkus-run.jar user list --format JSON > users-backup.json# Quick system check
java -jar target/quarkus-app/quarkus-run.jar system --info --memory
# Detailed diagnostics
java -jar target/quarkus-app/quarkus-run.jar system --info --memory --propertiesBuilt with โค๏ธ using Quarkus and Picocli