<?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>
  <parent>
    <artifactId>apache</artifactId>
    <groupId>org.apache</groupId>
    <version>4</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.ftpserver</groupId>r
  <artifactId>ftpserver-parent</artifactId>
  <packaging>pom</packaging>
  <name>Apache FtpServer</name>
  <version>1.0.0-M2</version>
  <url>http://mina.apache.org/ftpserver</url>
  <issueManagement>
    <system>Jira</system>
    <url>http://issues.apache.org/jira/browse/FTPSERVER</url>
  </issueManagement>
  <inceptionYear>2003</inceptionYear>

  <licenses>
    <license>
      <name>Apache 2.0 License</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0</url>
      <distribution>repo</distribution>
    </license>
  </licenses>


  <mailingLists>
    <mailingList>
      <name>FtpServer Users mailing list</name>
      <subscribe>ftpserver-users-subscribe@mina.apache.org</subscribe>
      <unsubscribe>ftpserver-users-unsubscribe@mina.apache.org</unsubscribe>
      <post>ftpserver-users@mina.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/mina-ftpserver-users/</archive>
    </mailingList>
    <mailingList>
      <name>MINA Development mailing list</name>
      <subscribe>dev-subscribe@mina.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@mina.apache.org</unsubscribe>
      <post>dev@mina.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/mina-dev/</archive>
      <otherArchives>
        <otherArchive>http://www.nabble.com/Apache-MINA-f16868.html</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>MINA Commit mailing list</name>
      <subscribe>commits-subscribe@mina.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@mina.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/mina-commits/</archive>
    </mailingList>
  </mailingLists>

  <developers>
    <developer>
      <id>ngn</id>
      <name>Niklas Gustavsson</name>
      <email>niklas@protocol7.com</email>
    </developer>
    <developer>
      <id>rana_b</id>
      <name>Rana Battacharyya</name>
      <email>rana_b.{aT}.yahoo.{d0T}.com</email>
    </developer>
    <developer>
      <id>hammant</id>
      <name>Paul Hammant</name>
      <email>paul.{aT}.hammant.{d0T}.org</email>
    </developer>
    <developer>
      <id>sergey</id>
      <name>Sergey M Vladimirov</name>
      <email>vlsergey.{aT}.gmail.{d0T}.com</email>
      <organization>Netcracker corp.</organization>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Birkir A. Barkarson</name>
    </contributor>
    <contributor>
      <name>David H. DeWolf</name>
      <email>ddewolf.{aT}.apache.{d0T}.org</email>
      <organization>Vivare, INC</organization>
    </contributor>
    <contributor>
      <name>Luis Sanabria</name>
    </contributor>
    <contributor>
      <name>Daniel Hagen</name>
    </contributor>
    <contributor>
      <name>KwangYul Seo</name>
    </contributor>
    <contributor>
      <name>Dave Roberts</name>
      <organization>SAA Consultants Ltd</organization>
    </contributor>
    <contributor>
      <name>Nick Vincent</name>
    </contributor>
  </contributors>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk</developerConnection>
    <url>http://svn.apache.org/viewvc/mina/ftpserver/trunk</url>
  </scm>

  <dependencyManagement>
    <dependencies>
      <!-- Submodules -->
      <dependency>
        <groupId>${groupId}</groupId>
        <artifactId>ftplet-api</artifactId>
        <version>${pom.version}</version>
      </dependency>

      <dependency>
        <groupId>${groupId}</groupId>
        <artifactId>ftpserver-core</artifactId>
        <version>${pom.version}</version>
      </dependency>

      <dependency>
        <groupId>${groupId}</groupId>
        <artifactId>ftpserver-deprecated</artifactId>
        <version>${pom.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.mina</groupId>
        <artifactId>mina-core</artifactId>
        <version>2.0.0-M2</version>
        <exclusions>
            <exclusion>
                <groupId>org.easymock</groupId>
                <artifactId>easymock</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.easymock</groupId>
                <artifactId>easymockclassextension</artifactId>
            </exclusion>
	</exclusions>
      </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>2.5.5</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
	</exclusions>
    </dependency>

      <!-- Logging -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.2</version>
      </dependency>

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.5.2</version>
      </dependency>

      <!-- Test dependencies -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.2</version>
      </dependency>
 
      <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>2.0.0-ftpserver-20080501.114815-1</version>
        <!-- version>1.4.1</version -->
      </dependency>

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.2</version>
      </dependency>
    
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
      </dependency>

      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.3</version>
      </dependency>

      <dependency>
        <groupId>oro</groupId>
        <artifactId>oro</artifactId>
        <version>2.0.8</version>
      </dependency>

      <dependency>
        <groupId>hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>1.8.0.7</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.0-alpha-3</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <!-- Allow only Maven 2.0.5 and >2.0.7 -->
                <requireMavenVersion>
                  <version>[2.0.5],[2.0.7,]</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.4.3</version>
      </plugin>

      <plugin>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
          <downloadSources>true</downloadSources>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.0-beta-7</version>
        <configuration>
          <tagBase>https://svn.apache.org/repos/asf/mina/sandbox/ftpserver/tags/</tagBase>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <resourceBundles>
                <resourceBundle>org.apache:apache-jar-resource-bundle:1.1</resourceBundle>
              </resourceBundles>
              <properties>
                <addLicense>true</addLicense>
              </properties>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
          <source>${maven.compile.source}</source>
          <target>${maven.compile.target}</target>
        </configuration>
      </plugin>

	  <plugin>
	    <groupId>org.codehaus.mojo</groupId>
	    <artifactId>rat-maven-plugin</artifactId>
	    <version>1.0-alpha-3</version>
	  </plugin>

      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.0.4</version>
        <executions>
          <execution>
            <id>create-source-jar</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-idea-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <jdkLevel>${maven.compile.source}</jdkLevel>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.0-alpha-4</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.4</version>
            <executions>
              <execution>
                <id>create-javadoc-jar</id>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <source>${maven.compile.source}</source>
                </configuration>
              </execution>
            </executions>
          </plugin>
	  <plugin>
	    <groupId>org.codehaus.mojo</groupId>
	    <artifactId>rat-maven-plugin</artifactId>
	    <version>1.0-alpha-3</version>
            <executions>
              <execution>
                <id>verify-licenses</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
	  </plugin>
        </plugins>
      </build>
      <modules>
        <module>ftplet-api</module>
        <module>core</module>
        <module>deprecated</module>
        <module>distribution</module>
      </modules>
      <distributionManagement>
        <repository>
          <id>apache.snapshots</id>
          <name>Apache Development Snapshot Repository</name>
          <url>scp://people.apache.org/www/people.apache.org/repo/m2-incubating-repository/</url>
        </repository>
      </distributionManagement>
    </profile>
  </profiles>

  <modules>
    <module>ftplet-api</module>
    <module>core</module>
    <module>deprecated</module>
  </modules>

  <distributionManagement>
    <repository>
      <id>dummy</id>
      <name>Dummy to avoid accidental deploys</name>
      <url/>
    </repository>
  </distributionManagement>

  <properties>
    <maven.compile.source>1.5</maven.compile.source>
    <maven.compile.target>1.5</maven.compile.target>
  </properties>

  <repositories>
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://people.apache.org/repo/m2-snapshot-repository</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
    <repository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots/>
      <id>commons-net Snapshots</id>
      <url>http://people.apache.org/~ngn/ftpserver-repos</url>
    </repository>
    <repository>
        <releases>
            <enabled>false</enabled>
        </releases>
        <id>Codehaus Snapshots</id>
	<url>http://snapshots.repository.codehaus.org/</url>
     </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>apache Snapshots</id>
      <url>http://people.apache.org/repo/m2-snapshot-repository</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <releases>
        <enabled>false</enabled>
      </releases>
    </pluginRepository>
        <pluginRepository>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots/>
          <id>Codehaus Snapshots</id>
          <url>http://snapshots.repository.codehaus.org/</url>
        </pluginRepository>
  </pluginRepositories>
</project>
