## Building this repo (DEPRECATED)

1. Fetch sources

    git clone http://git.eclipse.org/gitroot/webtools/webtools.releng.aggregator.git

2a. Or, just check out the projects you care about, eg., if you want to contribute to servertools:

    git clone http://git.eclipse.org/gitroot/webtools-common/webtools.common.git
    git clone http://git.eclipse.org/c/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].

2b.*DEPRECATED* OR, you can fetch all the submodules recursively, then update to latest on that branch

    git submodule update --init --recursive
    for d in webtools.*; do echo $d; pushd $d; git pull origin master; popd; done

[start=3]
3. Give maven more memory, if needed

    set MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=128m" # windows users
      # or
    export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=128m" # linux users

4a. Build just the aggregate, using upstream CI builds. Should take under 20 mins.

    mvn clean install -V -B -PCI | tee log-aggregate.txt

To build against local changes in common or servertools:

    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

4b. *DEPRECATED* OR, build everything in this repo, including all the submodules, from scratch. May take over 2 hrs, and requires that the submodules are all up to date (step 2b).

    mvn clean install -f pom-build-everything.xml -V -B -Dmaven.test.skip=true -DskipWithIssues=false \
      -Dmaven.test.error.ignore=true -Dmaven.test.failure.ignore=true \
      -Dsurefire.timeout=1800 -P bree-libs -P integration -ff \
      | tee log-everything-build.txt

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)

---

Webtools has moved away from being a monolithic submodule-based uber-build (see 4b above) and toward a sequential series of builds (see 4a above).

This allows users to build individual projects w/o having to check out and build the entire stack. For example, to contribute a fix to webtools.common, you need only fetch that project and build it by itself; then if you want to contribute a fix to a downstream project, such as webtools.servertools, you can rely on the latest local (see -Dwebtools-* flags above) or the latest CI build of webtools.common.

This will allow development to be more agile, more reactive, and to move incrementally without the need for this project.

-- 2018-06-21 @nickboldt
