Maven Architecture

Maven Groups

Syndesis uses Maven as build tool. Maven groups are used to separate the various Syndesis parts.

In details Syndesis consists of the following groups:

GroupPackageDocker ImageDescription
commonio.syndesis.commonSyndesis shared common module
connectorio.syndesis.connectorSupported connectors
dvio.syndesis.dvTool that manages dynamic VDBs for the Teiid OpenShift Deployment.
extensionio.syndesis.extensionLibrary and API for developing Syndesis extensions
integrationio.syndesis.integrationLibrary used in the the integration runtimes
metaio.syndesis.metasyndesis/syndesis-metaService for connector meta-data and verification of connections
s2iio.syndesis.s2isyndesis/syndesis-s2iS2I base image for building integrations
serverio.syndesis.serversyndesis/syndesis-serverBackend for storing integrations and REST endpoint to interact with ui
uiio.syndesis.uisyndesis/syndesis-uiUser interface SPA, talking to the server REST backend endpoint
testio.syndesis.testSystem tests for testing the whole applications
ui-reactUser Interface based on ReactJS

Figure 1. Group dependencies

Figure 1. Group dependencies

Naming Conventions

The following conventions are used for naming directories, modules and Java packages.

  • Each directory directly below app/ is specific for a certain Maven group. E.g. the directory app/extension is reserved for all Maven modules belonging to the Maven group io.syndesis.extension. The directory name is reflected as the last name part.
  • All names (groups, modules, package) are using the singular form. E.g. its a io.syndesis.connector, not io.syndesis.connectors.
  • Each Maven module is prefixed with the last part of the group name. E.g. the directory app/integration/api holds a Maven module for the the Maven group io.syndesis.integration, and the module’s artefactId is integration-api.
  • A module’s directory name is directly reflected as the last part of the Maven module name. If the Maven module name consists of multiple parts (e.g. artifact integration-project-generator), then the corresponding directory is also a concatenated word (like in integration/project-generator). Multipart names should be the exception, though.
  • There should be only one level deep modules, so each Maven group directory holds all Maven modules flat.
  • Each module has a single top-level package, reflecting the Maven module name. E.g. for the Maven module common-util in group io.syndesis.common has a single top-level package io.syndesis.common.util This top-level package should reflect the artefact name, with dashes replaced by dots.

Still Having Trouble?

Ask on Gitter