# 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.
Open the
settings.xml
file in$M2_HOME/conf/
or${user.home}/.m2/
, depending on your Maven installation. Refer to Maven settings guideline (opens new window) for more details.Add a repository to this file, as stated in Maven's Guide to using Multiple Repositories (opens new window).
Replace the repository URL in your settings with http://repository.exoplatform.org/public (opens new window).
An example of
settings.xml
:<settings> ... <profiles> ... <profile> <id>myprofile</id> <repositories> <repository> <id>eXo-pub-repo</id> <name>eXoPlatform public repo</name> <url>https://repository.exoplatform.org/public</url> </repository> </repositories> </profile> ... </profiles> <activeProfiles> <activeProfile>myprofile</activeProfile> </activeProfiles> ... </settings>
# 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 underproperties
tag, indicating a specific platform version used for the project. After that, each dependency (underdependencyManagement
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).