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

<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>3.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <root.directory>${pom.basedir}</root.directory>
    </properties>

    <modules>
        <module>examples</module>
        <module>modules/affinity</module>
        <module>modules/api</module>
        <module>modules/baseline</module>
        <module>modules/bytecode</module>
        <module>modules/cli</module>
        <module>modules/cli-common</module>
        <module>modules/client</module>
        <module>modules/client-common</module>
        <module>modules/client-handler</module>
        <module>modules/cluster-management</module>
        <module>modules/compute</module>
        <module>modules/configuration</module>
        <module>modules/configuration-annotation-processor</module>
        <module>modules/configuration-api</module>
        <module>modules/core</module>
        <module>modules/extended-api</module>
        <module>modules/file-io</module>
        <module>modules/index</module>
        <module>modules/jacoco-report</module>
        <module>modules/marshaller-common</module>
        <module>modules/metastorage</module>
        <module>modules/metastorage-client</module>
        <module>modules/metastorage-common</module>
        <module>modules/metastorage-server</module>
        <module>modules/network</module>
        <module>modules/network-annotation-processor</module>
        <module>modules/network-api</module>
        <module>modules/page-memory</module>
        <module>modules/raft</module>
        <module>modules/raft-client</module>
        <module>modules/rest</module>
        <module>modules/rest-api</module>
        <module>modules/rocksdb-common</module>
        <module>modules/runner</module>
        <module>modules/schema</module>
        <module>modules/sql-engine</module>
        <module>modules/storage-api</module>
        <module>modules/storage-page-memory</module>
        <module>modules/storage-rocksdb</module>
        <module>modules/table</module>
        <module>modules/transactions</module>
        <module>modules/vault</module>
    </modules>

    <profiles>
        <!--
            This profile is used to check the code for coding guidelines.

            It runs by default and can be skipped with either
            -Dmaven.all-checks.skip or -Dcheckstyle.skip flag.

            It executes 2 times - first for generating report and second
            for failing build if errors found.
        -->
        <profile>
            <id>checkstyle</id>
            <activation>
                <property>
                    <name>!maven.all-checks.skip</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>generate-report</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>checkstyle-aggregate</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>fail-if-error</id>
                                <phase>validate</phase>
                                <configuration>
                                    <failsOnError>true</failsOnError>
                                    <consoleOutput>true</consoleOutput>
                                </configuration>
                                <goals>
                                    <goal>checkstyle-aggregate</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <appendAssemblyId>false</appendAssemblyId>
                            <descriptors>
                                <descriptor>assembly/assembly.xml</descriptor>
                            </descriptors>
                            <finalName>apache-ignite-${project.version}</finalName>
                            <attach>false</attach>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!--
                Reset sourcepath configuration from parent for fixing javadoc:aggregate
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <sourcepath combine.self="override"/>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
