Contributing to ECF

Contributions to the Eclipse Communication Project (ECF) are most welcome. There are many ways to contribute, from entering high quality bug reports, to contributing code or documentation changes. For a complete guide, see the Eclipse Contributor guide [1] and read the Gerrit wiki page [2].

GitHub tracker and pull requests are currently not supported by our contribution process.

Building the SDK from Source

In order to build the ECF SDK on the command line, you need Apache Maven at least version 3.1.1.

To build against the default target platform (usually based on the newest release of Eclipse) invoke the following from the root directory of the git repository (i.e. the directory this file is in):

$ mvn clean verify

To build ECF against a specific target platform:

$ mvn clean verify -Dtarget-platform=neon

If the build is successful, a valid p2 repository will be generated in the "releng/org.eclipse.ecf.releng.repository/target/repository" directory. This may be used directly with Eclipse, for example, to install the newly built ECF SDK directly into your Eclipse installation.

To build the p2 repository containing packed and signed bundles, necessary for a release:

$ mvn clean verify -Ppack-and-sign

It is possible to install the ECF components into your local Maven repository for consumption by other Maven-based projects:

$ mvn clean install

Tests are disabled by default, so to enable the execution of the test suite during the build:

$ mvn clean verify -DskipTests=false

All the above options may be combined with one another.

Adding New Bundles/Features

OSGi bundles and Eclipse features can be thought of as Maven modules. So to add a new bundle or feature to the build can easily be done by adding a new module line to the master pom.xml, which is located at the root of this git repository. The new bundle or feature just needs its own pom.xml in its directory. In most cases, the new pom.xml file can be trivially simple, for example:

<?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.eclipse.ecf</groupId> <artifactId>ecf-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <relativePath>../../../</relativePath> </parent> <groupId>org.eclipse.ecf</groupId> <!-- Artifact ID must be same as bundle or feature ID --> <artifactId>org.eclipse.ecf.core.feature</artifactId> <!-- Version must be same as bundle or feature version, but suffixed with "-SNAPSHOT" instead of ".qualifier" --> <version>1.3.0-SNAPSHOT</version> <!-- Packaging must be "eclipse-feature", "eclipse-plugin" or "eclipse-test-plugin" --> <packaging>eclipse-feature</packaging> </project>

Bundle Version Maintenance

When a version number is increased, either in a bundle's "MANIFEST.MF" file or in a feature's "feature.xml" file, the version in the corresponding pom.xml file must also be changed to match. This can be done manually, or by invoking a Tycho utility to synchronise your pom.xml versions:

$ mvn -Dtycho.mode=maven org.eclipse.tycho:tycho-versions-plugin:update-pom

And the changes to the pom.xml files should be committed with the rest of the change.