<?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.4-SNAPSHOT</version>
		<relativePath>..</relativePath>
	</parent>

	<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>
				<executions>
					<execution>
						<id>bnd-process</id>
						<configuration>
							<bnd><![CDATA[
								Export-Package: org.eclipse.microprofile.config.*
								-includepackage: org.apache.geronimo.config.*
								-cdiannotations:
								-noclassforname: true
								-fixupmessages: "Split package...";is:=ignore
								-bundleannotations: \
									!org.eclipse.microprofile.config.*,\
									org.apache.aries.cdi.extension.mp.config.*
							]]></bnd>
						</configuration>
					</execution>
				</executions>
			</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.build.tools.AddExtensionRequirement</plugin>
							<arguments>
								<argument>
									<index>1</index>
									<value>eclipse.microprofile.config</value>
								</argument>
								<argument>
									<index>2</index>
									<value>${mp.config.version}</value>
								</argument>
								<argument>
									<index>3</index>
									<value>org.eclipse.microprofile.config.inject.ConfigProperty</value>
								</argument>
							</arguments>
						</transformation>
					</transformations>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.osgi</groupId>
						<artifactId>osgi.annotation</artifactId>
						<version>7.0.0</version>
					</dependency>
					<dependency>
						<groupId>org.apache.aries.cdi</groupId>
						<artifactId>org.apache.aries.cdi.build.tools</artifactId>
						<version>${project.version}</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>

	<dependencies>
		<dependency>
			<groupId>biz.aQute.bnd</groupId>
			<artifactId>biz.aQute.bnd.annotation</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.aries.cdi</groupId>
			<artifactId>org.apache.aries.cdi.extra</artifactId>
		</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.eclipse.microprofile.config</groupId>
			<artifactId>microprofile-config-api</artifactId>
			<version>${mp.config.version}</version>
			<scope>provided</scope>
		</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.extender</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.namespace.implementation</artifactId>
		</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>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.apache.aries.cdi</groupId>
				<artifactId>org.apache.aries.cdi.bom</artifactId>
				<version>${project.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.felix</groupId>
				<artifactId>org.apache.felix.gogo.bom</artifactId>
				<version>1.0.2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<profiles>
		<profile>
			<id>experimental</id>

			<properties>
				<maven.test.skip>false</maven.test.skip>
			</properties>

			<dependencies>
				<dependency>
					<groupId>org.osgi</groupId>
					<artifactId>org.osgi.test.assertj.framework</artifactId>
				</dependency>
				<dependency>
					<groupId>org.osgi</groupId>
					<artifactId>org.osgi.test.junit4</artifactId>
				</dependency>
			</dependencies>

			<build>
				<plugins>
					<plugin>
						<groupId>biz.aQute.bnd</groupId>
						<artifactId>bnd-maven-plugin</artifactId>
						<executions>
							<!-- Integration Test Configuration -->
							<execution>
								<id>bnd-process-test</id>
								<goals>
									<goal>bnd-process-tests</goal>
								</goals>
								<configuration>
									<bnd><![CDATA[
										p = org.apache.aries.cdi.extension.mp.config.test
										Export-Package: !${p}.tb*,${p}.*
										-make: (*).(jar); type=bnd; recipe="${.}/bnd/$1.bnd"
										-includeresource: \
											tb01.jar
									]]></bnd>
									<testCases>junit4</testCases>
									<includeClassesDir>false</includeClassesDir>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>maven-jar-plugin</artifactId>
						<executions>
							<execution>
								<id>test-jar</id>
								<goals>
									<goal>test-jar</goal>
								</goals>
								<configuration>
									<archive>
										<manifestFile>${project.build.testOutputDirectory}/META-INF/MANIFEST.MF</manifestFile>
									</archive>
									<excludes>
										<exclude>org/apache/aries/cdi/extension/mp/config/test/tb*/**</exclude>
									</excludes>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>biz.aQute.bnd</groupId>
						<artifactId>bnd-resolver-maven-plugin</artifactId>
						<configuration>
							<bundles>
								<bundle>target/${project.build.finalName}-tests.jar</bundle>
							</bundles>
							<scopes>
								<scope>compile</scope>
								<scope>runtime</scope>
								<scope>test</scope>
							</scopes>
						</configuration>
						<executions>
							<execution>
								<id>owb-resolve</id>
								<phase>package</phase>
								<goals>
									<goal>resolve</goal>
								</goals>
								<configuration>
									<bndruns>
										<bndrun>owb-itest.bndrun</bndrun>
									</bndruns>
								</configuration>
							</execution>
							<execution>
								<id>weld-resolve</id>
								<phase>package</phase>
								<goals>
									<goal>resolve</goal>
								</goals>
								<configuration>
									<bndruns>
										<bndrun>weld-itest.bndrun</bndrun>
									</bndruns>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<!-- This is the plugin runs the OSGi integration tests. -->
					<plugin>
						<groupId>biz.aQute.bnd</groupId>
						<artifactId>bnd-testing-maven-plugin</artifactId>
						<configuration>
							<bundles>
								<bundle>target/${project.build.finalName}-tests.jar</bundle>
							</bundles>
							<scopes>
								<scope>compile</scope>
								<scope>runtime</scope>
								<scope>test</scope>
							</scopes>
						</configuration>
						<executions>
							<execution>
								<id>testing-owb</id>
								<goals>
									<goal>testing</goal>
								</goals>
								<configuration>
									<bndruns>
										<bndrun>owb-itest.bndrun</bndrun>
									</bndruns>
								</configuration>
							</execution>
							<execution>
								<id>testing-weld</id>
								<goals>
									<goal>testing</goal>
								</goals>
								<configuration>
									<bndruns>
										<bndrun>weld-itest.bndrun</bndrun>
									</bndruns>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>maven-resources-plugin</artifactId>
						<executions>
							<execution>
								<id>default-testResources</id>
								<phase>process-test-resources</phase>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>maven-compiler-plugin</artifactId>
						<executions>
							<execution>
								<id>default-testCompile</id>
								<phase>test-compile</phase>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
