<?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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>mahout</artifactId>
        <groupId>org.apache.mahout</groupId>
        <version>14.2-SNAPSHOT</version>
    </parent>

    <artifactId>apache-mahout-distribution_2.12</artifactId>

    <name>Mahout Release Package</name>
    <description>Distribution Package</description>

    <packaging>pom</packaging>

    <scm>
        <connection>scm:git:git@github.com:apache/mahout.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/mahout.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=mahout.git;a=tree;h=refs/heads/${project.scm.tag};hb=${project.scm.tag}</url>
        <tag>mahout_${scala.compat.version}-${project.version}-${release.candidate}
        </tag>
    </scm>

    <dependencies>
        <dependency>
            <groupId>org.apache.mahout</groupId>
            <artifactId>mahout-core_${scala.compat.version}</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.mahout</groupId>
            <artifactId>mahout-hdfs_${scala.compat.version}</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.mahout</groupId>
            <artifactId>mahout-spark_${scala.compat.version}</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.mahout</groupId>
            <artifactId>mahout-spark-cli-drivers_${scala.compat.version}</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

        <build>
          <plugins>
            <plugin>
              <artifactId>maven-assembly-plugin</artifactId>
<!--
              <version>3.1.1</version>
-->
                <executions>
                    <execution>
                        <id>distro-assembly-bin</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <attach>true</attach>
                            <finalName>apache-mahout_${scala.compat.version}-${project.version}</finalName>
                            <skipAssembly>false</skipAssembly>
                            <descriptors>
                                <descriptor>${project.basedir}/src/main/resources/assembly/bin.xml</descriptor>
                            </descriptors>
                            <tarLongFileMode>gnu</tarLongFileMode>
                            <appendAssemblyId>false</appendAssemblyId>
                        </configuration>
                    </execution>
                    <execution>
                        <id>distro-assembly-src</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <attach>true</attach>
                            <finalName>apache-mahout_${scala.compat.version}-${project.version}</finalName>
                            <skipAssembly>false</skipAssembly>
                            <descriptors>
                                <descriptor>${project.basedir}/src/main/resources/assembly/src.xml</descriptor>
                            </descriptors>
                            <tarLongFileMode>gnu</tarLongFileMode>
                            <appendAssemblyId>true</appendAssemblyId>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
<!--            <pluginManagement>-->
<!--                <plugins>-->
<!--                    <plugin>-->
<!--                        <groupId>org.eclipse.m2e</groupId>-->
<!--                        <artifactId>lifecycle-mapping</artifactId>-->
<!--                        <version>1.0.0</version>-->
<!--                        <configuration>-->
<!--                            <lifecycleMappingMetadata>-->
<!--                                <pluginExecutions>-->
<!--                                    <pluginExecution>-->
<!--                                        <pluginExecutionFilter>-->
<!--                                            <groupId>org.apache.maven.plugins</groupId>-->
<!--                                            <artifactId>maven-dependency-plugin</artifactId>-->
<!--                                            <versionRange>[1.0,)</versionRange>-->
<!--                                            <goals>-->
<!--                                                <goal>build-classpath</goal>-->
<!--                                            </goals>-->
<!--                                        </pluginExecutionFilter>-->
<!--                                        <action>-->
<!--                                            <ignore />-->
<!--                                        </action>-->
<!--                                    </pluginExecution>-->
<!--                                </pluginExecutions>-->
<!--                            </lifecycleMappingMetadata>-->
<!--                        </configuration>-->
<!--                    </plugin>-->

<!--                </plugins>-->
<!--            </pluginManagement>-->
       </build>

</project>
