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

	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.aries.cdi</groupId>
		<artifactId>org.apache.aries.cdi</artifactId>
		<version>1.0.2-SNAPSHOT</version>
	</parent>

	<artifactId>org.apache.aries.cdi.bom</artifactId>
	<packaging>pom</packaging>
	<name>Apache Aries CDI - BOM</name>
	<description>Bill Of Materials for Apache Aries CDI.</description>

	<scm>
		<connection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/cdi/cdi-bom</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/cdi/cdi-bom</developerConnection>
		<url>https://svn.apache.org/viewvc/aries/trunk/cdi/cdi-bom</url>
	</scm>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>javax.ejb</groupId>
				<artifactId>javax.ejb-api</artifactId>
				<version>3.2</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.extender</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.extension.el.jsp</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.extension.http</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.extension.jndi</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.extra</artifactId>
				<version>${project.version}</version>
				<scope>compile</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.spifly</groupId>
				<artifactId>org.apache.aries.spifly.dynamic.framework.extension</artifactId>
				<version>1.2</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.felix</groupId>
				<artifactId>org.apache.felix.configadmin</artifactId>
				<version>1.9.10</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.felix</groupId>
				<artifactId>org.apache.felix.http.jetty</artifactId>
				<version>4.0.6</version>
				<scope>runtime</scope>
				<exclusions>
					<exclusion>
						<groupId>javax.servlet</groupId>
						<artifactId>javax.servlet-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.apache.felix</groupId>
				<artifactId>org.apache.felix.logback</artifactId>
				<version>1.0.2</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.eclipse.platform</groupId>
				<artifactId>org.eclipse.osgi</artifactId>
				<version>3.13.200</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.jboss.logging</groupId>
				<artifactId>jboss-logging</artifactId>
				<version>3.3.2.Final</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.jboss.weld</groupId>
				<artifactId>weld-osgi-bundle</artifactId>
				<version>${weld.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>log4j-over-slf4j</artifactId>
				<version>${slf4j.version}</version>
				<scope>runtime</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>