Announcement: You can find the guides for Commerce 7.5 and later on the new Elastic Path Documentation site. This Developer Center contains the guides for Commerce 6.13.0 through 7.4.1.Visit new site

This version of Elastic Path Commerce is no longer supported or maintained. To upgrade to the latest version, contact your Elastic Path representative.

Prepare Source Code

Prepare Source Code

Note: Role: Tech Lead
Dependent on By Documentation
Source control provisioning IT Operations Prepare Infrastructure
Maven repository setup Dev Ops Setup Maven Repository

Overview

This page describes how to prepare Elastic Path source code for use by your project. The diagram below shows the steps.

Starting Construction Prepare Source

Setup local build environment

You will need a working Java build environment on your local computer to prepare the source code.

  1. Setup your build environment as described in the following sections of the Core Commerce 7.0.1 Developer Guide:
    1. Java 8 (JDK 1.8 64-bit) setup
    2. Maven 3.3.9 setup
    3. Configure your System Environment Variables

Unzip source release packages

EP source is delivered in the following release package:

Release Package Contents
EP-Commerce-7.0.1.zip Core Commerce, Cortex
  • Unzip the contents of the release package into your project source folder.

Add projects to source control

  1. Add the following projects to source control: commerce-manager, commerce-engine, cortex-ep-integration, devops and extensions. (Note: the commerce-data project is included in the release package for reference and doesn't need to be added to source control.
    Tip:

    Previously the common practice had been to add each project to source control as a separate repository. Recently, a number of project teams have found it to be more effective to have all projects in a single repository as this simplifies commits and builds across multiple projects.

    The rational for using multiple repositories was that different upgrade strategies were needed for different projects. A newer upgrade strategy has emerged that works with a single repository and is being adopted as a standard practice.

    Tip:

    If you are using Git, line endings need to be converted to LF on input.

    The command to configure this is:
    git config --global core.autocrlf input
  2. Create a development branch for each repository. The branch name depends on your SCM and branch naming conventions.

Create a global build POM (optional)

If you have committed all source projects to a single repository (see previous section) you will probably want a POM at the repository root that acts as a build driver for all sub-projects so you can build the system with a single Maven command.

Here is a sample POM that works without requiring modifications to any of the sub-projects.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.elasticpath</groupId>
        <artifactId>grandparent</artifactId>
        <version>100</version>
    </parent>

    <groupId>com.elasticpath</groupId>
    <artifactId>commerce-build</artifactId>
    <packaging>pom</packaging>

    <name>Commerce Global Build POM</name>
    <version>0.0.0-SNAPSHOT</version>

    <!-- Reactor for development builds -->
    <modules>
        <module>commerce-engine</module>
        <module>cortex-ep-integration</module>
        <module>commerce-manager/cm-invoker</module>
        <module>extensions</module>
    </modules>
	
    <profiles>
        <!-- Profile to build deployment package at end of reactor -->
        <profile>
            <id>deployment-package</id>
                <modules>
                    <module>extensions/packager/ext-deployment-package</module>
                </modules>
        </profile>
		
        <!-- Profile to be activated in IDE so that CM plugins are recognized -->
        <profile>
            <id>ide-cm-plugins</id>
                 <modules>
                     <module>commerce-manager</module>
                     <module>extensions/cm</module>
                 </modules>
       </profile>		
    </profiles>

</project>

Configure the project settings.xml

The extensions project you just added to source control has a maven/settings.xml the project teams will use.

  1. Replace the <mirror> <url> at the the top of the file with the <Project> EP Repository Group URL documented during Setup Maven Repository.
  2. Make any changes required for your project environment.
  3. Commit the changes to source control.
  4. Copy the settings.xml to your ${user.home}/.m2 directory.

Reversion projects for development

EP release packages contain projects with RELEASE versions. Prior to starting development, the projects must be reversioned to SNAPSHOT versions using scripts provided in the devops project.

Tip:

On Windows, use either Git Bash, MinGW, or Cygwin to run the script.

To reversion projects for development:

  1. Make sure that:
    • All projects have a common parent folder.
    • Project folders have the same names as ones provided in source release packages.
    • The development branch is checked out for each source repository.
  2. Run the following script to reversion the commerce-manager, commerce-engine, devops and extensions projects.
    cd <projects-parent-folder>
             ./devops/scripts/set-ep-versions.sh 700.1.0-SNAPSHOT 0.0.0-SNAPSHOT commerce-engine extensions commerce-manager devops
    
  3. (Optional) Run the following script to reversion the cortex-ep-integration project. If you don't reversion this project, then the cortex-ep-integration release binaries will be retrived from the Elastic Path Nexus repository. You will need to reversion the project to a SNAPSHOT version if you wish to make changes to it.
    cd <projects-parent-folder>
          ./devops/scripts/set-cortex-ep-integration-version.sh 700.1.0-SNAPSHOT 0.0.0-SNAPSHOT cortex-ep-integration extensions
    

Apply patches

Once you have the release package built and running without issue, apply any patches available for Elastic Path Commerce. To apply a patch:

  1. Go to the Support Portal and log in with your username and password.
  2. Navigate to Patches.
  3. In the Patches page, under Browse All Patches, select the product and version.
  4. Download all patches for your version of Elastic Path Commerce.
  5. Read the patch's README.txt and follow the instructions in it to apply the patch.
Note: Due to a bug in Elastic Path Commerce 7.0.1, an additional step is required when building extensions.
  1. Navigate to extensions/cortex/resources-api/pom.xml.
  2. Change the <version> of ep-resource-base-api to ${cortex.version} as shown below:
    <dependency>
                         <groupId>com.elasticpath.rest.definitions</groupId>
                         <artifactId>ep-resource-base-api</artifactId>
                         <version>${cortex.version}</version>
                         </dependency>

You must make this change before building the Extensions project.

Deliverables

  • All EP projects added to source control
  • Projects have development branches with SNAPSHOT versions
  • extensions/maven/settings.xml is configured correctly for local development