<?xml version="1.0" encoding="UTF-8"?>
<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">

    <!--

        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.
    -->

	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.karaf.http</groupId>
		<artifactId>http</artifactId>
		<version>3.0.11-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
	</parent>

	<artifactId>org.apache.karaf.http.command</artifactId>
	<packaging>bundle</packaging>
	<name>Apache Karaf :: HTTP :: Commands</name>
	<description>This bundle provides Karaf shell commands to list details of the http service.</description>

	<properties>
		<appendedResourcesDirectory>${basedir}/../../etc/appended-resources</appendedResourcesDirectory>
	</properties>

	<dependencies>
	    <dependency>
            <groupId>org.apache.karaf.shell</groupId>
            <artifactId>org.apache.karaf.shell.table</artifactId>
        </dependency>
		<dependency>
			<groupId>org.apache.karaf.shell</groupId>
			<artifactId>org.apache.karaf.shell.console</artifactId>
		</dependency>
        <dependency>
            <groupId>org.apache.karaf.http</groupId>
            <artifactId>org.apache.karaf.http.core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.gogo.runtime</artifactId>
            <scope>provided</scope>
        </dependency>
		
		<dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.felix</groupId>
			<artifactId>org.apache.felix.utils</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.ops4j.pax.web</groupId>
			<artifactId>pax-web-spi</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>${servlet.spec.groupId}</groupId>
			<artifactId>${servlet.spec.artifactId}</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.karaf</groupId>
			<artifactId>org.apache.karaf.util</artifactId>
			<scope>compile</scope>
		</dependency>
	</dependencies>

	<build>
		<resources>
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
				<includes>
					<include>**/*</include>
				</includes>
			</resource>
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
				<filtering>true</filtering>
				<includes>
					<include>**/*.info</include>
				</includes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<configuration>
					<instructions>
						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
						<Export-Package>${project.artifactId}*;version=${project.version}</Export-Package>
						<Import-Package>
                            org.apache.aries.blueprint,
                            org.osgi.service.blueprint.container,
                            org.osgi.service.blueprint.reflect,
							org.apache.felix.service.command,
							org.apache.karaf.shell.commands,
							org.apache.karaf.shell.console,
							*
                        </Import-Package>
						<Private-Package>
							org.apache.felix.utils.version,
							org.apache.felix.utils.manifest,
							org.apache.karaf.util;-split-package:=merge-first
                        </Private-Package>
						<_versionpolicy>${bnd.version.policy}</_versionpolicy>
					</instructions>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>