Ignite Fabric Maven Build Instructions
======================================
Without LGPL dependencies (default):
  mvn clean package -DskipTests

Without LGPL dependencies and Scala 2.10:
  mvn clean package -DskipTests -Dscala-2.10

With LGPL dependencies:
  mvn clean package -DskipTests -Prelease,lgpl -Dignite.edition=fabric-lgpl

With LGPL dependencies and Scala 2.10:
  mvn clean package -DskipTests -Prelease,lgpl -Dignite.edition=fabric-lgpl -Dscala-2.10

With Apache Ignite.NET:
  Build Apache Ignite.NET as described at modules/platforms/dotnet/DEVNOTES.txt.

  Then build Ignite Fabric with Apache Ignite.NET:
  mvn clean package -DskipTests -DclientDocs

  Note that 'doxygen' should be installed before running this command.

Look for apache-ignite-fabric-<version>-bin.zip in ./target/bin directory.

NOTE: JDK version should be 1.7.0-* or >= 1.8.0-u40.
      Schema Import module use JavaFX, under OpenJDK may be compiled and run only on OpenJDK 8 with installed OpenJFX.

Ignite Hadoop Accelerator Maven Build Instructions
============================================
mvn clean package -DskipTests -Dignite.edition=hadoop [-Dhadoop.version=X.X.X] [-Dspark.version=x.y.z]

Use 'hadoop.version' parameter to build Ignite against a specific Hadoop version.
Use 'spark.version' parameter to build ignite-spark module for a specific Spark version.

Look for apache-ignite-hadoop-<version>-bin.zip in ./target/bin directory. Resulting binary
assembly will also include integration module for Apache Spark.

NOTE: JDK version should be 1.7.0-* or >= 1.8.0-u40.

Ignite C++ Build Instructions
======================================
  Instructions can be found at modules/platforms/cpp/DEVNOTES.txt.

Ignite Release Instructions
===========================
Use your people.apache.org/keys/committer/<username>.asc key to generate KEYS file.
Download https://dist.apache.org/repos/dist/release/ignite/KEYS and append you key using commands:

gpg --list-sigs <keyname> >> KEYS
gpg --armor --export <keyname> >> KEYS

Upload modified KEYS file.

Specify gpg profile at settings.xml. It will be used to sign sources and artifacts.

<profile>
   <id>gpg</id>
   <properties>
      <gpg.keyname>keyname</gpg.keyname>
      <gpg.passphrase>passphrase</gpg.passphrase>
   </properties>
</profile>

Ensure you have RELEASE (not SNAPSHOT) version at Ignite poms.
Maven release plugin release:prepare goal can be used to make release tag.

Deploy Ignite release candidate to maven repository and dev-svn, make tag:

   Following command deploys Ignite to maven repository, prepares sources and fabric edition binaries.
      mvn deploy -P apache-release,gpg,release,scala,lgpl,deploy-ignite-site -Dignite.edition=fabric -DskipTests -B

   In case you want to release both fabric and hadoop editions you have to build hadoop edition first using command
      mvn package -P apache-release,gpg,release,scala,lgpl -Dignite.edition=hadoop -DskipTests -B
   save /target/bin/*.zip, make "mvn clean" and restore saved files before deploying fabric.

   Binary artifact name can be changed by setting additional property -Dignite.zip.pattern. Binary artifact will be
   created inside /target/bin folder when release profile is used.

   Sources artifact name is fixed. Sources artifact will be created inside /target dir when apache-release profile is used.

   Nexus staging (repository.apache.org) should be closed with appropriate comment contains release version and
   release candidate number, for example "Apache Ignite 1.0.0-rc7", when mvn deploy finished.

   Checkout https://dist.apache.org/repos/dist/dev/ignite svn. Create release candidate folder with name
   equals to release version with "-rc*" ending, for example "1.0.0-rc7", at svn root.
   Copy /target/site folder content to svn/ignite/<rc-version> folder and commit with appropriate comment.

   Make appropriate git tag for release candidate, for example "ignite-X.Y.Z-rc1".

Start vote based on https://dist.apache.org/repos/dist/dev/ignite/<rc-version>.

Release nexus staging, move binaries and sources from https://dist.apache.org/repos/dist/dev/ignite/<rc-version>
to https://dist.apache.org/repos/dist/release/ignite/<version> when version accepted.
Use svn mv ^/dev/ignite/<rc-version> ^/release/ignite/<version> command for proper moving.

Make appropriate git tag for released version, for example "ignite-X.Y.Z".

Send an email to dev@ignite.apache.org contains release svn url.


JCache TCK compliance
======================
To test compliance with JCache TCK use:

mvn test -P-release,jcache-tck -pl :ignite-core -am

Ignite Mesos Maven Build Instructions
============================================
cd to ./modules/mesos

mvn clean package

Look for ignite-mesos-<version>.jar in ./target directory.

Ignite Yarn Maven Build Instructions
============================================
cd to ./modules/yarn

mvn clean package

Look for ignite-yarn-<version>.jar in ./target directory.

Run tests
==========
To run tests locally use:

mvn clean test -U -Plgpl,examples,-clean-libs,-release -Dmaven.test.failure.ignore=true -DfailIfNoTests=false -Dtest=%TEST_PATTERN%

For example, %TEST_PATTERN% can be 'org.apache.ignite.testsuites.IgniteBasicTestSuite' or 'GridCacheLocalAtomicFullApiSelfTest#testGet'

Apache RAT Instructions
=======================
To check license headers use:

mvn clean validate -Pcheck-licenses

For more information (e.g. exclude list) see "check-licenses" profile in "parent/pom.xml".


Useful Release Commands
========================
ZIP: zip -r9 apache-ignite-X.X.X-src.zip apache-ignite-X.X.X-src
GPG: gpg --armor --output apache-ignite-X.X.X-src.zip.asc --detach-sig apache-ignite-X.X.X-src.zip
