# alfresco/alfresco-sdk architecture

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

- Interactive diagram: https://gitdiagram.com/alfresco/alfresco-sdk
- Repository: https://github.com/alfresco/alfresco-sdk

## Overview

Alfresco SDK is a Maven-based toolkit for creating and developing Alfresco extensions. The principal workflow is for a developer to generate a project from an archetype, implement a platform or Share extension, then use SDK Maven goals to run or install it; refresh goals support rapid iteration, and integration-test support fits the documented TDD workflow. The sampled source confirms AMP installation, run configuration, AMP unpacking, and refresh requests. Other goal capabilities are represented from their filenames and README claims; their internal wiring was not sampled.

Main entry points: [`archetypes/alfresco-allinone-archetype`](https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-allinone-archetype) (All-in-one archetype), [`archetypes/alfresco-platform-jar-archetype`](https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-platform-jar-archetype) (Platform JAR archetype), [`plugins/alfresco-maven-plugin`](https://github.com/alfresco/alfresco-sdk/tree/master/plugins/alfresco-maven-plugin) (Alfresco Maven plugin), [`plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/AbstractRunMojo.java`](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/AbstractRunMojo.java) (Run configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_project_templates["Project templates"]
  node_aio_archetype["All-in-one archetype"]
  node_platform_archetype["Platform JAR archetype"]
  node_share_archetype["Share JAR archetype"]
end

subgraph group_extension_examples["Extension examples"]
  node_platform_sample["Platform samples"]
  node_aio_platform_sample["All-in-one platform samples"]
end

subgraph group_maven_runtime["Maven runtime"]
  node_plugin["Alfresco Maven plugin"]
  node_run_mojo["Run goal<br/>[RunMojo.java]"]
  node_run_config["Run configuration"]
  node_module_dependency["Module dependencies"]
  node_install_mojo["AMP install goal<br/>[InstallMojo.java]"]
  node_amp_unpacker["AMP unpacker<br/>[AmpUnArchiver.java]"]
  node_amp_archiver["AMP archiver<br/>[AmpArchiver.java]"]
end

subgraph group_development_feedback["Development feedback"]
  node_refresh_mojo["Refresh goals"]
  node_refresh_repo["Repository refresh<br/>[RefreshMojo.java]"]
  node_refresh_share["Share refresh"]
  node_integration_goal["Integration tests"]
end

node_developer(("Extension developer"))
node_extension_project["Generated extension"]
node_alfresco["Alfresco webapps"]

node_developer -->|"generates from"| node_aio_archetype
node_developer -->|"generates from"| node_platform_archetype
node_developer -->|"generates from"| node_share_archetype
node_aio_archetype -->|"creates project"| node_extension_project
node_platform_archetype -->|"creates project"| node_extension_project
node_share_archetype -->|"creates project"| node_extension_project
node_platform_archetype -->|"templates with"| node_platform_sample
node_aio_archetype -->|"templates with"| node_aio_platform_sample
node_developer -->|"invokes goals"| node_plugin
node_plugin -->|"provides goal"| node_run_mojo
node_run_mojo -->|"uses configuration"| node_run_config
node_run_config -->|"configures modules"| node_module_dependency
node_run_config -->|"invokes install"| node_install_mojo
node_install_mojo -->|"installs AMP into"| node_alfresco
node_amp_unpacker -->|"installs AMP into"| node_alfresco
node_developer -->|"packages AMP"| node_amp_archiver
node_plugin -->|"provides goal"| node_refresh_mojo
node_refresh_mojo -->|"supports repository refresh"| node_refresh_repo
node_refresh_mojo -->|"supports Share refresh"| node_refresh_share
node_refresh_repo -->|"posts refresh request"| node_alfresco
node_refresh_share -->|"posts refresh request"| node_alfresco
node_developer -->|"runs integration tests"| node_integration_goal

click node_aio_archetype "https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-allinone-archetype"
click node_platform_archetype "https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-platform-jar-archetype"
click node_share_archetype "https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-share-jar-archetype"
click node_platform_sample "https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/src/main/java/platformsample"
click node_aio_platform_sample "https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/__rootArtifactId__-platform/src/main/java/platformsample"
click node_plugin "https://github.com/alfresco/alfresco-sdk/tree/master/plugins/alfresco-maven-plugin"
click node_run_mojo "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java"
click node_run_config "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/AbstractRunMojo.java"
click node_module_dependency "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/config/ModuleDependency.java"
click node_install_mojo "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/InstallMojo.java"
click node_amp_unpacker "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/archiver/AmpUnArchiver.java"
click node_amp_archiver "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/archiver/AmpArchiver.java"
click node_refresh_mojo "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/AbstractRefreshWebappMojo.java"
click node_refresh_repo "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RefreshMojo.java"
click node_refresh_share "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RefreshShareWebappMojo.java"
click node_integration_goal "https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/IntegrationTestMojo.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_aio_archetype,node_platform_archetype,node_share_archetype toneBlue
class node_platform_sample,node_aio_platform_sample toneAmber
class node_plugin,node_run_mojo,node_run_config,node_module_dependency,node_install_mojo,node_amp_unpacker,node_amp_archiver toneMint
class node_refresh_mojo,node_refresh_repo,node_refresh_share,node_integration_goal toneRose
class node_developer,node_extension_project,node_alfresco toneIndigo
```

## Components

### Project templates

- [All-in-one archetype](https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-allinone-archetype): `archetypes/alfresco-allinone-archetype`
- [Platform JAR archetype](https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-platform-jar-archetype): `archetypes/alfresco-platform-jar-archetype`
- [Share JAR archetype](https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-share-jar-archetype): `archetypes/alfresco-share-jar-archetype`

### Extension examples

- [Platform samples](https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/src/main/java/platformsample): `archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/src/main/java/platformsample`
- [All-in-one platform samples](https://github.com/alfresco/alfresco-sdk/tree/master/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/__rootArtifactId__-platform/src/main/java/platformsample): `archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/__rootArtifactId__-platform/src/main/java/platformsample`

### Maven runtime

- [Alfresco Maven plugin](https://github.com/alfresco/alfresco-sdk/tree/master/plugins/alfresco-maven-plugin): `plugins/alfresco-maven-plugin`
- [Run goal](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java`
- [Run configuration](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/AbstractRunMojo.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/AbstractRunMojo.java`
- [Module dependencies](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/config/ModuleDependency.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/config/ModuleDependency.java`
- [AMP install goal](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/InstallMojo.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/InstallMojo.java`
- [AMP unpacker](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/archiver/AmpUnArchiver.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/archiver/AmpUnArchiver.java`
- [AMP archiver](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/archiver/AmpArchiver.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/archiver/AmpArchiver.java`

### Development feedback

- [Refresh goals](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/AbstractRefreshWebappMojo.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/AbstractRefreshWebappMojo.java`
- [Repository refresh](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RefreshMojo.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RefreshMojo.java`
- [Share refresh](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RefreshShareWebappMojo.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RefreshShareWebappMojo.java`
- [Integration tests](https://github.com/alfresco/alfresco-sdk/blob/master/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/IntegrationTestMojo.java): `plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/IntegrationTestMojo.java`

### Other components

- **Extension developer**
- **Generated extension**
- **Alfresco webapps**

## Connections

- Extension developer → All-in-one archetype: generates from
- Extension developer → Platform JAR archetype: generates from
- Extension developer → Share JAR archetype: generates from
- All-in-one archetype → Generated extension: creates project
- Platform JAR archetype → Generated extension: creates project
- Share JAR archetype → Generated extension: creates project
- Platform JAR archetype → Platform samples: templates with
- All-in-one archetype → All-in-one platform samples: templates with
- Extension developer → Alfresco Maven plugin: invokes goals
- Alfresco Maven plugin → Run goal: provides goal
- Run goal → Run configuration: uses configuration
- Run configuration → Module dependencies: configures modules
- Run configuration → AMP install goal: invokes install
- AMP install goal → Alfresco webapps: installs AMP into
- AMP unpacker → Alfresco webapps: installs AMP into
- Extension developer → AMP archiver: packages AMP
- Alfresco Maven plugin → Refresh goals: provides goal
- Refresh goals → Repository refresh: supports repository refresh
- Refresh goals → Share refresh: supports Share refresh
- Repository refresh → Alfresco webapps: posts refresh request
- Share refresh → Alfresco webapps: posts refresh request
- Extension developer → Integration tests: runs integration tests
