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. [1]: http://eclipse.org/contribute/ [2]: http://wiki.eclipse.org/Gerrit 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: ``` 4.0.0 org.eclipse.ecf ecf-parent 1.0.0-SNAPSHOT ../../../ org.eclipse.ecf org.eclipse.ecf.core.feature 1.3.0-SNAPSHOT eclipse-feature ``` 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.