<?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>Commons VFS</name>
    <groupId>commons-vfs</groupId>
    <artifactId>commons-vfs</artifactId>
    <logo>/images/vfs-logo-white.png</logo>
    <url>http://jakarta.apache.org/commons/vfs/</url>
    <currentVersion>1.0</currentVersion>
    <inceptionYear>2002</inceptionYear>
    <package>org.apache.commons.vfs</package>
    <shortDescription>Commons VFS</shortDescription>

    <description>
        VFS is a Virtual File System library.
    </description>

    <organization>
        <name>The Apache Software Foundation</name>
        <url>http://jakarta.apache.org</url>
        <logo>http://jakarta.apache.org/images/original-jakarta-logo.gif</logo>
    </organization>

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>/LICENSE.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <issueTrackingUrl>http://issues.apache.org/jira/</issueTrackingUrl>
    <siteAddress>people.apache.org</siteAddress>
    <!--
        <siteDirectory>/www/jakarta.apache.org/commons/vfs/</siteDirectory>
    -->
    <siteDirectory>public_html/vfs-1.0/site</siteDirectory>
    <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/vfs/</distributionDirectory>
    <repository>
        <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/vfs/trunk</connection>
        <url>http://svn.apache.org/viewvc</url>
    </repository>
    <mailingLists>
        <mailingList>
            <name>Commons Dev List</name>
            <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>
            <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/</archive>
        </mailingList>
        <mailingList>
            <name>Commons User List</name>
            <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>
            <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/</archive>
        </mailingList>
    </mailingLists>

    <developers>
        <developer>
            <name>Adam Murdoch</name>
            <id>adammurdoch</id>
            <email>adammurdoch -at- apache.org</email>
            <organization></organization>
        </developer>
        <developer>
            <name>James Strachan</name>
            <id>jstrachan</id>
            <email>jstrachan -at- apache.org</email>
            <organization>SpiritSoft, Inc.</organization>
        </developer>
        <developer>
            <name>Mario Ivankovits</name>
            <id>imario</id>
            <email>imario -at- apache.org</email>
            <organization>OPS EDV Gmbh</organization>
        </developer>
        <developer>
            <name>Rahul Akolkar</name>
            <id>rahul</id>
            <email>rahul -at- apache.org</email>
            <organization>Apache Software Foundation</organization>
        </developer>
    </developers>

    <contributors>
        <contributor>
            <name>Rami Ojares</name>
            <email>rami.ojares -at- elisa.fi</email>
        </contributor>
        <contributor>
            <name>Anthony Goubard</name>
            <email>adagoubard -at- chello.nl</email>
        </contributor>
        <contributor>
            <name>Christopher Ottley</name>
            <email>xknight -at- users.sourceforge.net</email>
        </contributor>
    </contributors>

    <dependencies>
        <dependency>
            <groupId>ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.6.2</version>
            <url>http://ant.apache.org/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>

        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>1.4.1</version>
            <url>http://jakarta.apache.org/commons/net/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0.4</version>
            <url>http://jakarta.apache.org/commons/logging/</url>
        </dependency>

        <!--TODO:Revert to [compress] if/when released
        <dependency>
            <groupId>commons-compress</groupId>
            <artifactId>commons-compress</artifactId>
            <version>SNAPSHOT</version>
        </dependency-->

        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.1</version>
            <url>http://jakarta.apache.org/commons/collections/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>

<!-- TODO:Revert if/when jcifs dependant code is moved out of the vfs sandbox
        <dependency>
            <groupId>jcifs</groupId>
            <artifactId>jcifs</artifactId>
            <version>0.8.3</version>
            <url>http://jcifs.samba.org/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>
-->

<!-- TODO:Revert if/when slide dependant code is moved out of the vfs sandbox
        <dependency>
            <groupId>slide</groupId>
            <artifactId>jakarta-slide-webdavlib</artifactId>
            <version>20050629.161100</version>
            <url>http://jakarta.apache.org/slide/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>
-->

        <dependency>
            <groupId>jdom</groupId>
            <artifactId>jdom</artifactId>
            <version>1.0</version>
            <url>http://www.jdom.org/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>

        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>2.0.2</version>
            <url>http://jakarta.apache.org/commons/httpclient/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>

        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.23</version>
            <url>http://www.jcraft.com/jsch/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>

        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>1.0.b2</version>
            <url>http://xml.apache.org/commons/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </comment>
            </properties>
        </dependency>

        <dependency>
            <groupId>oro</groupId>
            <artifactId>oro</artifactId>
            <version>2.0.8</version>
            <url>http://jakarta.apache.org/oro/</url>
            <properties>
                <optional>true</optional>
                <comment>
                    &lt;strong&gt;Optional&lt;/strong&gt;
                </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&lt;/strong&gt; - Only
                  required for building the website/documentation.
              </comment>
            </properties>
        </dependency>

    </dependencies>

    <build>
        <sourceDirectory>core/src/main/java</sourceDirectory>

        <!-- Unit test classes -->
        <unitTestSourceDirectory>core/src/test/java</unitTestSourceDirectory>
        <unitTest>
            <includes>
                <include>**/test/*TestCase.java</include>
            </includes>
            <excludes>
                <exclude>**/test/Abstract*TestCase.java</exclude>
            </excludes>
        </unitTest>

        <!-- J A R  R E S O U R C E S -->
        <!-- Resources that are packaged up inside the JAR file -->
        <resources>
            <resource>
                <directory>core/src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}</directory>
                <targetPath>META-INF</targetPath>
                <includes>
                    <include>NOTICE.txt</include>
                </includes>
            </resource>
        </resources>
    </build>

    <reports>
        <!--<report>maven-changelog-plugin</report>-->
        <report>maven-changes-plugin</report>
        <!-- <report>maven-checkstyle-plugin</report> -->
        <!--
                <report>maven-clover-plugin</report>
        -->
        <!--
        <report>maven-developer-activity-plugin</report>
        <report>maven-file-activity-plugin</report>
        -->
        <report>maven-javadoc-plugin</report>
        <!--<report>maven-jellydoc-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-statcvs-plugin</report> -->
        <report>maven-tasklist-plugin</report>
    </reports>

</project>
