<?xml version="1.0" encoding="UTF-8"?>

<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!--
    POM file.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-parent</artifactId>
        <version>1</version>
        <relativePath>parent</relativePath>
    </parent>

    <groupId>org.apache.ignite</groupId>
    <artifactId>apache-ignite</artifactId>
    <version>1.7.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <!--fix <attachartifact>...< /> at apache-release profile if changed-->
        <ignite.zip.pattern>${project.artifactId}-${ignite.edition}-${project.version}-bin</ignite.zip.pattern>
    </properties>

    <scm>
        <url>https://git-wip-us.apache.org/repos/asf/ignite</url>
        <connection>scm:git:https://git-wip-us.apache.org/repos/asf/ignite</connection>
        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/ignite</developerConnection>
        <tag>HEAD</tag>
    </scm>

    <modules>
        <module>modules/apache-license-gen</module>
        <module>modules/tools</module>
        <module>modules/core</module>
        <module>modules/hadoop</module>
        <module>modules/extdata/p2p</module>
        <module>modules/extdata/uri</module>
        <module>modules/clients</module>
        <module>modules/spring</module>
        <module>modules/web</module>
        <module>modules/aop</module>
        <module>modules/urideploy</module>
        <module>modules/indexing</module>
        <module>modules/ssh</module>
        <module>modules/rest-http</module>
        <module>modules/jta</module>
        <module>modules/aws</module>
        <module>modules/log4j</module>
        <module>modules/log4j2</module>
        <module>modules/slf4j</module>
        <module>modules/jcl</module>
        <module>modules/codegen</module>
        <module>modules/gce</module>
        <module>modules/cloud</module>
        <module>modules/mesos</module>
        <module>modules/kafka</module>
        <module>modules/flume</module>
        <module>modules/yarn</module>
        <module>modules/jms11</module>
        <module>modules/twitter</module>
        <module>modules/mqtt</module>
        <module>modules/zookeeper</module>
        <module>modules/camel</module>
        <module>modules/storm</module>
        <module>modules/osgi-paxlogging</module>
        <module>modules/osgi-karaf</module>
        <module>modules/osgi</module>
        <module>modules/web/ignite-appserver-test</module>
        <module>modules/web/ignite-websphere-test</module>
        <module>modules/cassandra</module>
        <module>modules/flink</module>
    </modules>

    <profiles>
        <profile>
            <id>test</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.4</version>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>test</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/test.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>${basedir}</outputDirectory>
                                    <finalName>libs</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                    <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>dev-libs</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.7</version>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>dev-libs</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <target>
                                        <copy todir="${basedir}/libs">
                                            <fileset dir="${basedir}/target/release-package/libs" />
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>lgpl</id>
            <modules>
                <module>modules/hibernate</module>
                <module>modules/geospatial</module>
                <module>modules/schedule</module>
            </modules>
        </profile>

        <profile>
            <id>release</id>
            <activation>
                <property>
                    <name>!skipDefault</name><!--activeByDefault-->
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin><!-- skipping generation of dependencies licenses
                     to keep clean /maven-shared-archive-resources/META-INF
                     to prevent license.txt moving to sources.zip -->
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-remote-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>ignite-dependencies</id>
                                <goals>
                                    <goal>process</goal>
                                </goals>
                                <configuration>
                                   <skip>true</skip>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>core-javadoc</id>
                                <goals>
                                    <goal>aggregate</goal>
                                </goals>
                                <phase>process-test-classes</phase>
                                <configuration>
                                    <reportOutputDirectory>${basedir}/target/javadoc</reportOutputDirectory>
                                    <destDir>core</destDir>
                                    <stylesheetfile>${basedir}/assembly/docfiles/javadoc.css</stylesheetfile>
                                    <subpackages>org.apache.ignite -exclude org.apache.ignite.client:org.apache.ignite.codegen:org.apache.ignite.examples:org.apache.ignite.internal:org.apache.ignite.schema:org.apache.ignite.tests:org.apache.ignite.tools:org.apache.ignite.util:org.apache.ignite.spi.discovery.tcp.messages:org.apache.ignite.spi.discovery.tcp.internal:org.apache.ignite.spi.deployment.uri.scanners:org.apache.ignite.spi.deployment.uri.tasks:org.apache.ignite.yardstick:org.apache.ignite.webtest</subpackages>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.7</version>
                        <inherited>false</inherited>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.ignite</groupId>
                                <artifactId>ignite-tools</artifactId>
                                <version>${project.version}</version>
                            </dependency>
                        </dependencies>
                        <executions>
                            <execution>
                                <id>javadoc-postprocessing</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>prepare-package</phase>
                                <configuration>
                                    <target>
                                        <copy todir="${basedir}/target/javadoc/core">
                                            <fileset dir="assembly/docfiles">
                                                <include name="img/**" />
                                                <include name="*.js" />
                                            </fileset>
                                        </copy>

                                        <taskdef name="doctask" classname="org.apache.ignite.tools.ant.beautifier.GridJavadocAntTask" />

                                        <doctask css="dotted" dir="target/javadoc/core">
                                            <include name="**/*.html" />
                                            <exclude name="overview-frame.html" />
                                            <exclude name="allclasses-frame.html" />
                                            <exclude name="**/class-use/*" />
                                        </doctask>
                                    </target>
                                </configuration>
                            </execution>

                            <execution>
                                <id>release-postprocessing</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <target>
                                        <replaceregexp byline="true">
                                            <regexp pattern="pushd &quot;%~dp0&quot;/\.\./\.\.(\s*&amp;::.+)?" />
                                            <substitution expression="pushd &quot;%~dp0&quot;/.." />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.bat" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true">
                                            <regexp pattern="IGNITE_HOME_TMP=&quot;\$\(dirname &quot;\$\{IGNITE_HOME_TMP\}&quot;\)&quot;(\s*#.*)?" />
                                            <substitution expression="" />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.sh" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true">
                                            <regexp pattern="set SCRIPTS_HOME=%IGNITE_HOME%\\bin(\s*&amp;::.*)?" />
                                            <substitution expression="set SCRIPTS_HOME=%IGNITE_HOME%\\\\bin" />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.bat" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true">
                                            <regexp pattern="SCRIPTS_HOME=&quot;\$\{IGNITE_HOME_TMP\}/bin&quot;(\s*#.*)?" />
                                            <substitution expression="SCRIPTS_HOME=&quot;$${IGNITE_HOME_TMP}/bin&quot;" />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.sh" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true">
                                            <regexp pattern="\. &quot;\$\{SCRIPTS_HOME\}&quot;/include/build-classpath.sh(\s*#.*)?" />
                                            <substitution expression="" />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.sh" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true">
                                            <regexp pattern="call &quot;%SCRIPTS_HOME%\\include\\build-classpath.bat&quot;(\s*&amp;::.*)?" />
                                            <substitution expression="" />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.bat" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true">
                                            <regexp pattern="ENABLE_ASSERTIONS=.*" />
                                            <substitution expression="ENABLE_ASSERTIONS=&quot;0&quot;" />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.sh" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true">
                                            <regexp pattern="ENABLE_ASSERTIONS=.*" />
                                            <substitution expression="ENABLE_ASSERTIONS=0" />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.bat" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true">
                                            <regexp pattern="-DIGNITE_UPDATE_NOTIFIER=false" />
                                            <substitution expression="" />
                                            <fileset dir="${basedir}/target/release-package/bin">
                                                <include name="**/*.sh" />
                                                <include name="**/*.bat" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp file="${basedir}/target/release-package/examples/pom.xml" byline="true">
                                            <regexp pattern="to_be_replaced_by_ignite_version" />
                                            <substitution expression="${project.version}" />
                                        </replaceregexp>

                                        <replaceregexp file="${basedir}/target/release-package/examples/schema-import/pom.xml" byline="true">
                                            <regexp pattern="to_be_replaced_by_ignite_version" />
                                            <substitution expression="${project.version}" />
                                        </replaceregexp>

                                        <chmod dir="${basedir}/target/release-package" perm="755" includes="**/*.sh" />

                                        <!--
                                        Line ending bugfix for builds packaged in MS Windows machine to adjust Linux based
                                        end-of-line characters for Linux shell scripts
                                        -->
                                        <fixcrlf srcdir="${basedir}/target/release-package" eol="lf" eof="remove">
                                            <include name="**/*.sh" />
                                        </fixcrlf>

                                        <zip destfile="${basedir}/target/bin/${ignite.zip.pattern}.zip" encoding="UTF-8">
                                            <zipfileset dir="${basedir}/target/release-package" prefix="${ignite.zip.pattern}" filemode="755">
                                                <include name="**/*.sh" />
                                                <include name="**/configure" />
                                                <include name="**/install-sh" />
                                                <include name="**/compile" />
                                                <include name="**/missing" />
                                            </zipfileset>
                                            <zipfileset dir="${basedir}/target/release-package" prefix="${ignite.zip.pattern}">
                                                <exclude name="**/*.sh" />
                                                <exclude name="**/configure" />
                                                <exclude name="**/install-sh" />
                                                <exclude name="**/compile" />
                                                <exclude name="**/missing" />
                                            </zipfileset>
                                        </zip>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.4</version>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>dependencies</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>${basedir}/assembly/dependencies-${ignite.edition}.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>${basedir}/target/release-package</outputDirectory>
                                    <finalName>libs</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>

                            <execution>
                                <id>release</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/release-${ignite.edition}.xml</descriptor>
                                    </descriptors>
                                    <finalName>release-package</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>

                            <execution>
                                <id>dependencies-visor-console</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/dependencies-visor-console.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>target/release-package/bin</outputDirectory>
                                    <finalName>include</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>

                            <execution>
                                <id>scala-scripts</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/release-scala.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>target/release-package</outputDirectory>
                                    <finalName>bin</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>benchmarks</id>
            <modules>
                <module>modules/benchmarks</module>
                <module>modules/yardstick</module>
            </modules>
        </profile>

        <profile>
            <id>scala</id>

            <activation>
                <property><name>!scala-2.10</name></property>
            </activation>

            <modules>
                <module>modules/scalar</module>
                <module>modules/spark</module>
                <module>modules/visor-console</module>
                <module>modules/visor-plugins</module>
            </modules>
        </profile>

        <profile>
            <id>scala-2.10</id>

            <activation>
                <property><name>scala-2.10</name></property>
            </activation>

            <modules>
                <module>modules/scalar-2.10</module>
                <module>modules/spark-2.10</module>
                <module>modules/visor-console-2.10</module>
                <module>modules/visor-plugins</module>
            </modules>
        </profile>

        <profile>
            <id>examples</id>
            <modules>
                <module>examples</module>
                <module>examples/schema-import</module>
            </modules>
        </profile>

        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <!-- skip default -->
                                <id>source-release-assembly</id>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <skipAssembly>true</skipAssembly>
                                </configuration>
                            </execution>
                            <execution>
                                <id>source-release-assembly-ignite</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                                    <descriptors>
                                        <descriptor>assembly/release-sources.xml</descriptor>
                                    </descriptors>
                                    <tarLongFileMode>gnu</tarLongFileMode>
                                    <finalName>${project.artifactId}-${project.version}-src</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-artifact</id><!-- allows to sign *bin.zip files -->
                                <phase>package</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <failOnError>false</failOnError>
                                    <target>
                                        <attachartifact file="${basedir}/target/bin/${project.artifactId}-fabric-${project.version}-bin.zip" classifier="fabric" type="zip" />
                                        <attachartifact file="${basedir}/target/bin/${project.artifactId}-hadoop-${project.version}-bin.zip" classifier="hadoop" type="zip" />
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <ascDirectory>${basedir}</ascDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-remote-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>process</goal>
                                </goals>
                                <configuration>
                                    <!-- no <resourceBundle>, fix unexpected generation of
                                       DEPENDENCIES, LICENSE, NOTICE files-->
                                    <skip>true</skip>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>deploy-ignite-site</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>net.ju-n.maven.plugins</groupId>
                        <artifactId>checksum-maven-plugin</artifactId>
                        <version>1.2</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>files</goal>
                                </goals>
                                <phase>install</phase>
                            </execution>
                        </executions>
                        <configuration>
                            <failOnError>false</failOnError>
                            <fileSets>
                                <fileSet>
                                    <directory>${basedir}/target</directory>
                                    <includes>
                                        <include>${project.artifactId}-${project.version}-src.zip</include>
                                        <include>bin/*.zip</include>
                                    </includes>
                                </fileSet>
                            </fileSets>
                            <algorithms>
                                <algorithm>MD5</algorithm>
                                <algorithm>SHA-1</algorithm>
                            </algorithms>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.7</version>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>site-generation</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <failOnError>false</failOnError>
                                    <target>
                                        <mkdir dir="${basedir}/target/site" />

                                        <copy file="${basedir}/target/${project.artifactId}-${project.version}-src.zip" tofile="${basedir}/target/site/${project.artifactId}-${project.version}-src.zip" failonerror="false" />
                                        <copy file="${basedir}/target/${project.artifactId}-${project.version}-src.zip.asc" tofile="${basedir}/target/site/${project.artifactId}-${project.version}-src.zip.asc" failonerror="false" />
                                        <copy file="${basedir}/target/${project.artifactId}-${project.version}-src.zip.md5" tofile="${basedir}/target/site/${project.artifactId}-${project.version}-src.zip.md5" failonerror="false" />
                                        <copy file="${basedir}/target/${project.artifactId}-${project.version}-src.zip.sha1" tofile="${basedir}/target/site/${project.artifactId}-${project.version}-src.zip.sha1" failonerror="false" />

                                        <copy todir="${basedir}/target/site">
                                            <fileset dir="${basedir}/target/bin">
                                                <include name="**/*" />
                                            </fileset>
                                        </copy>

                                        <!-- appending filename to md5 and sha1 files. to be improved!! -->
                                        <!-- update versions task will replace "  " to " ", so additional echo added. -->
                                        <echo file="${basedir}/target/site/${project.artifactId}-fabric-${project.version}-bin.zip.md5" append="true" message=" " />
                                        <echo file="${basedir}/target/site/${project.artifactId}-fabric-${project.version}-bin.zip.sha1" append="true" message=" " />
                                        <echo file="${basedir}/target/site/${project.artifactId}-hadoop-${project.version}-bin.zip.md5" append="true" message=" " />
                                        <echo file="${basedir}/target/site/${project.artifactId}-hadoop-${project.version}-bin.zip.sha1" append="true" message=" " />
                                        <echo file="${basedir}/target/site/${project.artifactId}-${project.version}-src.zip.md5" append="true" message=" " />
                                        <echo file="${basedir}/target/site/${project.artifactId}-${project.version}-src.zip.sha1" append="true" message=" " />

                                        <echo file="${basedir}/target/site/${project.artifactId}-fabric-${project.version}-bin.zip.md5" append="true" message=" ${project.artifactId}-fabric-${project.version}-bin.zip" />
                                        <echo file="${basedir}/target/site/${project.artifactId}-fabric-${project.version}-bin.zip.sha1" append="true" message=" ${project.artifactId}-fabric-${project.version}-bin.zip" />
                                        <echo file="${basedir}/target/site/${project.artifactId}-hadoop-${project.version}-bin.zip.md5" append="true" message=" ${project.artifactId}-hadoop-${project.version}-bin.zip" />
                                        <echo file="${basedir}/target/site/${project.artifactId}-hadoop-${project.version}-bin.zip.sha1" append="true" message=" ${project.artifactId}-hadoop-${project.version}-bin.zip" />
                                        <echo file="${basedir}/target/site/${project.artifactId}-${project.version}-src.zip.md5" append="true" message=" ${project.artifactId}-${project.version}-src.zip" />
                                        <echo file="${basedir}/target/site/${project.artifactId}-${project.version}-src.zip.sha1" append="true" message=" ${project.artifactId}-${project.version}-src.zip" />
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>java8-schema-import</id>
            <activation>
                <file>
                    <exists>${java.home}/lib/ext/jfxrt.jar</exists>
                </file>
            </activation>
            <modules>
                <module>modules/schema-import</module>
                <module>modules/schema-import-db</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.4</version>
                        <inherited>false</inherited>

                        <executions>
                            <execution>
                                <id>dependencies-schema-import</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/dependencies-schema-import.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>target/release-package/bin</outputDirectory>
                                    <finalName>include</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>

                            <execution>
                                <id>schema-import-scripts</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/release-schema-import.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>target/release-package</outputDirectory>
                                    <finalName>bin</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>schema-import</id>
            <activation>
                <file>
                    <exists>${java.home}/lib/jfxrt.jar</exists>
                </file>
            </activation>
            <modules>
                <module>modules/schema-import</module>
                <module>modules/schema-import-db</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.4</version>
                        <inherited>false</inherited>

                        <executions>
                            <execution>
                                <id>dependencies-schema-import</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/dependencies-schema-import.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>target/release-package/bin</outputDirectory>
                                    <finalName>include</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>

                            <execution>
                                <id>schema-import-scripts</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/release-schema-import.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>target/release-package</outputDirectory>
                                    <finalName>bin</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>web-console</id>
            <modules>
                <module>modules/web-agent</module>
                <module>modules/web-console</module>
                <module>modules/schema-import-db</module>
            </modules>
        </profile>

        <profile>
            <id>update-versions</id>
            <!-- updates dotnet & cpp versions -->
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.7</version>
                        <executions>
                            <execution>
                                <id>update-versions</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>validate</phase>
                                <configuration>
                                    <target>
                                        <script language="javascript">
                                            function setClientVersion(ggVer, clientVer) {
                                                var p = project.getProperty(ggVer);

                                                var digitVer = /\d+\.\d+\.\d+/.exec(p);

                                                if (digitVer != null)
                                                {
                                                    // Date of the last major release
                                                    var startDate = new Date(2015,1,1);

                                                    // Number of hours since the last major release
                                                    var buildNum = Math.round((new Date() - startDate)/(3600*1000));
                                                    var ver = digitVer[0] + "." + buildNum;

                                                    project.setProperty(clientVer, ver);
                                                }
                                                else
                                                    project.setProperty(clientVer, p);
                                            }

                                            function fix(dest, source) {
                                                project.setProperty(dest, project.getProperty(source).replace("-SNAPSHOT",
                                                ""));
                                            }

                                            fix('ignite.version.fixed', 'project.version');
                                            fix('new.ignite.version.fixed', 'new.ignite.version');
                                            setClientVersion('ignite.version.fixed', 'old.client.version');
                                            setClientVersion('new.ignite.version.fixed', 'new.client.version');
                                        </script>

                                        <echo message="Update ignite.version in dotnet client" />
                                        <echo message="${new.client.version}" />

                                        <replaceregexp byline="true" encoding="UTF-8">
                                            <regexp pattern="(\[assembly:\s*Assembly\w*Version\w*\(&quot;)\d+\.\d+\.\d+(\.\d+)?(&quot;\)\])" />
                                            <substitution expression="\1${new.client.version}\3" />
                                            <fileset dir="${basedir}/">
                                                <include name="**/AssemblyInfo.cs" />
                                                <include name="**/AssemblyInfo.cpp" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true" encoding="UTF-8">
                                            <regexp pattern="(\[assembly:\s*AssemblyInformationalVersion\w*\(&quot;).*?(&quot;\)\])" />
                                            <substitution expression="\1${new.ignite.version.fixed}\2" />
                                            <fileset dir="${basedir}/">
                                                <include name="**/AssemblyInfo.cs" />
                                                <include name="**/AssemblyInfo.cpp" />
                                            </fileset>
                                        </replaceregexp>

                                        <echo message="Update ignite.version in cpp client" />
                                        <replaceregexp byline="true" encoding="UTF-8">
                                            <regexp pattern="(AC_INIT.+\[)\d+\.\d+\.\d+.*?(\].+)" />
                                            <substitution expression="\1${new.client.version}\2" />
                                            <fileset dir="${basedir}/">
                                                <include name="**/configure.ac" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true" encoding="UTF-8">
                                            <regexp pattern="(define GG_VERSION_STR_WIN &quot;)\d+\.\d+\.\d+(\.\d+)?(&quot;)" />
                                            <substitution expression="\1${new.client.version}\3" />
                                            <fileset dir="${basedir}/">
                                                <include name="**/resource.h" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true" encoding="UTF-16">
                                            <regexp pattern="(Version&quot;, &quot;)\d+\.\d+\.\d+\.\d+(&quot;)" />
                                            <substitution expression="\1${new.client.version}\2" />
                                            <fileset dir="${basedir}/">
                                                <include name="**/Resource.rc" />
                                            </fileset>
                                        </replaceregexp>

                                        <script language="javascript">
                                            function setBinVersion(clientVer, binVer) {
                                            var p = project.getProperty(clientVer).replace(".", ",");

                                            if (p.split(',').length == 3)
                                            project.setProperty(binVer, p + ',0');
                                            else
                                            project.setProperty(binVer, p);
                                            }

                                            setBinVersion('old.client.version', 'old.bin.version');
                                            setBinVersion('new.client.version', 'new.bin.version');
                                        </script>

                                        <replaceregexp byline="true" encoding="UTF-8">
                                            <regexp pattern="(define GG_VERSION_BIN_WIN )\d,\d,\d,\d" />
                                            <substitution expression="\1${new.bin.version}" />
                                            <fileset dir="${basedir}/">
                                                <include name="**/resource.h" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true" encoding="UTF-16">
                                            <regexp pattern="(VERSION )\d,\d,\d,\d" />
                                            <substitution expression="\1${new.bin.version}" />
                                            <fileset dir="${basedir}/">
                                                <include name="**/Resource.rc" />
                                            </fileset>
                                        </replaceregexp>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                        <configuration>
                            <filesets>
                                <fileset>
                                    <directory>libs</directory>
                                </fileset>
                            </filesets>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
