<?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>ftpserver-parent</artifactId>
      <groupId>org.apache.ftpserver</groupId>
      <version>1.0.0-RC2</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.ftpserver</groupId>r
  <artifactId>ftpserver-examples</artifactId>
  <packaging>pom</packaging>
  <name>Apache FtpServer Examples</name>
  <version>1.0.0-RC2</version>
  <modules>
    <module>ftpserver-example-spring-war</module>
    <module>ftpserver-osgi-ftplet-service</module>
    <module>ftpserver-osgi-spring-service</module>
  </modules>
</project>
