Back to skills
extension
Category: Development & EngineeringNo API key required

spring-maven-modular

Maven Modular Architecture with profiles for optional components. Enable/disable modules like Redis, Kafka, RabbitMQ dynamically.

personAuthor: jakexiaohubgithub

Maven Modular Architecture

Module Flags

| Module | Default | Property | |--------|---------|----------| | PostgreSQL | ON | module.postgresql.enabled | | Redis | OFF | module.redis.enabled | | Kafka | OFF | module.kafka.enabled | | RabbitMQ | OFF | module.rabbitmq.enabled | | OAuth2 | OFF | module.oauth2.enabled |

Usage

# Minimal (PostgreSQL only)
mvn clean install -Pminimal

# With Redis
mvn clean install -Dmodule.redis.enabled=true

# With Kafka
mvn clean install -Dmodule.kafka.enabled=true

# Full stack
mvn clean install -Pfull-stack

# Custom combination
mvn clean install -Dmodule.redis.enabled=true -Dmodule.kafka.enabled=true

Profiles

Minimal Profile

  • PostgreSQL (always)
  • JWT Authentication

Full Stack Profile

  • PostgreSQL
  • Redis
  • Kafka
  • OAuth2

Spring Configuration

Use @ConditionalOnModuleEnabled to conditionally load beans:

@Configuration
@ConditionalOnModuleEnabled("redis")
public class RedisConfig {
    // Only loaded when modules.redis.enabled=true
}

application.yml

modules:
  postgresql:
    enabled: true
  redis:
    enabled: ${MODULE_REDIS_ENABLED:false}
  kafka:
    enabled: ${MODULE_KAFKA_ENABLED:false}
  rabbitmq:
    enabled: ${MODULE_RABBITMQ_ENABLED:false}
  oauth2:
    enabled: ${MODULE_OAUTH2_ENABLED:false}