Configuration

Configuration

JUDO CLI uses a flexible configuration system based on properties files to manage different environments and deployment scenarios.

Configuration Files

Primary Configuration Files

judo.properties

The main configuration file that defines default settings for your JUDO application.

# Application Information
app.name=my-judo-app
app.schema=myapp
app.version=1.0.0

# Database Configuration
database.type=postgresql
database.host=localhost
database.port=5432
database.name=myapp_db
database.username=judo
database.password=judo

# Runtime Configuration
runtime.mode=karaf
karaf.port=8080
karaf.debug.port=8000

# Service Ports
keycloak.port=8180
postgres.port=5432

# Build Configuration
maven.profile=default
build.skip.tests=false

Environment-Specific Files

Create environment-specific configuration files that override the defaults:

judo-version.properties

Defines version constraints for JUDO dependencies:

# JUDO Framework versions
judo.version=1.0.0
judo.runtime.version=1.0.0
judo.frontend.version=1.0.0

# Dependency versions
karaf.version=4.4.3
postgresql.version=14
keycloak.version=21.1.1

Configuration Properties

Application Settings

PropertyDescriptionDefaultExample
app.nameApplication name-my-judo-app
app.schemaDatabase schema name-myapp
app.versionApplication version1.0.02.1.0
app.descriptionApplication description-My JUDO Application

Database Configuration

PropertyDescriptionDefaultExample
database.typeDatabase typepostgresqlpostgresql, hsqldb
database.hostDatabase hostnamelocalhostdb.example.com
database.portDatabase port54325432
database.nameDatabase name{app.name}_dbmyapp_db
database.usernameDatabase usernamejudomyuser
database.passwordDatabase passwordjudosecretpass
database.schemaDatabase schema{app.schema}myapp

Runtime Configuration

PropertyDescriptionDefaultExample
runtime.modeRuntime modekarafkaraf, compose
karaf.portKaraf HTTP port80809090
karaf.debug.portKaraf debug port80009000
karaf.ssh.portKaraf SSH port81019101

Service Ports

PropertyDescriptionDefaultExample
keycloak.portKeycloak port81809180
postgres.portPostgreSQL port54325433
pgadmin.portPgAdmin port80808081

Build Configuration

PropertyDescriptionDefaultExample
maven.profileMaven build profiledefaultdevelopment, production
build.skip.testsSkip tests during buildfalsetrue, false
build.parallelEnable parallel buildstruetrue, false
frontend.buildBuild frontendtruetrue, false

Environment Profiles

Karaf Mode (Default)

Local development with Karaf runtime and Docker services.

# karaf.properties (or defaults in judo.properties)
runtime.mode=karaf
karaf.port=8080
database.type=postgresql
postgres.port=5432
keycloak.port=8180

Compose Development

Full Docker Compose environment for development.

# compose-dev.properties
runtime.mode=compose
app.port=8080
database.type=postgresql
postgres.port=5432
keycloak.port=8180

# Docker-specific settings
docker.network=judo-dev
docker.compose.file=docker-compose-dev.yml

Production Configuration

Production-ready settings with security considerations.

# compose-prod.properties
runtime.mode=compose
app.port=80
database.type=postgresql
database.host=prod-db.example.com
database.port=5432

# Security settings
keycloak.realm=production
auth.enabled=true

# Performance settings
jvm.memory.max=2g
database.pool.size=20

Using Environment Profiles

Command Line

Specify environment using the -e flag:

# Use compose-dev environment
judo -e compose-dev build start

# Use production environment  
judo -e production status

# Multiple environments
judo -e local build
judo -e compose-dev start

Environment Variables

Set default environment via environment variable:

export JUDO_ENV=compose-dev
judo build start

Profile Selection Priority

  1. Command line -e flag
  2. JUDO_ENV environment variable
  3. judo.properties (default)

Configuration Validation

JUDO CLI validates configuration at startup:

# Check configuration
judo config validate

# Show resolved configuration
judo config show

# Test specific environment
judo -e compose-dev config validate

Advanced Configuration

Property Interpolation

Use variables within configuration files:

# Base configuration
app.name=myapp
database.name=${app.name}_db
database.schema=${app.name}
keycloak.realm=${app.name}_realm

Environment Variable Override

Override any property using environment variables:

# Override database host
export JUDO_DATABASE_HOST=remote-db.example.com

# Override application port
export JUDO_APP_PORT=9090

judo start

Convention: JUDO_ + property path in uppercase with dots replaced by underscores.

Conditional Configuration

Include configuration based on conditions:

# Include production security only in prod environment
[@prod]
security.enabled=true
auth.strict=true

[@dev]
debug.enabled=true
logging.level=DEBUG

Configuration Examples

Local Development

# judo.properties
app.name=myapp
runtime.mode=karaf
database.type=postgresql
build.skip.tests=true

CI/CD Pipeline

# ci.properties  
app.name=myapp
runtime.mode=compose
database.type=postgresql
build.skip.tests=false
build.parallel=true

Production Deployment

# production.properties
app.name=myapp
runtime.mode=compose
database.type=postgresql
database.host=prod-db.internal
security.enabled=true
monitoring.enabled=true

Troubleshooting Configuration

Common Issues

Port conflicts:

# Check what's using a port
lsof -i :8080

# Change port in configuration
echo "karaf.port=9090" >> judo.properties

Database connection issues:

# Test database connection
judo db test

# Check database configuration
judo config get database.*

Environment not loading:

# Verify environment file exists
ls -la *.properties

# Check configuration resolution
judo -e myenv config show

See Also