## Building this repo

1. fetch sources for this project, and other webtools projects you care about. For example, to contribute a fix to webtools.servertools:

    git clone https://git.eclipse.org/r/webtools/webtools.releng.aggregator.git

    git clone https://git.eclipse.org/r/webtools-common/webtools.common.git
    git clone https://git.eclipse.org/r/servertools/webtools.servertools.git

NOTE: See the link:https://wiki.eclipse.org/WTP_Gerrit_Access#Clone_a_repository_for_development[complete list of projects here].

2. give maven more memory, if needed

    set MAVEN_OPTS="-Xmx1024m" # windows users
      # or
    export MAVEN_OPTS="-Xmx1024m" # linux/macos users

3. Build local changes to common and/or servertools:

    cd webtools.common
    mvn clean install
    cd ..

    cd webtools.servertools
    mvn clean install \
      -Dwebtools-common-site=file:///path/to/where/you/build/locally/webtools.common/site/target/repository/
    cd ..

4. Aggregate local changes in common, servertools, and any other locally built webtools projects:

    cd webtools.releng.aggregator
    mvn clean install -V -B -PCI \
      -Dwebtools-common-site=file:///path/to/where/you/build/locally/webtools.common/site/target/repository/ \
      -Dwebtools-servertools-site=file:///path/to/where/you/build/locally/webtools.servertools/site/target/repository/ \
      -Dwebtools-servertools-integration-site=file:///path/to/where/you/build/locally/webtools.servertools/site-integration/target/repository/ \
      | tee log-aggregate-local-changes-to-common-and-servertools.txt
    cd ..

That's it! If you have more local changes to aggregate, use more `-Dwebtools-\*-site` flags to reference your local changes.

Some link:http://git.eclipse.org/c/webtools/webtools.releng.aggregator.git/tree/wtp-parent/pom.xml#n70[other flags] you can use:

    -P CI # build using upstream CI jobs' repos instead of having to build all the projects in the same reactor
    -P bree-libs # build using strict adherence to Bundle-RequireExecutionEnvironment (BREE) rules. Requires a ~/.m2/toolchains.xml file.

    -Dplatform-repo.url=http://download.eclipse.org/eclipse/updates/4.8-I-builds/

    -Dwebtools.buildSite=http://download.eclipse.org/webtools/downloads/drops/R3.10.0/I-3.10.0-20171004000115/
    -Dwebtools.buildSite=http://build.eclipse.org/webtools/committers/wtp-R3.10.0-I/20171211000140/I-3.10.0-20171211000140/

    -Dwebtools-common-site=file:///path/to/where/you/build/locally/webtools.common/site/target/repository/
    -Dwebtools-servertools-site=file:///path/to/where/you/build/locally/webtools.servertools/site/target/repository/
    -Dwebtools-servertools-integration-site=file:///path/to/where/you/build/locally/webtools.servertools/site-integration/target/repository/
    -Dwebtools-jeetools-site=file:///path/to/where/you/build/locally/webtools.javaee/site/target/repository/
    ...

Note the above profiles:

* bree-libs profile may not work if you don't have old JDKs (eg., JDK5) installed locally
* integration profile is needed to build the SDK & integration features (cross-repo dependencies) (DEPRECATED)

---

As of Webtools 3.10, this build requires is a series of individual CI builds, followed by a simple aggregation. The old approach with one large monolithic build and git submodules, is link:README-deprecated.adoc[documented here].

## Building the upstream projects

To build all the individual projects in order, see this link:https://ci.eclipse.org/webtools/job/WTP-Pipeline_master/[pipeline] or link:pipeline/Jenkinsfile[Jenkinsfile] which lists the correct sequence of dependencies.

Here's a list of the link:https://wiki.eclipse.org/WTP_Gerrit_Access#Clone_a_repository_for_development[git projects] and where to get them.

-- 2018-07-09 @nickboldt
