# Getting started

# Setting up development environment

This guideline helps developers to set up their development environment (SCM, IDE and building tools).

To set up development environment, see the followings:

  • JDK 17 is required.
  • Maven (opens new window) (3.6 or later) and Git are required to developers who want to contribute to eXo projects (mainly the company’s developers).
  • Any Java IDE tool can be used, such as Eclipse (opens new window), NetBean (opens new window).
  • Developers who write extensions are free to choose their favorite tools. Maven and GIT are recommended to get the best support from eXo Company and Community.

# Setting eXo Repository in Maven

To set up Maven, you can follow instructions in Apache's Maven in 5 minutes (opens new window) for quick start or see The Apache Maven definitive guide by Sonatype (opens new window) for a complete reference.

To use eXo APIs in your own projects, you have to add the eXo Platform Maven repository to your Maven settings.xml file.

# Importing eXo dependencies

You can, of course, add any eXo artifact as a dependency of your project. To avoid losing time looking for the good version of the artifacts you want to add as dependencies, eXo Platform provides an import dependency (opens new window) which defines all of the versions for you. You just need to give the version of eXo Platform you are using, without concerning about proper versions of all artifacts. To import the right eXo dependencies, you can refer to Dependency Management (opens new window) for more details.

  • Here is an example of the pom.xml file using implicit variables to indicate the artifact version:

    <?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/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>
            <groupId>com.mycompany</groupId>  
            <artifactId>my-project</artifactId>
            <version>1.0-SNAPSHOT</version>
            <packaging>war</packaging>
            <name>My project</name>
            <properties>
                <exoplatform.version>6.3.0</exoplatform.version>
            </properties>
            <dependencyManagement>
                <dependencies>
                <!-- Import versions from social project -->
                    <dependency>
                        <groupId>org.exoplatform.social</groupId>
                        <artifactId>social</artifactId>
                        <version>${exoplatform.version}</version>
                        <type>pom</type>
                        <scope>import</scope>
                    </dependency>
                </dependencies>
            </dependencyManagement>
        </project>
    

    In this file, the property exoplatform.version was declared under properties tag, indicating a specific platform version used for the project. After that, each dependency (under dependencyManagement tag) can reuse this parameter as an implicit variable ${exoplatform.version} without specifying its artifact version.

# Git and github.com

eXo projects use Git and github.com (opens new window) for managing source code. Thus, to contribute to the projects, you need to install Git and register a github.com (opens new window) account. See http://git-scm.com/docs (opens new window) to learn to use Git.

Many eXo projects are public at Meeds-io repositories (opens new window) and eXo Platform repositories (opens new window). To contribute to a project, you can follow steps described in Community member contribution guide (opens new window).

Note

To write your own extension, see this sample project (opens new window).