Extending the Platform
Extending the Platform
Developers have full access to the Core Commerce source code to customize and extend all aspects to meet their needs. However, by making modifications directly in the source code, managing customizations can become difficult as Core Commerce evolves over time. Once you upgrade to a new version of Core Commerce, your customized code may conflict with upgraded source code and cause problems with your platform. Therefore, we recommend following the binary-based development process, so your customizations live in projects that are separate from the out-of-the-box Elastic Path source code projects.
To work in a binary-based development environment, Elastic Path provides extension projects for your customizations to live in. Having your customizations in these extension projects makes it easier for you to upgrade your Elastic Path source code when the time comes.
We find binary-based development also:
- Reduces the time and cost of upgrades - You do not need to merge changes at the source code level.
- Accelerates development - You do not need to build the entire code base. You only need to build your customizations.
- Improves the ability to leverage Maven features - such as dependency management and plugins.
This page explains how the extension projects are set up for binary based development while the child pages dive in to the details of how you can make different kinds of extensions.
Extensions modules
There are multiple extension modules within the extensions project.
Each module extends a different component of Core Commerce. These modules depend on their equivalent out-of-the-box component. For example, the ext-core module depends on ep-core, and ext-search depends on ep-search. By depending on their equivalent out-of-the-box component, any customizations you put in these modules can import or inherit from that component's out-of-the-box classes, which enables you to change behavior.
Core extensions (core/ext-core)
The extension ext-core module depends on the out-of-the-box Core Engine library and contains the classes and resources that customize core functionality.
The other extension modules have a dependency on the extension core module, so any changes you make in extension core are visible to the other projects. Commerce Manager Client plugins also depend on the core library extension and can see changes made in the extension core.
For information on the structure of the extension core module, see Extension Core Module Structure.
Webapp extensions (cmserver, search, storefront)
Each web application has two components: a JAR and a WAR. When you build the extension web application module, both the JAR and WAR components combine into a single web application that can be deployed to a server.
For information on the structure of the extension webapp modules, see Extension Webapp Module Structure.
Other extensions
Type of extension | Module | Notes |
---|---|---|
Assets | assets | See Managing Assets. |
Database schema and catalog data | database/ext-data | See Modifying Schema and Catalog Data. |
CM Client dependencies | osgi-wrappers | The osgi-wrappers module packages the core and extension core dependencies for the Commerce Manager Client as an OSGi bundle. To use your customizations in the Commerce Manager Client, see Referencing new or modified core services with the Commerce Manager Client. |
Import/Export functionality | importexport/ext-importexport | Extends ep-importexport |
Data Sync Tool functionality | sync/ext-sync | Extends ep-sync |
Data Population functionality | data-population/ext-data-population-core | Extends ep-data-population-core. See Data Population - Extensions Environment. |