<?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/h2o-model-parser</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/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/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/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>
