<?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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.felix</groupId>
		<artifactId>dependencymanager-reactor</artifactId>
		<version>3.0.0-SNAPSHOT</version>
	</parent>

	<name>Apache Felix Dependency Manager</name>
	<artifactId>org.apache.felix.dependencymanager</artifactId>
	<packaging>bundle</packaging>

	<dependencies>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.compendium</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<configuration>
					<instructions>
						<Bundle-SymbolicName>org.apache.felix.dependencymanager</Bundle-SymbolicName>
						<Bundle-Name>Apache Felix Dependency Manager</Bundle-Name>
						<Bundle-Description>A bundle that provides a run-time service dependency manager.</Bundle-Description>
						<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
						<Export-Package>org.apache.felix.dm;version="3.0.0",org.apache.felix.dm.tracker;version="3.0.0"</Export-Package>
						<Import-Package>!org.apache.felix.dm,*</Import-Package>
						<Private-Package>org.apache.felix.dm.impl,org.apache.felix.dm.impl.dependencies,org.apache.felix.dm.impl.tracker,org.apache.felix.dm.impl.metatype</Private-Package>
						<!-- Uncomment this line to include source code in the bundle.
						<Include-Resource>src/main/java</Include-Resource>
						-->
					</instructions>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
