<?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</groupId>
    <artifactId>apache</artifactId>
    <version>18</version>
  </parent>
  <groupId>org.apache.mahout</groupId>
  <artifactId>mahout</artifactId>

  <version>14.1-SNAPSHOT</version>

  <packaging>pom</packaging>
  <name>Apache Mahout</name>
  <url>http://mahout.apache.org</url>
  <inceptionYear>2008</inceptionYear>
  <description>Mahout's goal is to build scalable machine learning libraries. With scalable we mean: Scalable to
    reasonably large data sets. Our core algorithms for clustering, classification and batch based collaborative
    filtering are implemented on top of Apache Hadoop using the map/reduce paradigm. However we do not restrict
    contributions to Hadoop based implementations: Contributions that run on a single node or on a non-Hadoop
    cluster are welcome as well. The core libraries are highly optimized to allow for good performance also for
    non-distributed algorithms. Scalable to support your business case. Mahout is distributed under a commercially
    friendly Apache Software license. Scalable community. The goal of Mahout is to build a vibrant, responsive,
    diverse community to facilitate discussions not only on the project itself but also on potential use cases. Come
    to the mailing lists to find out more. Currently Mahout supports mainly four use cases: Recommendation mining
    takes users' behavior and from that tries to find items users might like. Clustering takes e.g. text documents
    and groups them into groups of topically related documents. Classification learns from existing categorized
    documents what documents of a specific category look like and is able to assign unlabelled documents to the
    (hopefully) correct category. Frequent itemset mining takes a set of item groups (terms in a query session,
    shopping cart content) and identifies, which individual items usually appear together.
  </description>
  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://www.apache.org/</url>
  </organization>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <mailingLists>
    <mailingList>
      <name>User list</name>
      <subscribe>user-subscribe@mahout.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@mahout.apache.org</unsubscribe>
      <post>user@mahout.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/mahout-user/</archive>
      <otherArchives>
        <otherArchive>http://mahout.apache.org/mail/user/</otherArchive>
        <otherArchive>http://mahout.markmail.org/</otherArchive>
        <otherArchive>http://www.nabble.com/Mahout-User-List-f32042.html</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Developers List</name>
      <subscribe>dev-subscribe@mahout.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@mahout.apache.org</unsubscribe>
      <post>mahout-dev@mahout.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/mahout-dev/</archive>
      <otherArchives>
        <otherArchive>http://mahout.apache.org/mail/dev/</otherArchive>
        <otherArchive>http://mahout.markmail.org/</otherArchive>
        <otherArchive>http://www.nabble.com/Mahout-Developer-List-f32041.html</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Commit notifications</name>
      <subscribe>commits-subscribe@mahout.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@mahout.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/mahout-commits/</archive>
      <otherArchives>
        <otherArchive>http://mahout.apache.org/mail/commits/</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>

  <!-- Required for Release Plugin -->
    <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>

  <properties>
    <apache-rat.plugin.version>0.13</apache-rat.plugin.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <mjavadoc.version>2.10.3</mjavadoc.version>
    <slf4j.version>1.7.22</slf4j.version>
    <scala.version>2.11.8</scala.version>
    <scala.compat.version>2.11</scala.compat.version>
    <source.plugin.version>3.0.1</source.plugin.version>
    <spark.version>2.4.3</spark.version>
    <spark.compat.version>2.4</spark.compat.version>
    <depgraph.plugin.version>3.3.0</depgraph.plugin.version>
    <mahout.skip.distribution>true</mahout.skip.distribution>
    <!-- `mvn site` throws a hissy fit searching no longer existing repos if this is not set false -->
    <dependency.locations.enabled>false</dependency.locations.enabled>
    <mahout.skip.distribution>true</mahout.skip.distribution>
    <release.candidate>RC4</release.candidate>
    <!--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 />



    <maven.clover.multiproject>true</maven.clover.multiproject>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <msurefire.version>2.18.1</msurefire.version>
    <mpmd.version>3.4</mpmd.version>
    <mcheckstyle.version>2.15</mcheckstyle.version>
    <mfindbugs.version>3.0.1</mfindbugs.version>

    <mscala.version>3.2.0</mscala.version>
    <hbase.version>1.0.0</hbase.version>
    <hadoop.version>2.4.1</hadoop.version>
    <build.plugins.plugin.version>3.0.0</build.plugins.plugin.version>
    <scalatest.maven.plugin.version>2.0.0</scalatest.maven.plugin.version>
    <mahout.collection.codegen.plugin.version>1.0</mahout.collection.codegen.plugin.version>
    <!--
        <flink.version>1.1.4</flink.version>
        <h2o.version>0.1.25</h2o.version>
        <jackson.version>2.7.4</jackson.version>
        <hadoop.classifier>hadoop2</hadoop.classifier>
        -->
  </properties>
  <issueManagement>
    <system>Jira</system>
    <url>https://issues.apache.org/jira/browse/MAHOUT</url>
  </issueManagement>

  <repositories>
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>https://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>

  </repositories>

  <modules>
    <module>core</module>
    <module>engine</module>
    <module>engine/spark</module>
    <module>engine/hdfs</module>
    <module>community</module>
    <module>community/spark-cli-drivers</module>
    <module>distribution</module>
  </modules>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>14.0.1</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-math3</artifactId>
        <version>3.2</version>
      </dependency>

      <!-- scala stuff -->
      <!-- set the scala version here only -->
      <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_${scala.compat.version}</artifactId>
        <version>3.0.5</version>
      </dependency>

      <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-reflect</artifactId>
        <version>${scala.version}</version>
      </dependency>

      <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>${scala.version}</version>
      </dependency>

      <!-- TODO Move to ONE logging framework... -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>

      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
      </dependency>

      <!-- used in Core -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
      </dependency>
