Swift publication module
Unbundled: Extension
Edition |
DX Core |
License |
|
Issues |
|
Maven site |
|
Latest |
1.0.0-beta-1 |
This module is in beta state. If you want to learn more, contact us at swift.publishing@magnolia-cms.com for information on availability and technology previews. |
Swift publication is a standalone enterprise module that can be used as a replacement for DX Core publishing. It stores versions in an external version store, such as S3. When an author publishes changes, the changes are sent to and stored in the external version store. Public instances then receive notifications to fetch the corresponding version from the version store.
REST communication is used between author and public instances, coordinating the information required for publishing. This allows instances to communicate asynchronously even if an instance is down or not reachable directly.
Module structure
The module consists of several submodules.
ArtifactID | Description |
---|---|
|
Provides an API to create and restore versions in an external version store. |
|
Includes the integration of the user interface to manage versions in a module. Provides a means to manage versions in a module, including implementations for version checks and restoration. |
|
Provides functionality to implement S3 version storage. |
|
Provides decorations for the Pages app, publishing dialogs, and i18n labels for the new UI buttons. |
|
Provides an API for external publishing, including services to process publication requests sent by authors, to represent problems that occur when a parent node is not yet published, and the ordering strategy during publication. |
|
Provides a REST publication client with the following.
|
|
Extends |
Installing with Maven
Bundled modules are automatically installed for you.
If the module is unbundled, add the following to your bundle including your project’s <dependencyManagement>
section and your webapp’s <dependencies>
section.
If the module is unbundled but the parent POM manages the version, add the following to your webapp’s <dependencies>
section.
Some steps below are required, and some parts are optional.
-
Add the following mandatory dependencies.
<dependency> <groupId>info.magnolia.swift.publication</groupId> <artifactId>magnolia-swift-versioning-api</artifactId> <version>1.0.0-beta-1</version> (1) </dependency>
1 Should you need to specify the module version, do it using <version>
.<dependency> <groupId>info.magnolia.swift.publication</groupId> <artifactId>magnolia-swift-versioning-ui</artifactId> <version>1.0.0-beta-1</version> (1) </dependency>
1 Should you need to specify the module version, do it using <version>
.<dependency> <groupId>info.magnolia.swift.publication</groupId> <artifactId>magnolia-swift-publication-api</artifactId> <version>1.0.0-beta-1</version> (1) </dependency>
1 Should you need to specify the module version, do it using <version>
.<dependency> <groupId>info.magnolia.swift.publication</groupId> <artifactId>magnolia-swift-publication-ui</artifactId> <version>1.0.0-beta-1</version> (1) </dependency>
1 Should you need to specify the module version, do it using <version>
. -
Add the S3 storage service dependency.
<dependency> <groupId>info.magnolia.swift.publication</groupId> <artifactId>magnolia-swift-versioning-s3</artifactId> <version>1.0.0-beta-1</version> (1) </dependency>
1 Should you need to specify the module version, do it using <version>
. -
Add REST communication between the author and the public instances dependency.
<dependency> <groupId>info.magnolia.swift.publication</groupId> <artifactId>magnolia-swift-publication-rest</artifactId> <version>1.0.0-beta-1</version> (1) </dependency>
1 Should you need to specify the module version, do it using <version>
. -
If required, add a dependency for the Personalization module.
<dependency> <groupId>info.magnolia.swift.publication</groupId> <artifactId>magnolia-swift-publication-personalization</artifactId> <version>1.0.0-beta-1</version> (1) </dependency>
1 It’s good practice to use the version
variable from the parent POM (see in the last step), hence{mgnlSwiftVersion}
would be here instead of1.0.0-beta-1
. -
Add the module version to the
properties
of the parent POM.Parent POM<properties> … <mgnlSwiftVersion>1.0.0-beta-1</mgnlSwiftVersion> … </properties>
Update dependency management in your project.