<?xml version="1.0"?>

<project>
  <pomVersion>3</pomVersion>
  <name>Jakarta Commons/Net</name>
  <id>commons-net</id>
  <currentVersion>1.1.0-rc1</currentVersion>
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://jakarta.apache.org/</url>
    <logo>/images/jakarta-logo-blue.gif</logo>
  </organization>
  <inceptionYear>1997</inceptionYear>
  <package>org.apache.commons.net</package>
  
  <gumpRepositoryId>jakarta</gumpRepositoryId>
  
  <shortDescription>Jakarta Commons/Net</shortDescription>
  
  <description>
    This is an Internet protocol suite Java library originally 
    developed by ORO, Inc. This version supports Finger, Whois, 
    TFTP, Telnet, POP3, FTP, NNTP, SMTP, and some miscellaneous 
    protocols like Time and Echo as well as BSD R command support. 
    The purpose of the library is to provide fundamental protocol 
    access, not higher-level abstractions. Therefore, some of the 
    design violates object-oriented design principles. Our philosophy 
    is to make the global functionality of a protocal accesible (e.g., 
    TFTP send file and receive file) when possible, but also provide 
    access to the fundamental protocols where applicable so that the 
    programmer may construct his own custom implementations (e.g, the 
    TFTP packet classes and the TFTP packet send and receive methods 
    are exposed). NetComponents was originally a commercial product, 
    but after ORO dissolved, it was continued to be made available for 
    those who found it useful. However, no updates have been made since 
    version 1.3.8, released in 1998. Now that certain contract obligations 
    have expired, it is possible to make the source code freely available 
    under the The Apache Software License.
  </description>
  
  <url>http://jakarta.apache.org/commons/net/</url>
  <issueTrackingUrl>http://nagoya.apache.org/bugzilla/</issueTrackingUrl>
  <siteAddress>jakarta.apache.org</siteAddress>
  <siteDirectory>/www/jakarta.apache.org/commons/net/</siteDirectory> 
  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/release/commons-net/</distributionDirectory>

  <repository>
    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-commons/net</connection>
    <url>http://cvs.apache.org/viewcvs/jakarta-commons/net/</url>
  </repository>

  <versions>
    <version>
      <id>1.0.0</id>
      <name>1.0.0</name>
      <tag>NET_1_0_0</tag>
    </version>
    <version>
      <id>1.1.0-rc1</id>
      <name>1.1.0-rc1</name>
      <tag>NET_1_1_0_rc1</tag>
    </version>
  </versions>

  <mailingLists>
    <mailingList>
      <name>Commons User List</name>
      <subscribe>mailto:commons-user-subscribe@jakarta.apache.org</subscribe>
      <unsubscribe>mailto:commons-user-unsubscribe@jakarta.apache.org</unsubscribe>
      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Commons Developer List</name>
      <subscribe>mailto:commons-dev-subscribe@jakarta.apache.org</subscribe>
      <unsubscribe>mailto:commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>
      <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=commons-dev@jakarta.apache.org</archive>
    </mailingList>
  </mailingLists>
 
  <developers>
    <developer>
      <name>Jeffrey D. Brekke</name>
      <id>brekke</id>
      <email>Jeff.Brekke@qg.com</email>
      <organization>Quad/Graphics, Inc.</organization>
    </developer>
    <developer>
      <name>Steve Cohen</name>
      <id>scohen</id>
      <email>scohen@apache.org</email>
      <organization>Sportvision, Inc.</organization>
    </developer>
    <developer>
      <name>Bruno D'Avanzo</name>
      <id>brudav</id>
      <email>bruno.davanzo@hp.com</email>
      <organization>Hewlett-Packard</organization>
    </developer>
    <developer>
      <name>Daniel F. Savarese</name>
      <id>dfs</id>
      <email>dfs -> apache.org</email>
      <organization>savarese.org</organization>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Tapan Karecha</name>
      <email>tapan@india.hp.com</email>
    </contributor>
   <contributor>
      <name>Winston Ojeda</name>
      <email>Winston.Ojeda@qg.com</email>
      <organization>Quad/Graphics, Inc.</organization>
    </contributor>
  </contributors>
  
  <dependencies>
     <dependency>
        <id>oro</id>
        <version>2.0.7</version>
      </dependency>
  </dependencies>
  
  <build>

    <nagEmailAddress>commons-dev@jakarta.apache.org</nagEmailAddress>

    <sourceDirectory>src/java</sourceDirectory>
 
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
    
    <unitTest>
      <includes>
        <include>**/*Test.java</include>
      </includes>
      <excludes>
        <exclude>**/TelnetClientFunctionalTest.java</exclude>
      </excludes>
    </unitTest>
    
  </build>

  <reports>
    <report>maven-changes-plugin</report>
    <report>maven-tasklist-plugin</report>
    <report>maven-junit-report-plugin</report>
    <report>maven-jdepend-plugin</report>
    <report>maven-jcoverage-plugin</report>
    <report>maven-checkstyle-plugin</report>
    <report>maven-statcvs-plugin</report>
    <report>maven-javadoc-plugin</report>
    <report>maven-jxr-plugin</report>
  </reports>

</project>
