<?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  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<description>Simple example where an Ftplet is published as a OSGi service. Another bundle, using the white-board pattern can locate this and plug it into a running server.</description>
	<parent>
		<artifactId>ftpserver-parent</artifactId>
		<groupId>org.apache.ftpserver</groupId>
		<version>1.1.0-SNAPSHOT</version>
		<relativePath>../../pom.xml</relativePath>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.apache.ftpserver.examples</groupId>
	<artifactId>ftpserver-osgi-ftplet-service</artifactId>
	<name>FtpServer OSGi Ftplet service example</name>
	<packaging>bundle</packaging>
	<version>1.1.0-SNAPSHOT</version>
	<dependencies>
		<dependency>
			<groupId>org.apache.ftpserver</groupId>
			<artifactId>ftplet-api</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
		  <groupId>org.osgi</groupId>
		  <artifactId>osgi_R4_core</artifactId>
		  <version>1.0</version>
		  <scope>provided</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<version>2.3.4</version>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Bundle-SymbolicName> ${project.artifactId}</Bundle-SymbolicName>
						<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
						<Export-Package> org.apache.ftpserver.example.ftpletservice</Export-Package>
						<Private-Package> org.apache.ftpserver.example.ftpletservice.impl</Private-Package>
						<Bundle-Activator>org.apache.ftpserver.example.ftpletservice.impl.Activator</Bundle-Activator>
						<Import-Package>
						  org.apache.ftpserver.ftplet,
						  org.osgi.framework
						</Import-Package>
					</instructions>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
