<?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>
	<artifactId>ftpserver-core</artifactId>
	<name>Apache FtpServer Core</name>
	<version>1.0.0-RC2</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>1.4.1</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=${pom.version},
							org.apache.ftpserver.command;version=${pom.version},
							org.apache.ftpserver.config.spring;version=${pom.version},
							org.apache.ftpserver.filesystem.nativefs;version=${pom.version},
							org.apache.ftpserver.ftpletcontainer;version=${pom.version},
							org.apache.ftpserver.listener;version=${pom.version}, 
							org.apache.ftpserver.main;version=${pom.version},
							org.apache.ftpserver.message;version=${pom.version},
							org.apache.ftpserver.ssl;version=${pom.version},
							org.apache.ftpserver.usermanager;version=${pom.version}
						</Export-Package>
						<Private-Package> org.apache.ftpserver.command.impl,
						    org.apache.ftpserver.command.impl.listing,
							org.apache.ftpserver.filesystem.nativefs.impl,
							org.apache.ftpserver.ftpletcontainer.impl,
							org.apache.ftpserver.impl, org.apache.ftpserver.listener.nio,
							org.apache.ftpserver.message.impl, org.apache.ftpserver.ssl.impl,
							org.apache.ftpserver.usermanager.impl,
							org.apache.ftpserver.util</Private-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>${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>oro</groupId>
			<artifactId>oro</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>hsqldb</groupId>
			<artifactId>hsqldb</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
