| 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: |
| |
| ``` |
| <?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. |
| |