<?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">
  <parent>
    <artifactId>ambari-infra</artifactId>
    <groupId>org.apache.ambari</groupId>
    <version>2.0.0.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>ambari-infra-assembly</artifactId>
  <name>Ambari Infra Assembly</name>
  <url>http://maven.apache.org</url>

  <properties>
    <mapping.base.path>/usr/lib</mapping.base.path>
    <!-- original url: <solr.tar>http://archive.apache.org/dist/lucene/solr/${solr.version}/solr-${solr.version}.tgz</solr.tar> -->
    <solr.tar>http://public-repo-1.hortonworks.com/ARTIFACTS/dist/lucene/solr/${solr.version}/solr-${solr.version}.tgz</solr.tar>
    <solr.mapping.path>${mapping.base.path}/ambari-infra-solr</solr.mapping.path>
    <solr.package.name>ambari-infra-solr</solr.package.name>
    <solr.client.package.name>ambari-infra-solr-client</solr.client.package.name>
    <solr.client.mapping.path>${mapping.base.path}/${solr.client.package.name}</solr.client.mapping.path>
    <solr.client.dir>${project.basedir}/../ambari-infra-solr-client</solr.client.dir>
    <infra.solr.plugin.dir>${project.basedir}/../ambari-infra-solr-plugin</infra.solr.plugin.dir>
    <infra-manager.package.name>ambari-infra-manager</infra-manager.package.name>
    <infra-manager.dir>${project.basedir}/../ambari-infra-manager</infra-manager.dir>
    <infra-manager.mapping.path>${mapping.base.path}/${infra-manager.package.name}</infra-manager.mapping.path>
    <infra-manager.conf.mapping.path>${infra-manager.mapping.path}/conf</infra-manager.conf.mapping.path>
    <common-fileupload.location.url>http://central.maven.org/maven2/commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3.jar</common-fileupload.location.url>
    <common-fileupload.jar.name>commons-fileupload-1.3.3.jar</common-fileupload.jar.name>
    <common-fileupload.old.jar.name>commons-fileupload-1.3.2.jar</common-fileupload.old.jar.name>
    <jenkins.docker.folder>../jenkins/containers</jenkins.docker.folder>
  </properties>

  <profiles>

    <profile>
      <id>rpm</id>
      <properties>
        <download.solr>true</download.solr>
      </properties>
      <activation>
        <property>
          <name>build-rpm</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>rpm-maven-plugin</artifactId>
            <version>2.1.4</version>
            <configuration>
              <copyright>2012, Apache Software Foundation</copyright>
              <group>Development</group>
              <description>Maven Recipe: RPM Package.</description>
              <autoRequires>false</autoRequires>
              <prefix>/</prefix>
              <needarch>noarch</needarch>
              <targetOS>linux</targetOS>

              <version>${package-version}</version>
              <release>${package-release}</release>

              <defaultUsername>root</defaultUsername>
              <defaultGroupname>root</defaultGroupname>
            </configuration>
            <executions>
              <execution>
                <id>infra-solr</id>
                <phase>package</phase>
                <goals>
                  <goal>rpm</goal>
                </goals>
                <configuration>
                  <group>Development</group>
                  <name>${solr.package.name}</name>
                  <mappings>
                    <mapping>
                      <directory>${solr.mapping.path}</directory>
                      <sources>
                        <source>
                          <location>${project.build.directory}/solr</location>
                        </source>
                      </sources>
                    </mapping>
                  </mappings>
                </configuration>
              </execution>
              <execution>
                <id>infra-solr-client</id>
                <phase>package</phase>
                <goals>
                  <goal>rpm</goal>
                </goals>
                <configuration>
                  <group>Development</group>
                  <name>${solr.client.package.name}</name>
                  <needarch>noarch</needarch>
                  <targetOS>linux</targetOS>
                  <postinstallScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/solr-client/postinstall.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </postinstallScriptlet>
                  <mappings>
                    <mapping>
                      <directory>${solr.client.mapping.path}</directory>
                      <sources>
                        <source>
                          <location>${solr.client.dir}/target/package</location>
                          <excludes>
                            <exclude>libs/checkstyle*.jar</exclude>
                          </excludes>
                        </source>
                      </sources>
                    </mapping>
                  </mappings>
                </configuration>
              </execution>
              <execution>
                <id>infra-manager</id>
                <phase>package</phase>
                <goals>
                  <goal>rpm</goal>
                </goals>
                <configuration>
                  <group>Development</group>
                  <name>${infra-manager.package.name}</name>
                  <postinstallScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/manager/postinstall.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </postinstallScriptlet>
                  <postremoveScriptlet>
                    <scriptFile>${project.basedir}/src/main/package/rpm/manager/postremove.sh</scriptFile>
                    <fileEncoding>utf-8</fileEncoding>
                  </postremoveScriptlet>
                  <mappings>
                    <mapping>
                      <directory>${infra-manager.mapping.path}</directory>
                      <sources>
                        <source>
                          <location>${infra-manager.dir}/target/package</location>
                        </source>
                      </sources>
                    </mapping>
                  </mappings>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
              <execution>
                <phase>generate-resources</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <ant antfile="build.xml">
                      <target name="package"/>
                    </ant>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>deb</id>

      <activation>
        <property>
          <name>build-deb</name>
        </property>
      </activation>

      <build>
        <plugins>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.7</version>

            <executions>
              <execution>
                <id>copy-resources</id>
                <phase>package</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/resources/deb</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${project.basedir}/src/main/package/deb</directory>
                      <excludes>
                        <exclude>solr/postinst</exclude>
                        <exclude>solr-client/postinst</exclude>
                      </excludes>
                      <filtering>false</filtering>
                    </resource>
                    <resource>
                      <directory>${project.basedir}/src/main/package/deb</directory>
                      <includes>
                        <include>solr/postinst</include>
                        <include>solr-client/postinst</include>
                      </includes>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.vafer</groupId>
            <artifactId>jdeb</artifactId>
            <version>1.4</version>
            <executions>
              <execution>
                <phase>package</phase>
                <id>jdeb-solr</id>
                <goals>
                  <goal>jdeb</goal>
                </goals>
                <configuration>
                  <controlDir>${basedir}/src/main/package/deb/solr</controlDir>
                  <deb>${basedir}/target/${solr.package.name}_${package-version}-${package-release}.deb</deb>
                  <skip>false</skip>
                  <skipPOMs>false</skipPOMs>
                  <dataSet>
                    <data>
                      <src>${project.build.directory}/solr</src>
                      <type>directory</type>
                      <mapper>
                        <type>perm</type>
                        <user>root</user>
                        <group>root</group>
                        <prefix>${solr.mapping.path}</prefix>
                      </mapper>
                      <excludes>
                        bin/**,server/scripts/**
                      </excludes>
                    </data>
                    <data>
                      <src>${project.build.directory}/solr</src>
                      <type>directory</type>
                      <mapper>
                        <type>perm</type>
                        <user>root</user>
                        <group>root</group>
                        <filemode>755</filemode>
                        <prefix>${solr.mapping.path}</prefix>
                      </mapper>
                      <includes>
                        bin/**,server/scripts/**
                      </includes>
                    </data>
                  </dataSet>
                </configuration>
              </execution>

              <execution>
                <phase>package</phase>
                <id>jdeb-solr-client</id>
                <goals>
                  <goal>jdeb</goal>
                </goals>
                <configuration>
                  <controlDir>${basedir}/src/main/package/deb/solr-client</controlDir>
                  <deb>${basedir}/target/${solr.client.package.name}_${package-version}-${package-release}.deb</deb>
                  <skip>false</skip>
                  <skipPOMs>false</skipPOMs>
                  <dataSet>
                    <data>
                      <src>${solr.client.dir}/target/ambari-infra-solr-client.tar.gz</src>
                      <type>archive</type>
                      <mapper>
                        <type>perm</type>
                        <user>root</user>
                        <group>root</group>
                        <prefix>${solr.client.mapping.path}</prefix>
                      </mapper>
                      <excludes>libs/checkstyle*.jar</excludes>
                    </data>
                  </dataSet>
                </configuration>
              </execution>

              <execution>
                <phase>package</phase>
                <id>jdeb-infra-manager</id>
                <goals>
                  <goal>jdeb</goal>
                </goals>
                <configuration>
                  <controlDir>${basedir}/src/main/package/deb/manager</controlDir>
                  <deb>${basedir}/target/${infra-manager.package.name}_${package-version}-${package-release}.deb</deb>
                  <skip>false</skip>
                  <skipPOMs>false</skipPOMs>
                  <dataSet>
                    <data>
                      <src>${infra-manager.dir}/target/ambari-infra-manager.tar.gz</src>
                      <type>archive</type>
                      <mapper>
                        <type>perm</type>
                        <user>root</user>
                        <group>root</group>
                        <prefix>${infra-manager.mapping.path}</prefix>
                      </mapper>
                    </data>
                  </dataSet>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
              <execution>
                <phase>generate-resources</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <ant antfile="build.xml">
                      <target name="package"/>
                    </ant>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <configuration>
              <verbose>true</verbose>
              <images>
                <image>
                  <name>apache/ambari-infra-solr:latest</name>
                  <build>
                    <dockerFileDir>${project.build.directory}/docker-infra-solr</dockerFileDir>
                  </build>
                </image>
              </images>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <dependencies>
    <dependency>
      <groupId>org.apache.ambari</groupId>
      <artifactId>ambari-infra-solr-client</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ambari</groupId>
      <artifactId>ambari-infra-solr-plugin</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ambari</groupId>
      <artifactId>ambari-infra-manager</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>


</project>