AgentSkillsCN

spring-maven-modular

Maven模块化架构,带有可选组件的profile。 动态启用/禁用Redis、Kafka、RabbitMQ等模块。

SKILL.md
--- frontmatter
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

ModuleDefaultProperty
PostgreSQLONmodule.postgresql.enabled
RedisOFFmodule.redis.enabled
KafkaOFFmodule.kafka.enabled
RabbitMQOFFmodule.rabbitmq.enabled
OAuth2OFFmodule.oauth2.enabled

Usage

bash
# 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:

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

application.yml

yaml
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}