<?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.1.3</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:git:git@github.com:apache/aries-cdi.git</connection>
		<developerConnection>scm:git:git@github.com:apache/aries-cdi.git</developerConnection>
		<tag>org.apache.aries.cdi-1.1.3</tag>
		<url>https://github.com/apache/aries-cdi</url>
	</scm>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>biz.aQute.bnd</groupId>
				<artifactId>biz.aQute.bnd.annotation</artifactId>
				<version>${bnd.version}</version>
				<scope>provided</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.jaxrs</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.extension.servlet.common</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.extension.servlet.owb</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.extension.servlet.weld</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.extension.spi</artifactId>
				<version>${project.version}</version>
				<scope>compile</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.cdi</groupId>
				<artifactId>org.apache.aries.cdi.spi</artifactId>
				<version>${project.version}</version>
				<scope>compile</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.owb</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.weld</artifactId>
				<version>${project.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.jax.rs</groupId>
				<artifactId>org.apache.aries.jax.rs.whiteboard</artifactId>
				<version>${jax.rs.whiteboard.version}</version>
				<scope>runtime</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.aries.spifly</groupId>
				<artifactId>org.apache.aries.spifly.dynamic.framework.extension</artifactId>
				<version>1.3.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.14</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.15.200</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>

	<build>
		<plugins>
			<plugin>
				<groupId>biz.aQute.bnd</groupId>
				<artifactId>bnd-baseline-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>baseline</id>
						<phase>none</phase>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>experimental</id>
			<dependencyManagement>
				<dependencies>
					<dependency>
						<groupId>org.apache.aries.cdi</groupId>
						<artifactId>org.apache.aries.cdi.extension.mp-config</artifactId>
						<version>${project.version}</version>
						<scope>compile</scope>
					</dependency>
					<dependency>
						<groupId>org.apache.aries.cdi</groupId>
						<artifactId>org.apache.aries.cdi.extension.mp-jwt-auth</artifactId>
						<version>${project.version}</version>
						<scope>compile</scope>
					</dependency>
					<dependency>
						<groupId>org.apache.aries.cdi</groupId>
						<artifactId>org.apache.aries.cdi.extension.mp-metrics</artifactId>
						<version>${project.version}</version>
						<scope>compile</scope>
					</dependency>
					<dependency>
						<groupId>org.apache.johnzon</groupId>
						<artifactId>johnzon-osgi</artifactId>
						<version>${johnzon.version}</version>
						<scope>runtime</scope>
					</dependency>
				</dependencies>
			</dependencyManagement>
		</profile>
	</profiles>
</project>
