<?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>17</version>
  </parent>
  <groupId>org.apache.rat</groupId>
  <artifactId>apache-rat-project</artifactId>
  <version>0.12-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Apache Creadur Rat</name>
  <url>http://creadur.apache.org/rat/</url>
  <description>
Apache Rat is a release audit tool. It improves accuracy and efficiency when checking
releases. It is heuristic in nature: making guesses about possible problems. It
will produce false positives and cannot find every possible issue with a release.
Its reports require interpretation.

In response to demands from project quality tool developers, Rat is available as a
library suitable for inclusion in tools. This POM describes that library.
Note that binary compatibility is not guaranteed between 0.x releases.

Apache Rat is developed by the Apache Creadur project, a language and build
agnostic home for software distribution comprehension and audit tools.
  </description>
  <inceptionYear>2006</inceptionYear>
  <prerequisites>
    <!-- This is the version of Maven required to build Rat -->
    <maven>3.0.5</maven>
  </prerequisites>
  <properties>
    <javaVersion>1.5</javaVersion>
    <maven.compiler.source>${javaVersion}</maven.compiler.source>
    <maven.compiler.target>${javaVersion}</maven.compiler.target>
    <!-- This is the version of Maven required to use the Rat Maven Plugin -->
    <mavenVersion>2.2.1</mavenVersion>
    <previousRatVersion>0.11</previousRatVersion>
    <!--
    Publication to the website is a two phase operation:

     1. Deploy to local stage: mvn site-deploy
     2. Publish to Apache CMS: mvn scm-publish:publish-scm

    This will only work when the origin for scm-publish:publish-scm
    is the target for site:deploy.

    SO MAKE SURE THAT THE FOLLOWING PROPERTIES RESOLVE TO THE SAME
    DIRECTORY:

     * scmpublish.content
     * rat.site.url

    -->
    <rat.LocalSiteStaging>stage</rat.LocalSiteStaging>
    <scmpublish.content>${rat.LocalSiteStaging}</scmpublish.content>
    <rat.site.url>file:${rat.LocalSiteStaging}</rat.site.url>
    <rat.site.name>Apache Rat Website</rat.site.name>
    <rat.site.id>org.apache.rat.site</rat.site.id>
    <creadur.jira.id>RAT</creadur.jira.id>
    <!-- maven plugin versions -->
    <mavenPluginPluginVersion>3.3</mavenPluginPluginVersion>
    <mavenChangesVersion>2.11</mavenChangesVersion>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-tasks</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.2</version>
      </dependency>
      <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <!-- Later versions require Java 1.6+ -->
        <version>2.2</version>
      </dependency>
      <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <!--  commons-lang3 versions require Java 1.6+ -->
        <version>2.6</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>1.10</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>1.10.19</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.10.19</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.2.1</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>1.9.6</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-antunit</artifactId>
        <version>1.3</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-testutil</artifactId>
        <version>1.9.6</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <reporting>
    <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement>
         in the <build> section above, so we have to define the versions here. -->
    <plugins>
      <!-- org.apache.maven.plugins, alpha order by artifact id -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>${mavenChangesVersion}</version>
        <configuration>
          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>
          <columnNames>Fix Version,Key,Component,Summary,Type,Resolution,Status</columnNames>
          <!-- Sort cols in natural order when using JQL for JIRA 5.1 -->
          <sortColumnNames>Fix Version DESC,Type,Key DESC</sortColumnNames>
          <resolutionIds>Fixed</resolutionIds>
          <statusIds>Resolved,Closed</statusIds>
          <!-- Don't include sub-task -->
          <typeIds>Bug,New Feature,Task,Improvement,Wish,Test</typeIds>
          <!-- For JIRA >= 5.1 -->
          <useJql>true</useJql>
          <onlyCurrentVersion>${commons.changes.onlyCurrentVersion}</onlyCurrentVersion>
          <maxEntries>${commons.changes.maxEntries}</maxEntries>
          <runOnlyAtExecutionRoot>${commons.changes.runOnlyAtExecutionRoot}</runOnlyAtExecutionRoot>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>changes-report</report>
              <report>jira-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.10.3</version>
        <configuration>
          <tags>
            <tag>
              <name>TODO</name>
              <placement>X</placement>
              <head>To do:</head>
            </tag>
          </tags>
          <notimestamp>true</notimestamp>
        </configuration>
        <reportSets>
          <reportSet>
            <id>non-aggregate</id>
            <configuration>
            </configuration>
            <reports>
              <report>javadoc</report>
            </reports>
          </reportSet>
          <reportSet>
            <id>aggregate</id>
            <configuration>
            </configuration>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.4</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.1</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.7</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>dependencies</report>
              <report>project-team</report>
              <report>mailing-list</report>
              <report>issue-tracking</report>
              <report>cim</report>
              <!-- Do not enable the license report;
                   license links must only point to
                   http://www.apache.org/licenses/
              <report>license</report>
              -->
              <report>scm</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <!-- Must use previous version, to avoid a cyclic reference -->
        <version>${previousRatVersion}</version>
      </plugin>
    </plugins>
  </reporting>
  <build>
    <defaultGoal>clean install</defaultGoal>
    <pluginManagement>
      <!--
        This section is typically used to configure the versions of
        plugins that we use. Note, that we are inheriting from the
        parent POM, so we only have to configure version numbers,
        if ours is different.
      -->
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.7</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.ant</groupId>
              <artifactId>ant</artifactId>
              <version>1.9.6</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.2</version>
          <configuration>
            <source>${javaVersion}</source>
            <target>${javaVersion}</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.10.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.8</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <!-- Later versions require Java 1.6+ -->
          <version>3.1</version>
          <configuration>
            <targetJdk>${javaVersion}</targetJdk>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.4</version>
          <configuration>
            <relativizeDecorationLinks>false</relativizeDecorationLinks>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <!-- Must use previous version, to avoid a cyclic reference -->
          <version>${previousRatVersion}</version>
          <dependencies><!-- TODO remove exclusion when upgrading to new ASF parent or doxia release (RAT-158) -->
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-core</artifactId>
              <version>1.2</version>
              <exclusions>
                <exclusion>
                  <groupId>xerces</groupId>
                  <artifactId>xercesImpl</artifactId>
                </exclusion>
              </exclusions>
            </dependency>
          </dependencies>
          <configuration>
            <excludes>
              <!-- This file only describes how to build the project and it has no license header -->
              <exclude>BUILD.txt</exclude>
              <!-- rat:check does not seem to use exclusions from modules -->
              <exclude>apache-rat/README*.txt</exclude>
              <exclude>apache-rat-core/src/test/resources/**</exclude>
              <exclude>apache-rat*/target/**</exclude>
              <exclude>apache-rat-plugin/src/test/resources/**</exclude>
              <exclude>apache-rat-plugin/src/it/**</exclude>
              <exclude>apache-rat-tasks/src/test/resources/**</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-publish-plugin</artifactId>
          <version>1.0</version>
          <extensions>true</extensions>
          <configuration>
            <!-- svn location for publication -->
            <pubScmUrl>scm:svn:https://svn.apache.org/repos/asf/creadur/site/trunk/content/rat/</pubScmUrl>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.3</version>
          <configuration>
            <!-- Only prompt once for the release version -->
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <mavenExecutorId>forked-path</mavenExecutorId>
          </configuration>
        </plugin>
        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
        <plugin>
        	<groupId>org.eclipse.m2e</groupId>
        	<artifactId>lifecycle-mapping</artifactId>
        	<version>1.0.0</version>
        	<configuration>
        		<lifecycleMappingMetadata>
        			<pluginExecutions>
        				<pluginExecution>
        					<pluginExecutionFilter>
        						<groupId>org.apache.rat</groupId>
        						<artifactId>
        							apache-rat-plugin
        						</artifactId>
        						<versionRange>[0.11,)</versionRange>
        						<goals>
        							<goal>check</goal>
        						</goals>
        					</pluginExecutionFilter>
        					<action>
        						<ignore></ignore>
        					</action>
        				</pluginExecution>
        			</pluginExecutions>
        		</lifecycleMappingMetadata>
        	</configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>pre-site</phase>
            <id>copy-site-resources</id>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <copy file="RELEASE_NOTES.txt" todir="${project.build.directory}/site/" failonerror="false"/>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <!-- This checks the bytecode version of the dependencies transitively -->
            <id>enforce-bytecode-version</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <enforceBytecodeVersion>
                  <maxJdkVersion>${javaVersion}</maxJdkVersion>
                </enforceBytecodeVersion>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>1.0-beta-2</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.11</version>
        <dependencies>
          <!-- Upgrade ASM and support Java 8 bytecode -->
          <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-all</artifactId>
            <version>5.0.3</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <!-- This checks the source code of our project -->
            <!--
              Note that this cannot use our ${javaVersion} property, so it must
              be changed manually when we decide to move to a higher version of
              Java
            -->
            <id>check-java-1.5-compat</id>
            <phase>process-classes</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <signature>
                <groupId>org.codehaus.mojo.signature</groupId>
                <artifactId>java15</artifactId>
                <version>1.0</version>
              </signature>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <!-- Last version that is compatible with Maven 2 -->
        <version>1.0-beta-7</version>
      </extension>
    </extensions>
  </build>
  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/RAT</url>
  </issueManagement>
  <ciManagement>
    <system>Buildbot</system>
    <url>http://ci.apache.org/builders/rat_trunk</url>
    <!--  Jenkins builds are at:
    https://builds.apache.org/job/Creadur-Rat-ParentPom/ - build the parent pom for all RAT submodules
    https://builds.apache.org/job/Creadur-Rat/ - check Java5 compliance and run all tests
    https://builds.apache.org/job/Creadur-Rat-Site/ - generate mvn site
    https://builds.apache.org/job/Creadur-Rat-Latest-Jdk/ - run with Java8 and mvn3 latest
    https://builds.apache.org/job/Creadur-Rat-Site-Latest-Jdk/ - ensure that a site can be generated with mvn3 and Java8
     -->
  </ciManagement>
  <mailingLists>
    <mailingList>
      <name>Rat Development (Apache Creadur project)</name>
      <subscribe>dev-subscribe@creadur.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@creadur.apache.org</unsubscribe>
      <post>dev@creadur.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/creadur-dev/</archive>
    </mailingList>
    <mailingList>
      <name>Rat Commits (Apache Creadur project)</name>
      <subscribe>commits-subscribe@creadur.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@creadur.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/creadur-commits/</archive>
    </mailingList>
  </mailingLists>
  <developers>
    <developer>
      <id>bodewig</id>
      <name>Stefan Bodewig</name>
      <email>bodewig@apache.org</email>
    </developer>
    <developer>
      <id>rdonkin</id>
      <name>Robert Burrell Donkin</name>
      <email>rdonkin@apache.org</email>
    </developer>
    <developer>
      <id>jochen</id>
      <name>Jochen Wiedmann</name>
      <email>jochen@apache.org</email>
    </developer>
    <developer>
      <id>gmcdonald</id>
      <name>Gavin</name>
      <email>gmcdonald@apache.org</email>
    </developer>
    <developer>
      <id>brianf</id>
      <name>Brian Fox</name>
      <email>brianf@apache.org</email>
    </developer>
    <developer>
      <id>dennisl</id>
      <name>Dennis Lundberg</name>
      <email>dennisl@apache.org</email>
    </developer>
    <developer>
      <id>rgardler</id>
      <name>Ross Gardler</name>
      <email>rgardler@apache.org</email>
    </developer>
    <developer>
      <id>crossley</id>
      <name>David Crossley</name>
      <email>crossley@apache.org</email>
    </developer>
    <developer>
      <id>dblevins</id>
      <name>David Blevins</name>
      <email>dblevins@apache.org</email>
    </developer>
    <developer>
      <id>pottlinger</id>
      <name>Philipp Ottlinger</name>
      <email>pottlinger@apache.org</email>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <name>Jukka Zitting</name>
      <email>jukka@apache.org</email>
    </contributor>
    <contributor>
      <name>Todd Volkert</name>
      <email>tvolkert+apache@gmail.com</email>
    </contributor>
    <contributor>
      <name>Henri Yandell</name>
      <email>bayard@apache.org</email>
    </contributor>
    <contributor>
      <name>Guillaume Nodet</name>
      <email>gnodet@apache.org</email>
    </contributor>
    <contributor>
      <name>Karl Pauls</name>
      <email>pauls@apache.org</email>
    </contributor>
    <contributor>
      <name>Matthieu Riou</name>
      <email>mriou@apache.org</email>
    </contributor>
    <contributor>
      <name>Garrett Rooney</name>
      <email>rooneg@apache.org</email>
    </contributor>
    <contributor>
      <name>Paul Merlin</name>
      <email>paulmerlin@apache.org</email>
    </contributor>
  </contributors>
  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/creadur/rat/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/creadur/rat/trunk</developerConnection>
    <url>http://svn.apache.org/repos/asf/creadur/rat/trunk</url>
  </scm>
  <distributionManagement>
    <site>
      <id>${rat.site.id}</id>
      <name>${rat.site.name}</name>
      <url>${rat.site.url}</url>
    </site>
  </distributionManagement>
  <modules>
    <module>apache-rat-api</module>
    <module>apache-rat-core</module>
    <module>apache-rat-plugin</module>
    <module>apache-rat-tasks</module>
    <module>apache-rat</module>
  </modules>
  <licenses>
    <license>
      <name>Apache License, Version 2</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>An OSI approved open source license.</comments>
    </license>
  </licenses>
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org</url>
  </organization>
  <profiles>
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <!-- Skip the source-release artifact here; we create it under the CLI module -->
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <skipAssembly>true</skipAssembly>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
          Generate release notes in top-level directory from src/changes/changes.xml
          Usage:
          mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

          Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.

          Requires file src/changes/release-notes.vm.
       -->
      <id>release-notes</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-changes-plugin</artifactId>
            <version>${mavenChangesVersion}</version>
            <configuration>
              <template>release-notes.vm</template>
              <templateDirectory>src/changes</templateDirectory>
              <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
              <announcementDirectory>.</announcementDirectory>
              <announcementFile>RELEASE-NOTES.txt</announcementFile>
              <announceParameters>
                <releaseVersion>${mavenChangesVersion}</releaseVersion>
              </announceParameters>
            </configuration>
            <executions>
              <execution>
                <id>create-release-notes</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>announcement-generate</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