<!--
      <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
&lt;!&ndash;
        <version>3.1.1</version>
&ndash;&gt;
        <type>maven-plugin</type>
      </dependency>-->

    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <!-- encoding, source and target are explicitly defined until MNGECLIPSE-966 is fixed -->
          <encoding>${project.build.sourceEncoding}</encoding>
          <source>${maven.compiler.source}</source>
          <target>${maven.compiler.target}</target>
          <optimize>true</optimize>
        </configuration>
      </plugin>
<!--
      <plugin>&ndash;&gt;
-->
     <!-- <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-release-plugin</artifactId>
        <version>2.5.2</version>
        <configuration>
&lt;!&ndash;
          <preparationGoals>clean package install</preparationGoals>
&ndash;&gt;
          <useReleaseProfile>true</useReleaseProfile>
          <releaseProfiles>apache-release</releaseProfiles>
          <goals>deploy</goals>
          <autoVersionSubmodules>true</autoVersionSubmodules>
          <arguments>${arguments}</arguments>
        </configuration>
        </plugin>
      &lt;!&ndash; generate java-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${mjavadoc.version}</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>

        </executions>
      </plugin>


      <!-- Create Scala Docs -->
      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>3.4.4</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <phase>package</phase>
            <goals>
              <goal>doc-jar</goal>
            </goals>
          </execution>
        </executions>

      </plugin>

    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>${apache-rat.plugin.version}</version>
          <executions>
            <execution>
              <phase>validate</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <licenses>
              <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
                <patterns>
                  <note>CERN license for Colt -- basically only requires attribution</note>
                  <pattern>1999 CERN - European Organization for Nuclear Research</pattern>
                </patterns>
              </license>
              <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
                <patterns>
                  <pattern>public domain</pattern>
                </patterns>
              </license>
            </licenses>
            <excludes>
              <exclude>**/*.conf</exclude>
              <exclude>**/*.iml</exclude>
              <exclude>**/*.md</exclude>
              <exclude>**/*.props</exclude>
              <exclude>**/gen/**</exclude>
              <exclude>**/resources/**</exclude>
              <exclude>**/images/**</exclude>
              <exclude>**/target/**</exclude>
              <exclude>**/testdata/**</exclude>
              <exclude>**/.idea/**</exclude>
              <exclude>**/package-info.java</exclude>
              <exclude>**/.git/**</exclude>
              <exclude>**/.classpath</exclude>
              <exclude>**/.project</exclude>
              <exclude>**/.settings/**</exclude>
              <exclude>**/*.patch</exclude>
              <exclude>website/**</exclude>
              <exclude>.github/*</exclude>
              <exclude>**/*.properties</exclude>
            </excludes>
            <excludeSubProjects>false</excludeSubProjects>
          </configuration>
        </plugin>

        <!-- delete jars on clean in top directory, which is lib/ -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
          <configuration>
            <filesets>
              <fileset>
                <directory>lib/</directory>
                <includes>
                  <include>*.jar</include>
                </includes>
                <followSymlinks>false</followSymlinks>
              </fileset>
              <fileset>
                <directory>doc/</directory>
                <includes>
                  <include>*.jar</include>
                </includes>
                <followSymlinks>false</followSymlinks>
              </fileset>
            </filesets>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.4</version>
          <executions>
            <execution>
              <id>enforce-versions</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireJavaVersion>
                    <version>[1.8,)</version>
                  </requireJavaVersion>
                  <requireMavenVersion>
                    <version>[3.3.9,)</version>
                  </requireMavenVersion>
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <forkCount>2</forkCount>
            <reuseForks>false</reuseForks>
            <argLine>-Xmx768m -Djava.security.manager
              -Djava.security.policy=${project.build.directory}/../../buildtools/src/test/resources/java.policy</argLine>
            <argLine>-Djava.security.auth.login.config=${project.build.directory}/../../buildtools/src/test/resources/jaas.config</argLine>
            <testFailureIgnore>false</testFailureIgnore>
            <redirectTestOutputToFile>true</redirectTestOutputToFile>
            <systemPropertyVariables>
              <mahout.test.directory>${project.build.directory}</mahout.test.directory>
            </systemPropertyVariables>
          </configuration>
        </plugin>

      </plugins>
    </pluginManagement>

  </build>

  <profiles>
    <profile>
    <id>release.prepare</id>
    <properties>
      <skipTests>true</skipTests>
      <pmd.skip>true</pmd.skip>
      <checkstyle.skip>true</checkstyle.skip>
      <skipAssembly>true</skipAssembly>
    </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>distribution/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>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>
                <failOnError>false</failOnError>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <inherited>true</inherited>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
          <configuration>
            <altSnapshotDeploymentRepository>apache.snapshots.https</altSnapshotDeploymentRepository>
          </configuration>
          <executions>
            <execution>
              <id>apache.snapshots.https</id> <!-- from jenkins nighties we deploy to snapshots -->
              <phase>deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
  </profile>

  <profile>
    <id>apache-release</id>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.3</version>
          <configuration>
            <useReleaseProfile>true</useReleaseProfile>
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <preparationGoals>clean package install</preparationGoals>
            <releaseProfiles>
              <releaseProfile>apache.releases.https</releaseProfile>
            </releaseProfiles>
              <goals>
                  <goal>deploy</goal>
              </goals>
            <arguments>-Papache-release ${arguments}</arguments>
            <waitBeforeTagging>10</waitBeforeTagging>
          </configuration>

        </plugin>

        <!-- Override pare t pom's assembly plugin for -Papache-release we have our assembly code and descriptors
         in the /dist directory adhering to https://www.apache.org/dev/release-publishing#distribution  -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <dependencies>
            <dependency>
              <groupId>org.apache.apache.resources</groupId>
              <artifactId>apache-source-release-assembly-descriptor</artifactId>
              <version>1.0.6</version>
            </dependency>
          </dependencies>
          <executions>
            <execution>
              <id>source-release-assembly</id>
              <phase>none</phase>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <inherited>true</inherited>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
	      <version>2.8.2</version>
          <executions>
            <execution>
              <id>apache.releases.https</id>  <!-- release first to staging then to nexus -->
              <phase>deploy</phase>
              <goals>
                <goal>deploy</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- We want to sign the artifact, the POM, and all attached artifacts -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.6</version>
          <executions>
            <execution>
              <id>sign-release-artifacts</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <keyname>${gpg.keyname}</keyname>
                  <passphraseServerId>${gpg.passphrase}</passphraseServerId>
                </configuration>
              </execution>
            </executions>
          </plugin>

        <!--<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <executions>
            <execution>
              <id>sign-release-artifacts</id>
              <goals>
                <goal>sign</goal>
              </goals>
            </execution>
          </executions>
        </plugin>-->
      </plugins>
    </build>
  </profile>
  <!-- END SNIPPET: release-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>
    <!-- below was not parsing -->
    <!--<configuration>
      <reportPlugins>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          &lt;!&ndash;<version>2.2</version>&ndash;&gt;
        </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>
     </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>
    </plugins>
  </reporting>
</project>

