How to run your Java app with Guvnor
Setup
cd my-java-app
mvn clean package
guvnor init
Configuration
# guvnor.yaml
server:
http_port: 8080
https_port: 8443
log_level: info
apps:
- name: java-app
hostname: localhost
port: 3000
command: java
args:
- "-jar"
- "target/myapp.jar"
- "--server.port=3000"
working_dir: /path/to/your/java-app
environment:
JAVA_OPTS: "-Xms512m -Xmx1024m"
SPRING_PROFILES_ACTIVE: "production"
health_check:
enabled: true
path: /actuator/health
interval: 30s
restart_policy:
enabled: true
max_retries: 5
backoff: 5s
tls:
enabled: false
auto_cert: false
cert_dir: ./certs
Usage
# Production deployment
mvn clean package # Build first
guvnor start # Access: http://localhost:8080/
guvnor logs # View logs
guvnor status # Check status
guvnor stop # Stop app
# Development
guvnor start # If using dev config below
Alternative Configurations
Spring Boot Application
apps:
- name: spring-boot
command: java
args: ["-jar", "target/myapp.jar"]
environment:
JAVA_OPTS: "-Xms256m -Xmx512m"
SPRING_PROFILES_ACTIVE: "prod"
Development Mode
apps:
- name: java-dev
command: mvn
args: ["spring-boot:run"]
environment:
SPRING_PROFILES_ACTIVE: "development"
With JVM Arguments
apps:
- name: java-tuned
command: java
args:
- "-XX:+UseG1GC"
- "-XX:MaxGCPauseMillis=200"
- "-Xms1g"
- "-Xmx2g"
- "-jar"
- "target/myapp.jar"
Gradle Application
apps:
- name: gradle-app
command: java
args: ["-jar", "build/libs/myapp.jar"]
environment:
JAVA_OPTS: "-server"
Build Commands
# Maven build
mvn clean package
mvn clean package -DskipTests
# Gradle build
gradle clean build
gradle clean bootJar
# Create executable JAR
mvn clean package spring-boot:repackage
Required pom.xml (Maven)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<java.version>17</java.version>
<spring.boot.version>3.1.0</spring.boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Java Requirements
- Java 17 or higher
- Maven 3.6+ or Gradle 7+
- Spring Boot 3.x for web applications