<?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>
    <groupId>org.apache.mahout</groupId>
    <artifactId>mahout</artifactId>
    <version>0.4</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, classfication 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 exisiting 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>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>
    <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>
    <properties>
        <junit.version>4.7</junit.version>
        <lucene.version>3.0.2</lucene.version>
        <hadoop.version>0.20.2</hadoop.version>
        <maven.clover.multiproject>true</maven.clover.multiproject>
        <collections.version>1.0</collections.version>
    </properties>
    <repositories>
        <repository>
            <id>maven2-repository.maven.org</id>
            <name>Maven.org Repository for Maven</name>
            <url>http://repo1.maven.org/maven2</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>maven2-repository.dev.java.net</id>
            <name>Java.net Repository for Maven</name>
            <url>http://download.java.net/maven/2</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>Apache snapshots</id>
            <url>http://people.apache.org/maven-snapshot-repository</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
        <repository>
            <id>Apache Releases</id>
            <url>https://repository.apache.org/content/repositories/releases</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <issueManagement>
        <system>Jira</system>
        <url>https://issues.apache.org/jira/browse/MAHOUT</url>
    </issueManagement>
    <dependencyManagement>
        <dependencies>
            <dependency>
              <groupId>org.apache.mahout</groupId>
              <artifactId>mahout-collections</artifactId>
              <version>${collections.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-analyzers</artifactId>
                <version>${lucene.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-core</artifactId>
                <version>${lucene.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymock</artifactId>
                <version>2.5.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymockclassextension</artifactId>
                <version>2.5.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-core</artifactId>
                <version>${hadoop.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>net.sf.kosmosfs</groupId>
                        <artifactId>kfs</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>jetty</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>jetty-util</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>hsqldb</groupId>
                        <artifactId>hsqldb</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-el</groupId>
                        <artifactId>commons-el</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>oro</groupId>
                        <artifactId>oro</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>jsp-2.1</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>jsp-api-2.1</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>servlet-api-2.5</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>commons-net</groupId>
                        <artifactId>commons-net</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>tomcat</groupId>
                        <artifactId>jasper-runtime</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>tomcat</groupId>
                        <artifactId>jasper-compiler</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>xmlenc</groupId>
                        <artifactId>xmlenc</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.java.dev.jets3t</groupId>
                        <artifactId>jets3t</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.jdt</groupId>
                        <artifactId>core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <defaultGoal>install</defaultGoal>
        <pluginManagement>
            <plugins>
	      <plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-source-plugin</artifactId>
		<version>2.1.2</version>
	      </plugin>
	      <plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-javadoc-plugin</artifactId>
		<version>2.7</version>
  	      </plugin>
               <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
                 <version>1.6</version>
               </plugin>
               <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <version>2.2</version>
               </plugin>
               <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
                 <version>2.3.1</version>
                </plugin>
               <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-install-plugin</artifactId>
                 <version>2.3.1</version>
                </plugin>
                <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-resources-plugin</artifactId>
                 <version>2.4.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-eclipse-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
                        <outputDirectory>${eclipse.outputDirectory}</outputDirectory>
                        <buildcommands>
                            <java.lang.String>org.eclipse.jdt.core.javabuilder</java.lang.String>
                            <java.lang.String>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</java.lang.String>
                            <java.lang.String>net.sourceforge.pmd.eclipse.plugin.pmdBuilder</java.lang.String>
                        </buildcommands>
                        <projectnatures>
                            <nature>org.eclipse.jdt.core.javanature</nature>
                            <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
                            <nature>net.sourceforge.pmd.eclipse.plugin.pmdNature</nature>
                        </projectnatures>
                        <additionalConfig>
                            <file>
                                <name>.checkstyle</name>
                                <location>/mahout-eclipse-checkstyle</location>
                            </file>
                            <file>
                                <name>.pmd</name>
                                <location>/mahout-eclipse-pmd</location>
                            </file>
                            <file>
                                <name>.ruleset</name>
                                <location>/mahout-pmd-ruleset.xml</location>
                            </file>
                        </additionalConfig>
                    </configuration>
                    <!-- the 'location' elements above refer to classpath -->
                    <dependencies>
                      <dependency>
                        <groupId>org.apache.mahout</groupId>
                        <artifactId>mahout-eclipse-support</artifactId>
                        <version>${project.version}</version>
                      </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.1</version>
                    <configuration>
                        <useReleaseProfile>true</useReleaseProfile>
                        <releaseProfiles>release,mahout_release</releaseProfiles>
                        <remoteTagging>true</remoteTagging>
                        <goals>deploy</goals>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <allowTimestampedSnapshots>true</allowTimestampedSnapshots>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <source>1.6</source>
                        <target>1.6</target>
                        <optimize>true</optimize>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>2.6</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.mahout</groupId>
                            <artifactId>mahout-buildtools</artifactId>
                            <version>${project.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
		    <!--
                    <executions>
                        <execution>
                            <id>validate</id>
                            <phase>validate</phase>
                            <configuration>
                                <configLocation>../maven/src/main/resources/mahout-checkstyle.xml</configLocation>
                                <consoleOutput>true</consoleOutput>
                                <failsOnError>false</failsOnError>
                                <linkXRef>false</linkXRef>
                                <sourceDirectory>${basedir}/src</sourceDirectory>
                            </configuration>
                            <goals>
                                <goal>checkstyle</goal>
                            </goals>
                        </execution>
                    </executions>
		    -->
                </plugin>
                <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-pmd-plugin</artifactId>
                  <version>2.5</version>
                  <dependencies>
                    <dependency>
                      <groupId>org.apache.mahout</groupId>
                      <artifactId>mahout-buildtools</artifactId>
                      <version>${project.version}</version>
                    </dependency>
                  </dependencies>
                  <configuration>
                    <rulesets>
                      <!-- classpath -->
                      <ruleset>../eclipse/src/main/resources/mahout-pmd-ruleset.xml</ruleset>
                    </rulesets>
                    <sourceEncoding>UTF-8</sourceEncoding>
                    <targetJdk>1.5</targetJdk>
                    <linkXRef>false</linkXRef>
                    <includeTests>true</includeTests>
                    <verbose>true</verbose>
                  </configuration>
		  <!--
                  <executions>
                    <execution>
                      <id>validate</id>
                      <phase>validate</phase>
                      <goals>
                        <goal>check</goal>
                      </goals>
                    </execution>
                  </executions>
		  -->
                </plugin>
                <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <version>2.5</version>
	      </plugin>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-remote-resources-plugin</artifactId>
                  <version>1.1</version>
		  <configuration>
                    <appendedResourcesDirectory>./src/main/appended-resources</appendedResourcesDirectory>
                    <resourceBundles>
                        <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
                    </resourceBundles>
                    <supplementalModels>
                        <supplementalModel>supplemental-models.xml</supplementalModel>
                    </supplementalModels>
                </configuration>
	      </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <forkMode>once</forkMode>
                    <argLine>-Xms256m -Xmx512m</argLine>
                    <testFailureIgnore>false</testFailureIgnore>
                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <inherited>false</inherited>
                <configuration>
                    <resourceBundles>
                        <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
                    </resourceBundles>
                    <supplementalModels>
                        <supplementalModel>supplemental-models.xml</supplementalModel>
                    </supplementalModels>
                </configuration>
            </plugin>
	    <plugin>
	    	<groupId>com.atlassian.maven.plugins</groupId>
	    	<artifactId>maven-clover2-plugin</artifactId>
	    	<version>2.6.3</version>
	    </plugin>
        </plugins>
    </build>
    <modules>
        <module>buildtools</module>
        <module>eclipse</module>
        <module>math</module>
        <module>core</module>
        <module>taste-web</module>
        <module>examples</module>
        <module>utils</module>
    </modules>
    <profiles>
        <profile>
            <id>fastinstall</id>
            <properties>
                <maven.test.skip>true</maven.test.skip>
                <pmd.skip>true</pmd.skip>
                <checkstyle.skip>true</checkstyle.skip>
            </properties>
        </profile>
        <profile>
            <id>nochecks</id>
            <properties>
                <pmd.skip>true</pmd.skip>
                <checkstyle.skip>true</checkstyle.skip>
            </properties>
        </profile>
        <profile>
            <id>release</id>
            <properties>
                <maven.test.skip>true</maven.test.skip>
                <pmd.skip>true</pmd.skip>
                <checkstyle.skip>true</checkstyle.skip>
            </properties>
            <modules>
                <module>distribution</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <inherited>true</inherited>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <inherited>true</inherited>
                        <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>
                    <plugin>
                        <inherited>true</inherited>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
			<version>1.1</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </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>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-pmd-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>set.eclipse.output</id>
            <properties>
                <eclipse.outputDirectory>${basedir}/eclipse-classes</eclipse.outputDirectory>
            </properties>
        </profile>
	<profile>
	  <id>everything</id>
	  <modules>
	    <module>distribution</module>
	  </modules>
	</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.8</version>
                        <executions>
                            <execution>
                                <id>setup.eclipse.project</id>
                                <phase>process-test-sources</phase>
                                <goals>
                                    <goal>eclipse</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    <scm>
        <connection>scm:svn:https://svn.apache.org/repos/asf/mahout/tags/mahout-0.4</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/mahout/tags/mahout-0.4</developerConnection>
        <url>https://svn.apache.org/repos/asf/mahout/tags/mahout-0.4</url>
    </scm>
    <distributionManagement>
        <repository>
            <id>apache.releases.https</id>
            <name>Apache Release Distribution Repository</name>
            <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>
        </repository>
        <snapshotRepository>
            <id>apache.snapshots.https</id>
            <name>Apache Development Snapshot Repository</name>
            <url>https://repository.apache.org/content/repositories/snapshots</url>
            <uniqueVersion>false</uniqueVersion>
        </snapshotRepository>
        <site>
            <id>Website</id>
            <url>scp://people.apache.org/home/isabel/public_html/mahout_site</url>
        </site>
    </distributionManagement>
    <reporting>
        <plugins>
            <!-- surefire runs unit tests -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
		<version>2.6</version>
            </plugin>
	    <!-- checkstyle -->
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
	        <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <configLocation>${project.build.directory}/../../eclipse/src/main/resources/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>2.6.3</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>2.7</version>
            </plugin>
            <!-- code duplication - copy and paste detection -->
            <plugin>
	        <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
		<version>2.5</version>
                <configuration>
                    <rulesets>
                        <ruleset>../eclipse/src/main/resources/mahout-pmd-ruleset.xml</ruleset>
                    </rulesets>
                    <sourceEncoding>UTF-8</sourceEncoding>
                    <targetJdk>1.5</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>2.3.1</version>
                <configuration>
                    <xmlOutput>true</xmlOutput>
                    <xmlOutputDirectory>target/findbugs</xmlOutputDirectory>
                    <outputDirectory>target/site/findbugs</outputDirectory>
                    <threshold>Low</threshold>
                    <effort>Default</effort>
                    <!--visitors>FindDeadLocalStores,UnreadFields</visitors-->
                    <!--omitVisitors>FindDeadLocalStores,UnreadFields</omitVisitors-->
                    <debug>true</debug>
                    <relaxed>true</relaxed>
                    <excludeFilterFile>../eclipse/src/main/resources/findbugs-exclude.xml</excludeFilterFile>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changes-plugin</artifactId>
                <version>2.3</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>jira-report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
	    <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-surefire-report-plugin</artifactId>
             <version>2.6</version>
	    </plugin>
	    <plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-javadoc-plugin</artifactId>
		<version>2.7</version>
  	    </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.2</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.apache.maven.plugins</groupId>
	      <artifactId>maven-pmd-plugin</artifactId>
	      <version>2.5</version>
	    </plugin>
	    <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>taglist-maven-plugin</artifactId>
              <version>2.4</version>
	    </plugin>
        </plugins>
    </reporting>
</project>
