<?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>
  <pomVersion>3</pomVersion>
  
  <name>FileUpload</name>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <currentVersion>1.2.1</currentVersion>
  <inceptionYear>2002</inceptionYear>
  <shortDescription>File upload component for Java servlets</shortDescription>
  <description>
    The FileUpload component provides a simple yet flexible means of adding
    support for multipart file upload functionality to servlets and web
    applications.
  </description>
  <logo>/images/logo.png</logo>
  
  <url>http://commons.apache.org/${pom.artifactId.substring(8)}/</url>
  <package>org.apache.commons.${pom.artifactId.substring(8)}</package>

  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://commons.apache.org/</url>
    <logo>http://commons.apache.org/images/logo.png</logo>
  </organization>

  <licenses>
	<license>
    	<name>The Apache Software License, Version 2.0</name>
    	<url>/LICENSE.txt</url>
    	<distribution>repo</distribution>
	</license>
  </licenses>
  
  <gumpRepositoryId>commons</gumpRepositoryId>
  <issueTrackingUrl>http://issues.apache.org/jira/</issueTrackingUrl>
  <siteAddress>people.apache.org</siteAddress>
  <siteDirectory>/www/commons.apache.org/${pom.artifactId.substring(8)}/</siteDirectory>
  <distributionDirectory>/www/people.apache.org/builds/commons/${pom.artifactId.substring(8)}/</distributionDirectory>
  
  <repository>
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/${pom.artifactId.substring(8)}/trunk</connection>
    <url>http://svn.apache.org/repos/asf</url>
  </repository>
  
  <mailingLists>
    <mailingList>
      <name>Commons Dev List</name>
      <subscribe>dev-subscribe@commons.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>
    </mailingList>
    <mailingList>
      <name>Commons User List</name>
      <subscribe>user-subscribe@commons.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>
    </mailingList>
  </mailingLists>
 

  <versions>
    <version>
      <id>1.2.1</id>
      <name>1.2.1</name>
      <tag>commons-fileupload-1.2.1</tag>
    </version>
    <version>
      <id>1.2</id>
      <name>1.2</name>
      <tag>commons-fileupload-1.2</tag>
    </version>
    <version>
      <id>1.1.1</id>
      <name>1.1.1</name>
      <tag>FILEUPLOAD_1_1_1</tag>
    </version>
    <version>
      <id>1.1</id>
      <name>1.1</name>
      <tag>FILEUPLOAD_1_1</tag>
    </version>
    <version>
      <id>1.1-rc2</id>
      <name>1.1-rc2</name>
      <tag>FILEUPLOAD_1_1_RC2</tag>
    </version>
    <version>
      <id>1.1-rc1</id>
      <name>1.1-rc1</name>
      <tag>FILEUPLOAD_1_1_RC1</tag>
    </version>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>FILEUPLOAD_1_0</tag>
    </version>
    <version>
      <id>1.0-rc1</id>
      <name>1.0-rc1</name>
      <tag>FILEUPLOAD_1_0_RC1</tag>
    </version>
    <version>
      <id>1.0-beta-1</id>
      <name>1.0-beta-1</name>
      <tag>FILEUPLOAD_1_0_B1</tag>
    </version>
  </versions>

  <developers>
    <developer>
      <name>Martin Cooper</name>
      <id>martinc</id>
      <email>martinc@apache.org</email>
      <organization>EMC</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></organization>
    </developer>
    <developer>
      <name>Jochen Wiedmann</name>
      <id>jochen</id>
      <email>jochen.wiedmann@gmail.com</email>
      <organization/>
    </developer>
  </developers>
  
  <dependencies>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
      <url>http://commons.apache.org/io/</url>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.4</version>
      <url>http://java.sun.com/products/servlet/</url>
      <properties>
        <scope>provided</scope>
      </properties>
    </dependency>
    <dependency>
      <groupId>javax.portlet</groupId>
      <artifactId>portlet-api</artifactId>
      <version>1.0</version>
      <url>http://portals.apache.org/pluto</url>
      <properties>
        <scope>provided</scope>
        <comment>
          Required only when using FileUpload in a portlet environment.
        </comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <url>http://www.junit.org/</url>
      <properties>
        <scope>test</scope>
        <comment>
          &lt;strong&gt;Test Only&lt;/strong&gt; - required only for
          running the FileUpload unit tests.
        </comment>
      </properties>
    </dependency>

   <dependency>
      <groupId>maven</groupId>
      <artifactId>maven-xdoc-plugin</artifactId>
      <version>1.9.2</version>
      <url>http://maven.apache.org/reference/plugins/xdoc/</url>
      <type>plugin</type>
      <properties>
          <comment>
              &lt;strong&gt;Site Only&lt;/strong&gt; - v1.9.2 (minimum)
              required for building the FileUpload Site documentation.
          </comment>
      </properties>
    </dependency>

   <dependency>
      <groupId>maven</groupId>
      <artifactId>maven-changelog-plugin</artifactId>
      <version>1.9.1</version>
      <url>http://maven.apache.org/reference/plugins/changelog/</url>
      <type>plugin</type>
      <properties>
          <comment>
              &lt;strong&gt;Site Only&lt;/strong&gt; - v1.9.1 (minimum)
              required for building the FileUpload Site documentation.
          </comment>
      </properties>
    </dependency>
  </dependencies>

  <build>
    <nagEmailAddress>dev@commons.apache.org</nagEmailAddress>
    <sourceDirectory>src/java</sourceDirectory>
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
    <unitTest>
      <includes>
        <include>**/*Test.java</include>
      </includes>
      <resources>
         <resource>
            <directory>${pom.build.unitTestSourceDirectory}</directory>
            <includes>
              <include>**/*.xml</include>
            </includes>
         </resource>
      </resources>
    </unitTest>

    <resources>
      <resource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>NOTICE.txt</include>
        </includes>
      </resource>
    </resources>
  </build>
  
  <reports>
    <report>maven-changes-plugin</report>
    <report>maven-changelog-plugin</report>
    <report>maven-checkstyle-plugin</report>
    <!--report>maven-clover-plugin</report-->
    <report>maven-developer-activity-plugin</report>
    <report>maven-faq-plugin</report>
    <report>maven-file-activity-plugin</report>
    <report>maven-javadoc-plugin</report>
    <report>maven-jdepend-plugin</report>
    <report>maven-junit-report-plugin</report>
    <report>maven-jxr-plugin</report>
    <report>maven-license-plugin</report>
    <!--report>maven-linkcheck-plugin</report-->
    <report>maven-pmd-plugin</report>
    <report>maven-simian-plugin</report>
    <report>maven-tasklist-plugin</report>
  </reports>

</project>
