# tvictor/tibco-bw-maven-plugin architecture

> Architecture diagram of the GitHub repository tvictor/tibco-bw-maven-plugin, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tvictor/tibco-bw-maven-plugin
- Repository: https://github.com/tvictor/tibco-bw-maven-plugin
- Video tour (about a minute): https://gitdiagram.com/tvictor/tibco-bw-maven-plugin/video

## Overview

This is a Maven plugin for validating and packaging TIBCO BusinessWorks projects, preparing deployment configuration, and deploying the resulting application to a remote TIBCO environment. The main install workflow validates the project, builds an EAR, exports deployment XML, then substitutes environment-specific values; deployment is a separate goal that transfers the artifacts and runs remote AppManage. The sampled code supports these links and the command/SSH helpers. Other goal implementations and the XSD schemas are present in the tree, but their runtime wiring is not established by the excerpts.

Main entry points: [`tibco-bw-plugin/src/main/java/com/slim/maven/InstallMojo.java`](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/InstallMojo.java) (Install goal), [`tibco-bw-plugin/src/main/java/com/slim/service/DeployService.java`](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/DeployService.java) (Remote deployment), [`tibco-bw-plugin/src/main/java/com/slim/utils/CommandUtils.java`](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/utils/CommandUtils.java) (Local command runner), [`tibco-bw-plugin/src/main/java/com/slim/service/GenerateService.java`](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/GenerateService.java) (Config export)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_goals["Maven goals"]
  node_install_mojo["Install goal<br/>[InstallMojo.java]"]
  node_validate_mojo["Validate goal<br/>[ValidateMojo.java]"]
  node_replace_mojo["Replace goal<br/>[ReplaceMojo.java]"]
  node_deploy_mojo["Deploy goal<br/>[DeployMojo.java]"]
end

subgraph group_prepare["Validation and packaging"]
  node_validate_service["Project validation"]
  node_build_service["EAR packaging<br/>[BuildService.java]"]
  node_generate_service["Config export"]
  node_replace_service["Config substitution"]
end

subgraph group_deploy["Remote deployment"]
  node_deploy_service["Remote deployment<br/>[DeployService.java]"]
end

subgraph group_support["Execution support"]
  node_command_utils["Local command runner<br/>[CommandUtils.java]"]
  node_ssh_utils["SSH client"]
  node_scp["SCP transfer<br/>[Scp.java]"]
end

node_maven(("Maven user"))
node_designer["Designer tools"]
node_appmanage["AppManage"]
node_remote_host["Remote host"]
node_tibco_runtime["TIBCO runtime"]
node_validation_log["Validation log"]
node_ear_artifact["EAR artifact"]
node_deploy_config["Deployment XML"]

node_maven -->|"invokes"| node_install_mojo
node_maven -->|"invokes"| node_validate_mojo
node_maven -->|"invokes"| node_replace_mojo
node_maven -->|"invokes"| node_deploy_mojo
node_install_mojo -->|"calls"| node_validate_service
node_install_mojo -->|"calls"| node_build_service
node_install_mojo -->|"calls"| node_generate_service
node_install_mojo -->|"calls"| node_replace_service
node_validate_mojo -->|"calls"| node_validate_service
node_replace_mojo -->|"calls"| node_replace_service
node_deploy_mojo -->|"calls"| node_deploy_service
node_validate_service -->|"runs command"| node_command_utils
node_build_service -->|"runs command"| node_command_utils
node_generate_service -->|"runs command"| node_command_utils
node_command_utils -->|"executes validation"| node_designer
node_command_utils -->|"executes export/build"| node_appmanage
node_validate_service -->|"writes"| node_validation_log
node_build_service -->|"builds"| node_ear_artifact
node_generate_service -->|"exports from"| node_ear_artifact
node_generate_service -->|"exports"| node_deploy_config
node_replace_service -->|"updates"| node_deploy_config
node_deploy_service -->|"uses"| node_ssh_utils
node_ssh_utils -->|"transfers via"| node_scp
node_ssh_utils -->|"runs shell commands"| node_remote_host
node_deploy_service -->|"uploads"| node_ear_artifact
node_deploy_service -->|"uploads"| node_deploy_config
node_deploy_service -->|"dispatches remotely"| node_appmanage
node_appmanage -->|"deploys to"| node_tibco_runtime

