<?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.7-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.apache.ftpserver</groupId>
	<artifactId>ftpserver-core</artifactId>
	<name>Apache FtpServer Core</name>
	<version>1.0.7-SNAPSHOT</version>
	<packaging>bundle</packaging>
	<scm>
		<connection>
			scm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/core
		</connection>
		<developerConnection>
			scm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/core
		</developerConnection>
		<url> http://svn.apache.org/viewvc/mina/ftpserver/trunk/core</url>
	</scm>
	<build>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.properties</include>
					<include>**/*.handlers</include>
					<include>**/*.schemas</include>
					<include>**/*.xsd</include>
				</includes>
			</resource>
		</resources>
		<testResources>
			<testResource>
				<directory>src/test/resources</directory>
				<includes>
					<include>*.properties</include>
				</includes>
			</testResource>
		</testResources>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<version>2.3.4</version>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Bundle-SymbolicName> ${artifactId}</Bundle-SymbolicName>
						<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
						<Export-Package> org.apache.ftpserver;version=${project.version},
							org.apache.ftpserver.command;version=${project.version},
							org.apache.ftpserver.config.spring;version=${project.version},
							org.apache.ftpserver.filesystem.nativefs;version=${project.version},
							org.apache.ftpserver.ftpletcontainer;version=${project.version},
							org.apache.ftpserver.ipfilter;version=${project.version}, 
							org.apache.ftpserver.listener;version=${project.version}, 
							org.apache.ftpserver.main;version=${project.version},
							org.apache.ftpserver.message;version=${project.version},
							org.apache.ftpserver.ssl;version=${project.version},
							org.apache.ftpserver.usermanager;version=${project.version}
						</Export-Package>
						<Import-Package>
							org.springframework.beans.factory.config;resolution:=optional;version="2.5",
							org.springframework.beans.factory.support;resolution:=optional;version="2.5",
							org.springframework.beans.factory.xml;resolution:=optional;version="2.5",
							org.springframework.context.support;resolution:=optional;version="2.5",
							org.springframework.util;resolution:=optional;version="2.5",
							org.springframework.util.xml;resolution:=optional;version="2.5",
							*</Import-Package>
					</instructions>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>rat-maven-plugin</artifactId>
				<version>1.0-alpha-3</version>
				<configuration>
					<excludes>
						<exclude>res/user.gen</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>ftplet-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.mina</groupId>
			<artifactId>mina-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<optional>true</optional>
		</dependency>
    
    <!-- Use as Spring uses JCL -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<optional>true</optional>
		</dependency>


    <!-- Test dependencies -->
		<dependency>
			<groupId>commons-net</groupId>
			<artifactId>commons-net</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>hsqldb</groupId>
			<artifactId>hsqldb</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
