<?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.commons</groupId>
    <artifactId>commons-parent</artifactId>
    <version>28</version>
  </parent>

  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3</version>

  <name>Commons FileUpload</name>
  <description>
    The FileUpload component provides a simple yet flexible means of adding support for multipart
    file upload functionality to servlets and web applications.
  </description>
  <url>http://commons.apache.org/proper/commons-fileupload/</url>
  <inceptionYear>2002</inceptionYear>

  <developers>
    <developer>
      <name>Martin Cooper</name>
      <id>martinc</id>
      <email>martinc@apache.org</email>
      <organization>Yahoo!</organization>
    </developer>
    <developer>
      <name>dIon Gillard</name>
      <id>dion</id>
      <email>dion@apache.org</email>
      <organization>Multitask Consulting</organization>
    </developer>
    <developer>
      <name>John McNally</name>
      <id>jmcnally</id>
      <email>jmcnally@collab.net</email>
      <organization>CollabNet</organization>
    </developer>
    <developer>
      <name>Daniel Rall</name>
      <id>dlr</id>
      <email>dlr@finemaltcoding.com</email>
      <organization>CollabNet</organization>
    </developer>
    <developer>
      <name>Jason van Zyl</name>
      <id>jvanzyl</id>
      <email>jason@zenplex.com</email>
      <organization>Zenplex</organization>
    </developer>
    <developer>
      <name>Robert Burrell Donkin</name>
      <id>rdonkin</id>
      <email>rdonkin@apache.org</email>
      <organization />
    </developer>
    <developer>
      <name>Sean C. Sullivan</name>
      <id>sullis</id>
      <email>sean |at| seansullivan |dot| com</email>
      <organization />
    </developer>
    <developer>
      <name>Jochen Wiedmann</name>
      <id>jochen</id>
      <email>jochen.wiedmann@gmail.com</email>
      <organization />
    </developer>
    <developer>
      <name>Simone Tripodi</name>
      <id>simonetripodi</id>
      <email>simonetripodi@apache.org</email>
      <organization>Adobe</organization>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Aaron Freeman</name>
      <email>aaron@sendthisfile.com</email>
    </contributor>
    <contributor>
      <name>Daniel Fabian</name>
      <email>dfabian@google.com</email>
    </contributor>
    <contributor>
      <name>Gary Gregory</name>
      <email>ggregory@apache.org</email>
    </contributor>
    <contributor>
      <name>Jörg Heinicke</name>
      <email>joerg.heinicke@gmx.de</email>
    </contributor>
    <contributor>
      <name>Stepan Koltsov</name>
      <email>yozh@mx1.ru</email>
    </contributor>
    <contributor>
      <name>Michael Macaluso</name>
      <email>michael.public@wavecorp.com</email>
    </contributor>
    <contributor>
      <name>Amichai Rothman</name>
      <email>amichai2@amichais.net</email>
    </contributor>
    <contributor>
      <name>Alexander Sova</name>
      <email>bird@noir.crocodile.org</email>
    </contributor>
    <contributor>
      <name>Paul Spurr</name>
      <email>pspurr@gmail.com</email>
    </contributor>
    <contributor>
      <name>Thomas Vandahl</name>
      <email>tv@apache.org</email>
    </contributor>
    <contributor>
      <name>Henry Yandell</name>
      <email>bayard@apache.org</email>
    </contributor>
    <contributor>
      <name>Jan Novotný</name>
      <email>novotnaci@gmail.com</email>
    </contributor>
    <contributor>
      <name>frank</name>
      <email>mailsurfie@gmail.com</email>
    </contributor>
    <contributor>
      <name>Rafal Krzewski</name>
      <email>Rafal.Krzewski@e-point.pl</email>
    </contributor>
    <contributor>
      <name>Sean Legassick</name>
      <email>sean@informage.net</email>
    </contributor>
    <contributor>
      <name>Oleg Kalnichevski</name>
      <email>oleg@ural.ru</email>
    </contributor>
    <contributor>
      <name>David Sean Taylor</name>
      <email>taylor@apache.org</email>
    </contributor>
  </contributors>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/fileupload/tags/FILEUPLOAD_1_3_RC2</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/fileupload/tags/FILEUPLOAD_1_3_RC2</developerConnection>
    <url>http://svn.apache.org/viewvc/commons/proper/fileupload/tags/FILEUPLOAD_1_3_RC2</url>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>http://issues.apache.org/jira/browse/FILEUPLOAD</url>
  </issueManagement>

  <properties>
    <maven.compile.source>1.5</maven.compile.source>
    <maven.compile.target>1.5</maven.compile.target>
    <commons.componentid>fileupload</commons.componentid>
    <commons.release.version>1.3</commons.release.version>
    <commons.rc.version>RC2</commons.rc.version>
    <commons.jira.id>FILEUPLOAD</commons.jira.id>
    <commons.jira.pid>12310476</commons.jira.pid>
    <commons.osgi.export>!org.apache.commons.fileupload.util.mime,org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export>
    <commons.osgi.import>!javax.portlet,*</commons.osgi.import>
    <commons.osgi.dynamicImport>javax.portlet</commons.osgi.dynamicImport>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.4</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>portlet-api</groupId>
      <artifactId>portlet-api</artifactId>
      <version>1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.2</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>${basedir}/src/main/assembly/bin.xml</descriptor>
            <descriptor>${basedir}/src/main/assembly/src.xml</descriptor>
          </descriptors>
          <tarLongFileMode>gnu</tarLongFileMode>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <prepatationGoals>clean site verify</prepatationGoals>
          <goals>deploy</goals>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>${commons.changes.version}</version>
        <configuration>
          <issueLinkTemplate>%URL%/../%ISSUE%</issueLinkTemplate>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>changes-report</report>
              <!--  NPE, retry from time to time <report>jira-report</report>  -->
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.10</version>
        <configuration>
          <configLocation>${basedir}/src/checkstyle/fileupload_checks.xml</configLocation>
          <suppressionsLocation>${basedir}/src/checkstyle/checkstyle-suppressions.xml</suppressionsLocation>
          <enableRulesSummary>false</enableRulesSummary>
          <headerLocation>${basedir}/src/checkstyle/license-header.txt</headerLocation>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>2.7.1</version>
        <configuration>
          <targetJdk>${maven.compile.target}</targetJdk>
          <rulesets>
            <ruleset>${basedir}/src/checkstyle/fileupload_basic.xml</ruleset>
          </rulesets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
        <version>${commons.clirr.version}</version>
        <configuration>
          <comparisonArtifacts>
            <comparisonArtifact>
              <groupId>commons-fileupload</groupId>
              <artifactId>commons-fileupload</artifactId>
              <version>1.2.2</version>
            </comparisonArtifact>
          </comparisonArtifacts>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

</project>
