You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by ap...@apache.org on 2019/10/17 16:11:55 UTC

[mahout] branch mahout-14.1 updated: [NOJIRA][MAHOUT-14.1][RELEASEWORK]- Merge apache/mahout-14.1 to aplaumbo/mahout-14.1 (Github/gitbox permissions are not working- cant push directly) (#379)

This is an automated email from the ASF dual-hosted git repository.

apalumbo pushed a commit to branch mahout-14.1
in repository https://gitbox.apache.org/repos/asf/mahout.git


The following commit(s) were added to refs/heads/mahout-14.1 by this push:
     new 3009d65  [NOJIRA][MAHOUT-14.1][RELEASEWORK]- Merge apache/mahout-14.1 to aplaumbo/mahout-14.1 (Github/gitbox permissions are not working- cant push directly) (#379)
3009d65 is described below

commit 3009d6500fd98d4e05f72cb027818c25f41253ca
Author: Andrew Palumbo <ap...@apache.org>
AuthorDate: Thu Oct 17 09:11:49 2019 -0700

    [NOJIRA][MAHOUT-14.1][RELEASEWORK]- Merge apache/mahout-14.1 to aplaumbo/mahout-14.1 (Github/gitbox permissions are not working- cant push directly) (#379)
    
    * [MAHOUT-2017] small tweaks after large refactor several upgrades [MAHOUT-2072]
    
    * [MAHOUT-2017] use {project.base.directory} over {project.build.directory}/
    
    * [MAHOUT-2017] small fixes to release binaries explain some issues
    
    * set back 14.1-SAPSHOT version
    
    * [maven-release-plugin] prepare release mahout-14.1
    
    * [maven-release-plugin] prepare release mahout-14.1
    
    * [maven-release-plugin] prepare for next development iteration
    
    * [MAHOUT-2071] move assembly files to mvn defined standard location per: https://maven.apache.org/guides/mini/guide-assemblies.html
    
    * [MAHOUT-2071] bring in dependancies to assembly pom
    
    * rollback to version 14.1-SNAPSHOT
    
    * [MAHOUT-2071] cleanup root pom.xml
    
    * [MAHOUT-2071] fixup assembly bin.xml and src.xml files
    
    * [MAHOUT-2074] - Dockerfiles!!
    
    * [MAHOUT-2074] - entrypioint work
---
 Dockerfile                |  44 ++++---
 engine/hdfs/pom.xml       |   4 +-
 engine/spark/pom.xml      |   4 +-
 entrypoint.sh             |   9 +-
 examples/pom.xml          |   4 +-
 pom.xml                   | 325 ++++++++++++++++++++++++++++++++++++++++++----
 src/main/assembly/bin.xml |  97 ++++++++++++++
 src/main/assembly/src.xml |  79 +++++++++++
 src/pom.xml               | 180 +++++++++++++++++++++++++
 9 files changed, 693 insertions(+), 53 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index fe63a99..bad0917 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -18,11 +18,15 @@
 
 FROM openjdk:8-alpine
 
-ARG spark_uid=185
+ENV spark_uid=185
+
+ENV SCALA_MAJOR 2.12
+ENV HADOOP_MAJOR 2.7
+ENV SPARK_MAJOR_MINOR 2.4.4
 
 # Before building the mahout docker image, we must build a spark distrobution following
 # the instructions in http://spark.apache.org/docs/latest/building-spark.html.
-# this Dockerfile will build Spark version 2.4.4 against Scala 2.12.
+# this Dockerfile will build Spark version 2.4.4 against Scala 2.12 by default.
 # docker build -t mahout:latest -f resource_managers/docker/kubernetes/src/main/dockerfiles/Dockerfile .
 
 
@@ -35,7 +39,7 @@ RUN set -ex && \
     mkdir -p /opt/mahout/work-dir && \
     mkdir -p /opt/spark && \
     export MAHOUT_DOCKER_HOME=/opt/mahout && \
-    export SPARK_VERSION=spark-2.4.4
+    export SPARK_VERSION=spark-${SPARK_MAJOR_MINOR} && \
     export SPARK_BASE=/opt/spark && \
     export SPARK_HOME=${SPARK_BASE}/${SPARK_VERSION}
     export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m" && \
@@ -47,11 +51,11 @@ RUN set -ex && \
     #$SPARK_HOME/$SPARK_VERSION.sha512 ${SPARK_HOME}/$SPARK_VERSION.tgz | shasum -a 512 -c - && \
     tar -xzvf ${SPARK_BASE}/${SPARK_VERSION}.tgz -C ${SPARK_BASE}/&& \
     echo ${SPARK_BASE}/${SPARK_VERSION}
-    sh ${SPARK_HOME}/dev/change-scala-version.sh 2.12 && \
+    sh ${SPARK_HOME}/dev/change-scala-version.sh ${SCALA_MAJOR} && \
     sh ${SPARK_HOME}/dev/make-distribution.sh --name ${DATE}-${REVISION} --pip --tgz -DzincPort=${ZINC_PORT} \
-         -Phadoop-2.7 -Pkubernetes -Pkinesis-asl -Phive -Phive-thriftserver
+         -Phadoop-${HADOOP_MAJOR} -Pkubernetes -Pkinesis-asl -Phive -Phive-thriftserver
 
-    #sh ${SPARK_HOME}/build/mvn -Pkubernetes -Pscala-2.12 -DskipTests clean package
+    #sh ${SPARK_HOME}/build/mvn -Pkubernetes -Pscala-${scala_version} -DskipTests clean package
     touch /opt/mahout/RELEASE && \
     # below is for nodes.  for the moment lets get a master up
     # rm /bin/sh && \
@@ -59,22 +63,22 @@ RUN set -ex && \
     # echo "auth required pam_wheel.so use_uid" >> /etc/pam.d/su && \
     # chgrp root /etc/passwd && chmod ug+rw /etc/passwd
 
-
-COPY lib /opt/mahout/lib
-COPY bin /opt/mahout/bin
-COPY resource-managers/kubernetes/docker/src/main/dockerfiles/entrypoint.sh /opt/
-COPY examples /opt/mahout/examples
-
-COPY spark-build/jars /opt/spark/jars
-COPY spark-build/bin /opt/spark/bin
-COPY spark-build/sbin /opt/spark/sbin
-COPY spark-build/kubernetes/tests /opt/spark/tests
-COPY spark-build/data /opt/spark/data
-
 ENV MAHOUT_HOME /opt/mahout
-ENV SPARK_HOME /opt/spark
-
+COPY lib ${MAHPOUT_HOME}/lib
+COPY bin ${MAHPOUT_HOME}/bin
+COPY resource-managers/kubernetes/docker/src/main/dockerfiles/entrypoint.sh ${MAHPOUT_HOME}
+COPY resource-managers/kubernetes/docker/src/main/dockerfiles/Dockerfile ${MAHPOUT_HOME}
+COPY examples ${MAHPOUT_HOME}/examples
 
+ENV SPARK_HOME /opt/spark
+COPY spark-build/jars ${SPARK_HOME}/jars
+COPY spark-build/bin ${SPARK_HOME}/bin
+COPY spark-build/sbin ${SPARK_HOME}/sbin
+COPY spark-build/kubernetes/tests ${SPARK_HOME}/tests
+COPY spark-build/data ${SPARK_HOME}/data
+
+ENV MAHOUT_CLASSPATH ${MAHOUT_HOME}/lib
+ENV SPARK_CLASSPATH ${SPARK_HOME}/jars
 
 WORKDIR /opt/mahout/work-dir
 RUN chmod g+w /opt/mahout/work-dir
diff --git a/engine/hdfs/pom.xml b/engine/hdfs/pom.xml
index 8de8296..1f62617 100644
--- a/engine/hdfs/pom.xml
+++ b/engine/hdfs/pom.xml
@@ -183,13 +183,13 @@
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>mahout-core_${scala.compat.version}</artifactId>
-      <version>14.1</version>
+      <version>14.2-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>mahout-core_${scala.compat.version}</artifactId>
-      <version>14.1</version>
+      <version>14.2-SNAPSHOT</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
diff --git a/engine/spark/pom.xml b/engine/spark/pom.xml
index f4350d2..1cd845b 100644
--- a/engine/spark/pom.xml
+++ b/engine/spark/pom.xml
@@ -252,7 +252,7 @@
     <dependency>
       <groupId>org.apache.mahout</groupId>
       <artifactId>mahout-core_${scala.compat.version}</artifactId>
-      <version>14.1</version>
+      <version>14.2-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -271,7 +271,7 @@
     <dependency>
       <groupId>org.apache.mahout</groupId>
       <artifactId>mahout-core_${scala.compat.version}</artifactId>
-      <version>14.1</version>
+      <version>14.2-SNAPSHOT</version>
       <classifier>tests</classifier>
       <scope>test</scope>
     </dependency>
diff --git a/entrypoint.sh b/entrypoint.sh
index 726b613..bb40767 100755
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -32,13 +32,14 @@ set -e
 # If there is no passwd entry for the container UID, attempt to create one
 if [ -z "$uidentry" ] ; then
     if [ -w /etc/passwd ] ; then
-        echo "$myuid:x:$myuid:$mygid:${SPARK_USER_NAME:-anonymous uid}:$SPARK_HOME:/bin/false" >> /etc/passwd
+        echo "$myuid:x:$myuid:$mygid:${SPARK_USER_NAME:-anonymous uid}:${SPARK_HOME}:/bin/false" >> /etc/passwd
     else
         echo "Container ENTRYPOINT failed to add passwd entry for anonymous UID"
     fi
 fi
 
-SPARK_CLASSPATH="$SPARK_CLASSPATH:${SPARK_HOME}/jars/*"
+###Todo: ensure that MAHOUT_HOME is properly established as an env var.
+SPARK_CLASSPATH="$SPARK_CLASSPATH:${SPARK_HOME}/jars/*:${$MAHOUT_HOME}/lib/*"
 env | grep SPARK_JAVA_OPT_ | sort -t_ -k4 -n | sed 's/[^=]*=\(.*\)/\1/g' > /tmp/java_opts.txt
 readarray -t SPARK_EXECUTOR_JAVA_OPTS < /tmp/java_opts.txt
 
@@ -58,8 +59,8 @@ case "$1" in
     CMD=(
       "$SPARK_HOME/bin/spark-submit"
       --conf "spark.driver.bindAddress=$SPARK_DRIVER_BIND_ADDRESS"
-      -conf spark.executor.extraLibraryPath=\
-        "$MAHOUT_HOME/lib/mahout-spark_*-dependency-reduced.jar"
+      --conf "spark.executor.extraLibraryPath"=\
+         "${MAHOUT_HOME}/lib/mahout-spark_*-dependency-reduced.jar"
       --deploy-mode client
       "$@"
     )
diff --git a/examples/pom.xml b/examples/pom.xml
index 92a1c0d..029de0f 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -27,8 +27,8 @@
     <relativePath>../pom.xml</relativePath>
   </parent>
 
-  <artifactId>examples</artifactId>
-  <name>Mahout Engine</name>
+  <artifactId>mahout-examples</artifactId>
+  <name>Mahout Eexamples</name>
   <description>Apache Mahout Examples.</description>
 
   <packaging>jar</packaging>
diff --git a/pom.xml b/pom.xml
index 25b9ca8..d7d4118 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,12 +120,15 @@
     <!-- `mvn site` throws a hissy fit searching no longer existing repos if this is not set false -->
     <dependency.locations.enabled>false</dependency.locations.enabled>
 
-    <!--hack to turn off linting og generated Javadocs.  this is an error in Oracle Java8 and should be fixed in java9
-     http://openjdk.java.net/jeps/212-->
+    <!--hack to turn off linting og generated Javadocs.
+      this is an error in Oracle Java8 and should be fixed in > java8
+     http://openjdk.java.net/jeps/212 -->
     <additionalparam>-Xdoclint:-html</additionalparam>
     <!--EndHack-->
+    <compile.flags></compile.flags>
+
+
 
-    <!--
     <maven.clover.multiproject>true</maven.clover.multiproject>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <msurefire.version>2.18.1</msurefire.version>
@@ -135,7 +138,7 @@
 
     <mscala.version>3.2.0</mscala.version>
     <hbase.version>1.0.0</hbase.version>
-
+<!--
 
     <scala.compat.version>2.10</scala.compat.version>
     <scala.version>2.10.4</scala.version>
@@ -452,31 +455,307 @@
           <configLocation>buildtools/src/main/resources/mahout-checkstyle.xml</configLocation>
         </configuration>
       </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>3.7.1</version>
-        <configuration>
-          <reportPlugins>
-            <plugin>
-              <artifactId>maven-project-info-reports-plugin</artifactId>
-              <!--<version>2.2</version>-->
-            </plugin>
-            <plugin>
-              <groupId>net.alchim31.maven</groupId>
-              <artifactId>scala-maven-plugin</artifactId>
-              <version>4.0.2</version>
+    <id>release.prepare</id>
+    <properties>
+      <skipTests>true</skipTests>
+      <pmd.skip>true</pmd.skip>
+      <checkstyle.skip>true</checkstyle.skip>
+    </properties>
+  </profile>
+  <profile>
+    <id>mahout-release</id>
+    <modules>
+      <module>core</module>
+      <module>engine</module>
+      <module>engine/hdfs</module>
+      <module>engine/spark</module>
+      <module>community</module>
+      <module>community/spark-cli-drivers</module>
+    </modules>
+    <properties>
+      <skipTests>true</skipTests>
+      <pmd.skip>true</pmd.skip>
+      <checkstyle.skip>true</checkstyle.skip>
+    </properties>
+  </profile>
+  <profile>
+    <id>sourcecheck</id>
+    <build>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <configuration>
+            <showDeprecation>true</showDeprecation>
+            <showWarnings>true</showWarnings>
+            <compilerArgument>${compile.flags}</compilerArgument>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-checkstyle-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>sourcecheck</id>
+              <phase>verify</phase>
+              <goals>
+                <goal>checkstyle</goal>
+              </goals>
+              <configuration>
+                <failsOnError>false</failsOnError>
+                <!-- classpath -->
+                <configLocation>mahout-checkstyle.xml</configLocation>
+                <consoleOutput>true</consoleOutput>
+                <linkXRef>false</linkXRef>
+                <sourceDirectory>${basedir}/src</sourceDirectory>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-pmd-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>sourcecheck</id>
+              <phase>verify</phase>
+              <goals>
+                <goal>check</goal>
+                <goal>cpd-check</goal>
+              </goals>
+              <configuration>
+                <failOnViolation>false</failOnViolation>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>findbugs-maven-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>sourcecheck</id>
+              <phase>verify</phase>
+              <goals>
+                <goal>check</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </build>
+  </profile>
+  <profile>
+    <id>set.eclipse.output</id>
+    <properties>
+      <eclipse.outputDirectory>${basedir}/eclipse-classes</eclipse.outputDirectory>
+    </properties>
+  </profile>
+  <profile>
+    <id>setup.eclipse</id>
+    <build>
+      <defaultGoal>process-test-sources</defaultGoal>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-eclipse-plugin</artifactId>
+          <version>2.10</version>
+          <executions>
+            <execution>
+              <id>setup.eclipse.project</id>
+              <phase>process-test-sources</phase>
+              <goals>
+                <goal>eclipse</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </build>
+  </profile>
+  <profile>
+    <id>ci</id>
+    <activation>
+      <activeByDefault>false</activeByDefault>
+      <property>
+        <name>env.JENKINS_URL</name>
+      </property>
+    </activation>
+    <build>
+      <plugins>
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>build-helper-maven-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>remove-old-mahout-artifacts</id>
+              <phase>prepare-package</phase>
+              <goals>
+                <goal>remove-project-artifact</goal>
+              </goals>
               <configuration>
-                <jvmArgs>
+                <failOnError>false</failOnError>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </build>
+  </profile>
+</profiles>
+<reporting>
+<plugins>
+  <!-- surefire runs unit tests -->
+  <plugin>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-surefire-report-plugin</artifactId>
+    <version>${msurefire.version}</version>
+  </plugin>
+  <!-- checkstyle -->
+  <plugin>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-checkstyle-plugin</artifactId>
+    <version>${mcheckstyle.version}</version>
+    <configuration>
+      <!-- classpath -->
+      <configLocation>mahout-checkstyle.xml</configLocation>
+      <consoleOutput>true</consoleOutput>
+    </configuration>
+  </plugin>
+  <!-- test coverage plugin -->
+  <plugin>
+    <groupId>com.atlassian.maven.plugins</groupId>
+    <artifactId>maven-clover2-plugin</artifactId>
+    <version>3.1.12</version>
+    <configuration>
+      <generateHistorical>true</generateHistorical>
+      <licenseLocation>buildtools/clover.license</licenseLocation>
+      <generatePdf>false</generatePdf>
+      <generateXml>true</generateXml>
+      <generateHtml>true</generateHtml>
+    </configuration>
+  </plugin>
+  <!-- generate java doc -->
+  <plugin>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-javadoc-plugin</artifactId>
+    <version>${mjavadoc.version}</version>
+  </plugin>
+  <!-- code duplication - copy and paste detection -->
+  <plugin>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-pmd-plugin</artifactId>
+    <version>${mpmd.version}</version>
+    <configuration>
+      <rulesets>
+        <!-- classpath -->
+        <ruleset>mahout-pmd-ruleset.xml</ruleset>
+      </rulesets>
+      <targetJdk>${maven.compiler.target}</targetJdk>
+      <linkXRef>false</linkXRef>
+      <includeTests>true</includeTests>
+      <verbose>true</verbose>
+    </configuration>
+  </plugin>
+  <!-- catch code tags -->
+  <plugin>
+    <groupId>org.codehaus.mojo</groupId>
+    <artifactId>taglist-maven-plugin</artifactId>
+    <version>2.4</version>
+    <configuration>
+      <tags>
+        <tag>TODO</tag>
+        <tag>todo</tag>
+      </tags>
+    </configuration>
+  </plugin>
+  <!-- findbugs -->
+  <plugin>
+    <groupId>org.codehaus.mojo</groupId>
+    <artifactId>findbugs-maven-plugin</artifactId>
+    <version>${mfindbugs.version}</version>
+    <configuration>
+      <xmlOutput>true</xmlOutput>
+      <threshold>Low</threshold>
+      <effort>Default</effort>
+      <!--visitors>FindDeadLocalStores,UnreadFields</visitors-->
+      <!--omitVisitors>FindDeadLocalStores,UnreadFields</omitVisitors-->
+      <debug>true</debug>
+      <relaxed>true</relaxed>
+      <!-- classpath -->
+      <excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>
+    </configuration>
+  </plugin>
+  <plugin>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-changes-plugin</artifactId>
+    <version>2.9</version>
+    <configuration>
+      <onlyCurrentVersion>true</onlyCurrentVersion>
+      <columnNames>Type,Key,Summary,Status,Resolution,Assignee</columnNames>
+      <sortColumnNames>Type,Key</sortColumnNames>
+    </configuration>
+    <reportSets>
+      <reportSet>
+        <reports>
+          <report>jira-report</report>
+        </reports>
+      </reportSet>
+    </reportSets>
+  </plugin>
+  <plugin>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-project-info-reports-plugin</artifactId>
+    <version>2.8</version>
+    <reportSets>
+      <reportSet>
+        <reports>
+          <report>index</report>
+          <report>dependencies</report>
+          <report>dependency-convergence</report>
+          <report>dependency-management</report>
+        </reports>
+      </reportSet>
+    </reportSets>
+  </plugin>
+  <plugin>
+    <groupId>org.codehaus.mojo</groupId>
+    <artifactId>taglist-maven-plugin</artifactId>
+    <version>2.4</version>
+  </plugin>
+
+  <plugin>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-site-plugin</artifactId>
+    <version>3.7.1</version>
+    <configuration>
+      <reportPlugins>
+        <plugin>
+          <artifactId>maven-project-info-reports-plugin</artifactId>
+          <!--<version>2.2</version>-->
+        </plugin>
+         <plugin>
+          <groupId>net.alchim31.maven</groupId>
+          <artifactId>scala-maven-plugin</artifactId>
+          <version>4.0.2</version>
+              <configuration>
+               <jvmArgs>
                   <jvmArg>-Xms64m</jvmArg>
                   <jvmArg>-Xmx1024m</jvmArg>
                 </jvmArgs>
               </configuration>
-            </plugin>
-          </reportPlugins>
+         </plugin>
+       </reportPlugins>
+     </configuration>
+    </plugin>
+    <plugin>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-checkstyle-plugin</artifactId>
+      <version>3.0.0</version>
+        <configuration>
+          <configLocation>buildtools/src/main/resources/mahout-checkstyle.xml</configLocation>
         </configuration>
-      </plugin>
+       </plugin>
     </plugins>
   </reporting>
 </project>
diff --git a/src/main/assembly/bin.xml b/src/main/assembly/bin.xml
new file mode 100644
index 0000000..924f946
--- /dev/null
+++ b/src/main/assembly/bin.xml
@@ -0,0 +1,97 @@
+
+
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
+<id>bin</id>
+
+<formats>
+    <format>tar.gz</format>
+    <format>tar.bz2</format>
+    <format>zip</format>
+</formats>
+
+<fileSets>
+
+    <!-- copy files from the base directory, including the base
+    Dockerfile, which prepares builds Mahout and downloads builds and installs
+    the appropriate spark version Spark. No version of Hadoop is currently included.-->
+
+    <fileSet>
+        <directory>${project.base.directory}</directory>
+        <outputDirectory>${project.base.directory}</outputDirectory>
+        <includes>
+            <include>**README*</include>
+            <include>**LICENSE*</include>
+            <include>**NOTICE*</include>
+            <include>**pom.xml*</include>
+            <include>**Dockerfile*</include>
+            <include>**entrypoint.sh*</include>
+        </includes>
+    </fileSet>
+    <fileSet>
+        <directory>${project.base.directory}/lib</directory>
+        <outputDirectory>${project.base.directory}/lib/</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <fileMode>0755</fileMode>
+        <directoryMode>0755</directoryMode>
+        <includes>
+           <include>*.jar</include>
+        </includes>
+    </fileSet>
+
+    <!-- copy aggregated documentation into docs-->
+    <fileSet>
+        <directory>${project.base.directory}/site</directory>
+        <outputDirectory>docs</outputDirectory>
+    </fileSet>
+
+    <!--copy bin/mahout.sh -->
+    <fileSet>
+        <directory>${project.base.directory}/bin</directory>
+        <fileMode>755</fileMode>
+        <directoryMode>755</directoryMode>
+        <outputDirectory>bin</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+    </fileSet>
+
+    <!-- copy and include the jars from e.g. $MAHOUT_HOME/engine/spark/target/-->
+    <!-- copy and include the jars from e.g. $MAHOUT_HOME/community/spark-cli-drivers/target/-->
+    <fileSet>
+        <directory>${project.base.directory}/**/**/target/</directory>
+        <outputDirectory>${project.base.directory}/lib</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <fileMode>0755</fileMode>
+        <directoryMode>0755</directoryMode>
+        <includes>
+            <include>*.jar</include>
+        </includes>
+    </fileSet>
+
+    <!-- copy and include the jars from e.g. $MAHOUT_HOME/core/target/-->
+    <fileSet>
+        <directory>${project.base.directory}/**/target/</directory>
+        <outputDirectory>${project.base.directory}/lib</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <fileMode>0755</fileMode>
+        <directoryMode>0755</directoryMode>
+        <includes>
+            <include>*.jar</include>
+        </includes>
+    </fileSet>
+    <fileSet>
+        <directory>${project.base.directory}/examples/bin</directory>
+        <outputDirectory>${project.base.directory}/examples/bin/</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <fileMode>0755</fileMode>
+        <directoryMode>0755</directoryMode>
+    </fileSet>
+    <fileSet>
+        <directory>${project.base.directory}/examples/bin/resources</directory>
+        <outputDirectory>${project.base.directory}/examples/bin/resources</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <fileMode>0755</fileMode>
+        <directoryMode>0755</directoryMode>
+    </fileSet>
+  </fileSets>
+</assembly>
+
diff --git a/src/main/assembly/src.xml b/src/main/assembly/src.xml
new file mode 100644
index 0000000..02c5dbc
--- /dev/null
+++ b/src/main/assembly/src.xml
@@ -0,0 +1,79 @@
+<?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.
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+    <id>src</id>
+    <formats>
+      <format>zip</format>
+      <format>tar.gz</format>
+      <format>tar.bz2</format>
+    </formats>
+    <fileSets>
+      <fileSet>
+        <directory>${project.base.directory}/</directory>
+        <outputDirectory>${project.base.directory}/</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <includes>
+          <include>**README*</include>
+          <include>**LICENSE*</include>
+          <include>**NOTICE*</include>
+          <include>**pom.xml</include>
+          <include>**src/**</include>
+          <include>src/conf/**</include>
+          <include>**/build.xml</include>
+          <include>**/*.properties</include>
+          <include>*Dockerfile*</include>
+          <include>*entrypoint.sh*</include>
+          <include>src/pom.xml</include>
+          <include>src/main/assembly/bin.xml</include>
+          <include>src/main/assembly/src.xml</include>
+        </includes>
+        <excludes>
+          <exclude>**/target/**</exclude>
+        </excludes>
+      </fileSet>
+      <fileSet>
+        <directory>${project.base.directory}/bin</directory>
+        <outputDirectory>bin</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <fileMode>0755</fileMode>
+        <directoryMode>0755</directoryMode>
+      </fileSet>
+      <fileSet>
+        <directory>${project.base.directory}/examples/bin</directory>
+        <outputDirectory>examples/bin</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <fileMode>0755</fileMode>
+        <directoryMode>0755</directoryMode>
+        <excludes>
+          <exclude>work</exclude>
+          <exclude>work/**</exclude>
+        </excludes>
+      </fileSet>
+      <fileSet>
+        <directory>${project.base.directory}/examples/bin/resources</directory>
+        <outputDirectory>examples/bin</outputDirectory>
+        <useDefaultExcludes>true</useDefaultExcludes>
+        <fileMode>0755</fileMode>
+        <directoryMode>0755</directoryMode>
+        <excludes>
+          <exclude>work</exclude>
+          <exclude>work/**</exclude>
+        </excludes>
+      </fileSet>
+    </fileSets>
+</assembly>
diff --git a/src/pom.xml b/src/pom.xml
new file mode 100644
index 0000000..81f82d7
--- /dev/null
+++ b/src/pom.xml
@@ -0,0 +1,180 @@
+<?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>
+        <groupId>org.apache.mahout</groupId>
+        <artifactId>mahout</artifactId>
+        <version>14.1-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+    <artifactId>apache-mahout-distribution</artifactId>
+    <name>Mahout Release Package</name>
+    <description>Distribution Package</description>
+    <packaging>pom</packaging>
+    <properties>
+        <mahout.skip.distribution>true</mahout.skip.distribution>
+    </properties>
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>bin-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <skipAssembly>${mahout.skip.distribution}</skipAssembly>
+                            <descriptors>
+                                <descriptor>src/main/assembly/bin.xml</descriptor>
+                            </descriptors>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                            <appendAssemblyId>false</appendAssemblyId>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>src-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <skipAssembly>${mahout.skip.distribution}</skipAssembly>
+                            <descriptors>
+                                <descriptor>src/main/assembly/src.xml</descriptor>
+                            </descriptors>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                            <appendAssemblyId>true</appendAssemblyId>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+
+        <profile>
+            <id>mahout-release</id>
+            <properties>
+                <mahout.skip.distribution>false</mahout.skip.distribution>
+            </properties>
+        </profile>
+        <profile>
+            <id>viennacl</id>
+            <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-spark_${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-cli-drivers_${scala.compat.version}</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.mahout</groupId>
+                    <artifactId>mahout-native-viennacl-omp_${scala.compat.version}</artifactId>
+                    <version>${project.version}</version>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.mahout</groupId>
+                    <artifactId>mahout-native-viennacl_${scala.compat.version}</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.mahout</groupId>
+                    <artifactId>mahout-native-viennacl-omp_${scala.compat.version}</artifactId>
+                    <version>${project.version}</version>
+                </dependency>
+            </dependencies>
+        </profile>
+        <profile>
+            <id>viennacl-omp</id>
+            <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-spark_${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-cli-drivers_${scala.compat.version}</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.mahout</groupId>
+                    <artifactId>mahout-native-viennacl-omp_${scala.compat.version}</artifactId>
+                    <version>${project.version}</version>
+                </dependency>
+
+            </dependencies>
+        </profile>
+    </profiles>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-math</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-integration</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-hdfs</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-mr</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-examples</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-spark_${scala.compat.version}</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.mahout</groupId>
+            <artifactId>mahout-math-scala_${scala.compat.version}</artifactId>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file