<?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>

    <artifactId>apache-ignite</artifactId>
    <version>2.9.0-SNAPSHOT</version>
    <packaging>pom</packaging>

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

    <modules>
        <module>modules/apache-license-gen</module>
        <module>modules/tools</module>
        <module>modules/core</module>
        <module>modules/compress</module>
        <module>modules/dev-utils</module>
        <module>modules/direct-io</module>
        <module>modules/hadoop</module>
        <module>modules/extdata/p2p</module>
        <module>modules/extdata/uri</module>
        <module>modules/extdata/platform</module>
        <module>modules/clients</module>
        <module>modules/spring</module>
        <module>modules/spring-data</module>
        <module>modules/spring-data-2.0</module>
        <module>modules/spring-data-2.2</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/hibernate-core</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/kubernetes</module>
        <module>modules/zeromq</module>
        <module>modules/rocketmq</module>
        <module>modules/sqlline</module>
        <module>modules/ml</module>
        <module>modules/ml/spark-model-parser</module>
        <module>modules/ml/xgboost-model-parser</module>
        <module>modules/ml/tensorflow-model-parser</module>
        <module>modules/ml/h2o-model-parser</module>
        <module>modules/tensorflow</module>
        <module>modules/opencensus</module>
    </modules>

    <profiles>
        <profile>
            <id>all-java</id> <!-- used to update project versions and check all modules compilation -->
            <modules> <!-- sorted alphabetically -->
                <module>examples</module>
                <module>modules/benchmarks</module>
                <module>modules/compatibility</module>
                <module>modules/geospatial</module>
                <module>modules/hibernate-4.2</module>
                <module>modules/hibernate-5.1</module>
                <module>modules/hibernate-5.3</module>
                <module>modules/schedule</module>
                <module>modules/web-console/web-agent</module>
                <module>modules/yardstick</module>
            </modules>
        </profile>

        <profile>
            <id>all-scala</id><!-- used to update project versions and check all modules compilation -->
            <modules><!-- sorted alphabetically -->
                <module>modules/ml/mleap-model-parser</module>
                <module>modules/scalar-2.10</module>
                <module>modules/scalar</module>
                <module>modules/spark</module>
                <module>modules/spark-2.4</module>
                <module>modules/visor-console-2.10</module>
                <module>modules/visor-console</module>
                <module>modules/visor-plugins</module>
            </modules>
        </profile>

        <profile>
            <id>all-other</id> <!-- used to update project versions and check all modules compilation -->
            <modules> <!-- sorted alphabetically -->
                <module>modules/web-console</module>
            </modules>
        </profile>

        <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>compatibility</id>
            <modules>
                <module>modules/compatibility</module>
            </modules>
        </profile>

        <profile>
            <id>javadoc</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <version>3.0.0</version>
                        <executions>
                            <execution>
                                <id>timestamp-property</id>
                                <goals>
                                    <goal>timestamp-property</goal>
                                </goals>
                                <phase>validate</phase>
                                <configuration>
                                    <name>current.year</name>
                                    <pattern>yyyy</pattern>
                                </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>validate</phase>
                                <configuration>
                                    <reportOutputDirectory>${basedir}/target/javadoc</reportOutputDirectory>
                                    <destDir>core</destDir>
                                    <subpackages>org.apache.ignite -exclude 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.communication.tcp.internal:org.apache.ignite.spi.discovery.zk.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-new</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>initialize</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>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>lgpl</id>
            <modules>
                <module>modules/hibernate-4.2</module>
                <module>modules/hibernate-5.1</module>
                <module>modules/hibernate-5.3</module>
                <module>modules/geospatial</module>
                <module>modules/schedule</module>
            </modules>
        </profile>

        <profile>
            <id>licenses</id>
            <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>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>release</id>
            <build>
                <plugins>
                     <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>release-postprocessing</id>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>initialize</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-${ignite.edition}/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-${ignite.edition}/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-${ignite.edition}/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-${ignite.edition}/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-${ignite.edition}/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-${ignite.edition}/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-${ignite.edition}/bin">
                                                <include name="**/*.sh" />
                                            </fileset>
                                        </replaceregexp>

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

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

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

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

                                        <chmod dir="${basedir}/target/release-package-${ignite.edition}" 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-${ignite.edition}" eol="lf" eof="remove">
                                            <include name="**/*.sh" />
                                        </fixcrlf>

                                        <zip destfile="${basedir}/target/bin/${ignite.edition}-${project.version}-bin.zip" encoding="UTF-8">
                                            <zipfileset dir="${basedir}/target/release-package-${ignite.edition}" prefix="${ignite.edition}-${project.version}-bin" 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-${ignite.edition}" prefix="${ignite.edition}-${project.version}-bin">
                                                <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>ignite-dependencies</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>${basedir}/assembly/dependencies-${ignite.edition}.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>${basedir}/target/release-package-${ignite.edition}</outputDirectory>
                                    <finalName>libs</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>

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

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

                            <execution>
                                <id>dependencies-sqlline</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/dependencies-sqlline.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>target/release-package-${ignite.edition}</outputDirectory>
                                    <finalName>bin</finalName>
                                    <appendAssemblyId>false</appendAssemblyId>
                                </configuration>
                            </execution>

                            <execution>
                                <id>scala-scripts</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <descriptor>assembly/release-scala.xml</descriptor>
                                    </descriptors>
                                    <outputDirectory>target/release-package-${ignite.edition}</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>yardstick</id>
            <modules>
                <module>modules/yardstick</module>
            </modules>
        </profile>

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

        <profile>
            <id>scala</id>

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

            <modules>
                <module>modules/ml/mleap-model-parser</module>
                <module>modules/scalar</module>
                <module>modules/spark</module>
                <module>modules/visor-console</module>
                <module>modules/visor-plugins</module>
            </modules>
        </profile>

        <profile>
            <id>spark-2.4</id>

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

            <modules>
                <module>modules/spark-2.4</module>
                <module>modules/ml/mleap-model-parser</module>
                <module>modules/scalar</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/visor-console-2.10</module>
                <module>modules/visor-plugins</module>
            </modules>
        </profile>

        <profile>
            <id>ignored-tests</id>
            <modules>
                <module>modules/ignored-tests</module>
            </modules>
        </profile>

        <profile>
            <id>examples</id>
            <modules>
                <module>examples</module>
            </modules>
        </profile>

        <profile>
            <id>web-console</id>
            <modules>
                <module>modules/web-console</module>
                <module>modules/web-console/web-agent</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 .NET" />
                                        <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 C++" />
                                        <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" />
                                                <include name="**/configure.acrel" />
                                            </fileset>
                                        </replaceregexp>

                                        <replaceregexp byline="true" encoding="UTF-8">
                                            <regexp pattern="(Version=.+)\d+\.\d+\.\d+\.\d+(.+)" />
                                            <substitution expression="\1${new.client.version}\2" />
                                            <fileset dir="${basedir}/">
                                                <include name="**/*.wxs" />
                                            </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>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
