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

	<modelVersion>4.0.0</modelVersion>

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

	<properties>
		<mp.config.version>1.3</mp.config.version>
		<byte.buddy.version>1.10.3</byte.buddy.version>
	</properties>

	<artifactId>org.apache.aries.cdi.extension.mp-config</artifactId>
	<name>Apache Aries CDI - MicroProfile Config ${mp.config.version} Using Apache Geronimo</name>
	<description>Apache Aries CDI - MicroProfile Config ${mp.config.version} Using Apache Geronimo</description>

	<licenses>
		<license>
			<name>ASL 2.0</name>
			<url>https://www.apache.org/licenses/LICENSE-2.0</url>
		</license>
	</licenses>

	<scm>
		<connection>scm:git:git@github.com:apache/aries-cdi.git</connection>
		<developerConnection>scm:git:git@github.com:apache/aries-cdi.git</developerConnection>
		<tag>HEAD</tag>
		<url>https://github.com/apache/aries-cdi</url>
	</scm>

	<build>
		<plugins>
			<plugin>
				<groupId>biz.aQute.bnd</groupId>
				<artifactId>bnd-maven-plugin</artifactId>
				<configuration>
					<bnd><![CDATA[
						Export-Package: org.eclipse.microprofile.config.*
						Import-Package: \
							!net.bytebuddy.*,\
							!org.osgi.annotation.bundle.*,\
							*
						-includepackage: org.apache.geronimo.config.*
						-cdiannotations:
						-noclassforname: true
						-fixupmessages: "Split package...";is:=ignore
					]]></bnd>
				</configuration>
			</plugin>
			<plugin>
				<groupId>net.bytebuddy</groupId>
				<artifactId>byte-buddy-maven-plugin</artifactId>
				<version>${byte.buddy.version}</version>
				<executions>
					<execution>
						<goals>
							<goal>transform</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<transformations>
						<transformation>
							<plugin>org.apache.aries.cdi.extension.mp.config.BB</plugin>
							<arguments>
								<argument>
									<index>1</index>
									<value>${mp.config.version}</value>
								</argument>
							</arguments>
						</transformation>
					</transformations>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.osgi</groupId>
						<artifactId>osgi.annotation</artifactId>
						<version>7.0.0</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>

	<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.geronimo.specs</groupId>
			<artifactId>geronimo-annotation_1.3_spec</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.specs</groupId>
			<artifactId>geronimo-atinject_1.0_spec</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.specs</groupId>
			<artifactId>geronimo-jcdi_2.0_spec</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.config</groupId>
			<artifactId>geronimo-config-impl</artifactId>
			<version>1.2.2</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.namespace.service</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.service.cdi</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>osgi.annotation</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>osgi.core</artifactId>
		</dependency>

		<dependency>
			<groupId>net.bytebuddy</groupId>
			<artifactId>byte-buddy</artifactId>
			<version>${byte.buddy.version}</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

</project>