name: spring-maven-modular version: 1.0.0 description: | Maven Modular Architecture with profiles for optional components. Enable/disable modules like Redis, Kafka, RabbitMQ dynamically.
triggers: - "maven" - "module" - "profile" - "dependency" - "optional"
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}