click node_install_mojo "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/InstallMojo.java"
click node_validate_mojo "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/ValidateMojo.java"
click node_replace_mojo "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/ReplaceMojo.java"
click node_deploy_mojo "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/DeployMojo.java"
click node_validate_service "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/ValidateService.java"
click node_build_service "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/BuildService.java"
click node_generate_service "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/GenerateService.java"
click node_replace_service "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/ReplaceService.java"
click node_deploy_service "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/DeployService.java"
click node_command_utils "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/utils/CommandUtils.java"
click node_ssh_utils "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/utils/SSHClientUtils.java"
click node_scp "https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/utils/Scp.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_install_mojo,node_validate_mojo,node_replace_mojo,node_deploy_mojo,node_maven toneBlue
class node_validate_service,node_build_service,node_generate_service,node_replace_service toneAmber
class node_deploy_service toneMint
class node_command_utils,node_ssh_utils,node_scp toneRose
class node_designer,node_appmanage,node_remote_host,node_tibco_runtime,node_validation_log,node_ear_artifact,node_deploy_config toneIndigo
```

## Components

### Maven goals

- [Install goal](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/InstallMojo.java): `tibco-bw-plugin/src/main/java/com/slim/maven/InstallMojo.java`
- [Validate goal](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/ValidateMojo.java): `tibco-bw-plugin/src/main/java/com/slim/maven/ValidateMojo.java`
- [Replace goal](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/ReplaceMojo.java): `tibco-bw-plugin/src/main/java/com/slim/maven/ReplaceMojo.java`
- [Deploy goal](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/maven/DeployMojo.java): `tibco-bw-plugin/src/main/java/com/slim/maven/DeployMojo.java`

### Validation and packaging

- [Project validation](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/ValidateService.java): `tibco-bw-plugin/src/main/java/com/slim/service/ValidateService.java`
- [EAR packaging](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/BuildService.java): `tibco-bw-plugin/src/main/java/com/slim/service/BuildService.java`
- [Config export](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/GenerateService.java): `tibco-bw-plugin/src/main/java/com/slim/service/GenerateService.java`
- [Config substitution](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/ReplaceService.java): `tibco-bw-plugin/src/main/java/com/slim/service/ReplaceService.java`

### Remote deployment

- [Remote deployment](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/service/DeployService.java): `tibco-bw-plugin/src/main/java/com/slim/service/DeployService.java`

### Execution support

- [Local command runner](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/utils/CommandUtils.java): `tibco-bw-plugin/src/main/java/com/slim/utils/CommandUtils.java`
- [SSH client](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/utils/SSHClientUtils.java): `tibco-bw-plugin/src/main/java/com/slim/utils/SSHClientUtils.java`
- [SCP transfer](https://github.com/tvictor/tibco-bw-maven-plugin/blob/master/tibco-bw-plugin/src/main/java/com/slim/utils/Scp.java): `tibco-bw-plugin/src/main/java/com/slim/utils/Scp.java`

### Other components

- **Maven user**
- **Designer tools**
- **AppManage**
- **Remote host**
- **TIBCO runtime**
- **Validation log**
- **EAR artifact**
- **Deployment XML**

## Connections

- Maven user → Install goal: invokes
- Maven user → Validate goal: invokes
- Maven user → Replace goal: invokes
- Maven user → Deploy goal: invokes
- Install goal → Project validation: calls
- Install goal → EAR packaging: calls
- Install goal → Config export: calls
- Install goal → Config substitution: calls
- Validate goal → Project validation: calls
- Replace goal → Config substitution: calls
- Deploy goal → Remote deployment: calls
- Project validation → Local command runner: runs command
- EAR packaging → Local command runner: runs command
- Config export → Local command runner: runs command
- Local command runner → Designer tools: executes validation
- Local command runner → AppManage: executes export/build
- Project validation → Validation log: writes
- EAR packaging → EAR artifact: builds
- Config export → EAR artifact: exports from
- Config export → Deployment XML: exports
- Config substitution → Deployment XML: updates
- Remote deployment → SSH client: uses
- SSH client → SCP transfer: transfers via
- SSH client → Remote host: runs shell commands
- Remote deployment → EAR artifact: uploads
- Remote deployment → Deployment XML: uploads
- Remote deployment → AppManage: dispatches remotely
- AppManage → TIBCO runtime: deploys to
