Skip to content

Module Dependency Contract

Feature: Multi-Module Project Split

Dependency Graph

┌─────────────────────────────────────────────────┐
│           camel-integration-capability-parent    │
│                    (pom aggregator)              │
└─────────────────────────────────────────────────┘

         ┌──────────────┴──────────────┐
         ▼                             ▼
┌─────────────────────┐    ┌─────────────────────┐
│ camel-integration-  │    │ runtimes            │
│ capability-common   │    │ (pom aggregator)    │
│     (jar)           │    └─────────────────────┘
└─────────────────────┘              │
         ▲                ┌──────────┴──────────┐
         │                ▼                     ▼
         │    ┌─────────────────────┐  ┌─────────────────────┐
         │    │ camel-integration-  │  │ camel-integration-  │
         └────┤ capability-plugin   │  │ capability-main     │
              │     (jar)           │  │     (jar)           │
              └─────────────────────┘  └─────────────────────┘

Common Module Exports

Artifact: ai.wanaku:camel-integration-capability-common

Public Packages

PackagePurposeConsumers
ai.wanaku.capability.camelCore manager classPlugin, Main
ai.wanaku.capability.camel.modelData modelsPlugin, Main
ai.wanaku.capability.camel.utilUtilitiesPlugin, Main
ai.wanaku.capability.camel.grpcgRPC servicesPlugin, Main
ai.wanaku.capability.camel.initInitializersPlugin, Main
ai.wanaku.capability.camel.downloaderResource downloadPlugin, Main
ai.wanaku.capability.camel.spec.rulesRules processingPlugin, Main

Key Classes for Consumers

java
// Core management
ai.wanaku.capability.camel.WanakuCamelManager

// gRPC services
ai.wanaku.capability.camel.grpc.CamelTool
ai.wanaku.capability.camel.grpc.CamelResource
ai.wanaku.capability.camel.grpc.ProvisionBase

// Initialization
ai.wanaku.capability.camel.init.InitializerFactory
ai.wanaku.capability.camel.init.Initializer

// Resource handling
ai.wanaku.capability.camel.downloader.DownloaderFactory
ai.wanaku.capability.camel.downloader.ResourceDownloaderCallback

// Configuration
ai.wanaku.capability.camel.util.McpRulesManager

Plugin Module Exports

Artifact: ai.wanaku:camel-integration-capability-plugin

Public Packages

PackagePurposeConsumers
ai.wanaku.capability.camel.pluginPlugin implementationCamel runtime (via SPI)

SPI Registration

File: META-INF/services/org.apache.camel.spi.ContextServicePlugin

Main Module Exports

Artifact: ai.wanaku:camel-integration-capability-main

Public Packages

None - this is an application module, not a library.

Executable Artifact

camel-integration-capability-main-X.Y.Z-jar-with-dependencies.jar

Entry point: ai.wanaku.capability.camel.CamelToolMain

Dependency Rules

Allowed

  • Common → External libraries only
  • Plugin → Common
  • Main → Common

Forbidden

  • Common → Plugin (would create cycle)
  • Common → Main (would create cycle)
  • Plugin → Main (parallel modules, no dependency)
  • Main → Plugin (parallel modules, no dependency)

Version Synchronization

All modules share the same version number, managed in parent POM:

xml
<groupId>ai.wanaku</groupId>
<artifactId>camel-integration-capability-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>

Child modules inherit version from parent:

xml
<parent>
    <groupId>ai.wanaku</groupId>
    <artifactId>camel-integration-capability-parent</artifactId>
    <version>0.1.0-SNAPSHOT</version>
</parent>
<artifactId>camel-integration-capability-common</artifactId>
<!-- version inherited -->

Transitive Dependencies

Common Module Brings

  • Camel Core libraries
  • Wanaku SDK libraries
  • Jackson for YAML/JSON
  • JGit for Git operations
  • gRPC runtime

Plugin Module Brings

  • Common module (transitive)
  • Camel API (for ContextServicePlugin)

Main Module Brings

  • Common module (transitive)
  • Picocli for CLI
  • Log4j2 for logging