<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2015-2017 OpenCB
  ~
  ~ Licensed 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>

    <properties>
        <opencga-storage-hadoop-deps.version>${opencga.version}</opencga-storage-hadoop-deps.version>
        <module-opencga-storage-hadoop-deps>false</module-opencga-storage-hadoop-deps>
        <opencga-storage-hadoop-deps.id>hdp2.6</opencga-storage-hadoop-deps.id>
        <opencga-storage-hadoop-deps.artifactId>opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id}</opencga-storage-hadoop-deps.artifactId>
    </properties>

    <parent>
        <groupId>org.opencb.opencga</groupId>
        <artifactId>opencga-storage</artifactId>
        <version>2.2.0</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>opencga-storage-hadoop</artifactId>
    <version>2.2.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>opencga-storage-hadoop-core</module>
    </modules>

    <profiles>
        <!-- Add opencga-storage-hadoop-deps as an extra module. Force to recompile the opencga-storage-hadoop-deps -->
        <profile>
            <id>opencga-storage-hadoop-deps</id>
            <modules>
                <module>opencga-storage-hadoop-deps</module>
            </modules>
        </profile>

        <profile>
            <id>hdp3.1</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <opencga-storage-hadoop-deps.id>hdp3.1</opencga-storage-hadoop-deps.id>
                <opencga-storage-hadoop-deps.artifactId>opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id}</opencga-storage-hadoop-deps.artifactId>
            </properties>
        </profile>
        <profile>
            <id>emr6.1</id>
            <properties>
                <opencga-storage-hadoop-deps.id>emr6.1</opencga-storage-hadoop-deps.id>
                <opencga-storage-hadoop-deps.artifactId>opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id}</opencga-storage-hadoop-deps.artifactId>
            </properties>
        </profile>
        <!--        <profile>-->
        <!--            <id>hdp2.6</id>-->
        <!--            <activation>-->
        <!--                <activeByDefault>true</activeByDefault>-->
        <!--            </activation>-->
        <!--            <properties>-->
        <!--                <opencga-storage-hadoop-deps.id>hdp2.6</opencga-storage-hadoop-deps.id>-->
        <!--                <opencga-storage-hadoop-deps.artifactId>opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id}</opencga-storage-hadoop-deps.artifactId>-->
        <!--            </properties>-->
        <!--        </profile>-->
        <!--        <profile>-->
        <!--            <id>hdp2.5</id>-->
        <!--            <properties>-->
        <!--                <opencga-storage-hadoop-deps.id>hdp2.5</opencga-storage-hadoop-deps.id>-->
        <!--                <opencga-storage-hadoop-deps.artifactId>opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id}</opencga-storage-hadoop-deps.artifactId>-->
        <!--            </properties>-->
        <!--        </profile>-->
        <!--        <profile>-->
        <!--            <id>emr5.8</id>-->
        <!--            <properties>-->
        <!--                <opencga-storage-hadoop-deps.id>emr5.8</opencga-storage-hadoop-deps.id>-->
        <!--                <opencga-storage-hadoop-deps.artifactId>opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id}</opencga-storage-hadoop-deps.artifactId>-->
        <!--            </properties>-->
        <!--        </profile>-->
        <!--        <profile>-->
        <!--            <id>emr5.31</id>-->
        <!--            <properties>-->
        <!--                <opencga-storage-hadoop-deps.id>emr5.31</opencga-storage-hadoop-deps.id>-->
        <!--                <opencga-storage-hadoop-deps.artifactId>opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id}</opencga-storage-hadoop-deps.artifactId>-->
        <!--            </properties>-->
        <!--        </profile>-->
        <!--        <profile>-->
        <!--            <id>cdh5.13</id>-->
        <!--            <properties>-->
        <!--                <opencga-storage-hadoop-deps.id>cdh5.13</opencga-storage-hadoop-deps.id>-->
        <!--                <opencga-storage-hadoop-deps.artifactId>opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id}</opencga-storage-hadoop-deps.artifactId>-->
        <!--            </properties>-->
        <!--        </profile>-->
    </profiles>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>compile-hadoop-deps</id>
                        <phase>generate-resources</phase>
                        <configuration>
                            <target>
                                <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath" />
                                <if>
                                    <and>
                                        <!--Only compile from parent opencga-storage-hadoop-->
                                        <equals arg1="${project.artifactId}" arg2="opencga-storage-hadoop" />
                                        <!--Compile if file is not available-->
                                        <not>
                                            <available file="${settings.localRepository}/org/opencb/opencga/${opencga-storage-hadoop-deps.artifactId}/${opencga-storage-hadoop-deps.version}/${opencga-storage-hadoop-deps.artifactId}-${opencga-storage-hadoop-deps.version}-shaded.jar"/>
                                        </not>
                                        <!--Compile if opencga-storage-hadoop-deps has not been included as a module-->
                                        <!--See profile opencga-storage-hadoop-deps-->
                                        <not>
                                            <equals arg1="${module-opencga-storage-hadoop-deps}" arg2="true"/>
                                        </not>
                                    </and>
                                    <then>
                                        <echo>${settings.localRepository}/org/opencb/opencga/${opencga-storage-hadoop-deps.artifactId}/${opencga-storage-hadoop-deps.version}/${opencga-storage-hadoop-deps.artifactId}-${opencga-storage-hadoop-deps.version}-shaded.jar</echo>
                                        <echo>Compile ${opencga-storage-hadoop-deps.artifactId}-${opencga-storage-hadoop-deps.version}</echo>
                                        <exec executable="mvn">
                                            <arg value="-f"/>
                                            <arg value="${project.basedir}/pom.xml"/>
                                            <arg value="-Popencga-storage-hadoop-deps"/>
                                            <arg value="-pl"/>
                                            <arg value=":opencga-storage-hadoop-deps,:${opencga-storage-hadoop-deps.artifactId}"/>
                                            <arg value="install"/>
                                        </exec>
                                    </then>
                                    <else>
                                        <if>
                                            <and>
                                                <equals arg1="${project.artifactId}" arg2="opencga-storage-hadoop" />

                                                <not>
                                                    <equals arg1="${module-opencga-storage-hadoop-deps}" arg2="true"/>
                                                </not>

                                                <available file="${settings.localRepository}/org/opencb/opencga/${opencga-storage-hadoop-deps.artifactId}/${opencga-storage-hadoop-deps.version}/${opencga-storage-hadoop-deps.artifactId}-${opencga-storage-hadoop-deps.version}-shaded.jar"/>
                                            </and>
                                            <then>
                                                <echo>------------------------------------------------------------------------</echo>
                                                <echo>Skip compile opencga-storage-hadoop-deps. If required, compile with -Popencga-storage-hadoop-deps,${opencga-storage-hadoop-deps.id}</echo>
                                                <echo>Shaded jar file already exists: ${settings.localRepository}/org/opencb/opencga/${opencga-storage-hadoop-deps.artifactId}/${opencga-storage-hadoop-deps.version}/${opencga-storage-hadoop-deps.artifactId}-${opencga-storage-hadoop-deps.version}-shaded.jar</echo>
                                                <echo>------------------------------------------------------------------------</echo>
                                            </then>
                                        </if>
                                    </else>
                                </if>
                                <if>
                                    <!-- Check default hadoop deps -->
                                    <and>
                                        <!--Only compile from parent opencga-storage-hadoop-->
                                        <equals arg1="${project.artifactId}" arg2="opencga-storage-hadoop" />
                                        <!--Compile if file is not available-->
                                        <not>
                                            <available file="${settings.localRepository}/org/opencb/opencga/opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id-default}/${opencga-storage-hadoop-deps.version}/opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id-default}-${opencga-storage-hadoop-deps.version}-shaded.jar"/>
                                        </not>
                                        <!--Compile if opencga-storage-hadoop-deps has not been included as a module-->
                                        <!--See profile opencga-storage-hadoop-deps-->
                                        <not>
                                            <equals arg1="${module-opencga-storage-hadoop-deps}" arg2="true"/>
                                        </not>
                                    </and>
                                    <then>
                                        <echo>${settings.localRepository}/org/opencb/opencga/opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id-default}/${opencga-storage-hadoop-deps.version}/opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id-default}-${opencga-storage-hadoop-deps.version}-shaded.jar</echo>
                                        <echo>Compile opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id-default}-${opencga-storage-hadoop-deps.version}</echo>
                                        <exec executable="mvn">
                                            <arg value="-f"/>
                                            <arg value="${project.basedir}/pom.xml"/>
                                            <arg value="-Popencga-storage-hadoop-deps"/>
                                            <arg value="-pl"/>
                                            <arg value=":opencga-storage-hadoop-deps,:opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id-default}"/>
                                            <arg value="install"/>
                                        </exec>
                                    </then>
                                </if>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>

                </executions>

                <dependencies>
                    <dependency>
                        <groupId>ant-contrib</groupId>
                        <artifactId>ant-contrib</artifactId>
                        <version>20020829</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>