<?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>

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

	<properties>
		<gpg.skip>true</gpg.skip>
		<maven.deploy.skip>true</maven.deploy.skip>
		<maven.install.skip>true</maven.install.skip>
	</properties>

	<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.auth.*,\
							org.eclipse.microprofile.jwt.*
						-includepackage: org.apache.geronimo.microprofile.impl.jwtauth.*
						-cdiannotations:
						-noclassforname: true
						-fixupmessages: "Split package...";is:=ignore
						-bundleannotations: \
							!org.eclipse.microprofile.*,\
							org.apache.aries.cdi.extension.mp.jwt.*
					]]></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.build.tools.AddExtensionRequirement</plugin>
							<arguments>
								<argument>
									<index>1</index>
									<value>eclipse.microprofile.jwt-auth</value>
								</argument>
								<argument>
									<index>2</index>
									<value>${mp.jwt.auth.version}</value>
								</argument>
								<argument>
									<index>3</index>
									<value>org.eclipse.microprofile.**</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>
			<version>${bnd.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.aries.cdi</groupId>
			<artifactId>org.apache.aries.cdi.extra</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.aries.cdi</groupId>
			<artifactId>org.apache.aries.cdi.extension.mp-config</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.aries.cdi</groupId>
			<artifactId>org.apache.aries.cdi.spi</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.felix</groupId>
			<artifactId>org.apache.felix.http.servlet-api</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-jaxrs_2.1_spec</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.specs</groupId>
			<artifactId>geronimo-jcdi_2.0_spec</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.specs</groupId>
			<artifactId>geronimo-json_1.1_spec</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.microprofile.jwt</groupId>
			<artifactId>microprofile-jwt-auth-api</artifactId>
			<version>${mp.jwt.auth.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo</groupId>
			<artifactId>geronimo-jwt-auth</artifactId>
			<version>1.0.4-SNAPSHOT</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>org.osgi.service.http.whiteboard</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.service.jaxrs</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>
				<johnzon.version>1.2.3-SNAPSHOT</johnzon.version>
				<jax.rs.whiteboard.version>1.0.7-SNAPSHOT</jax.rs.whiteboard.version>
			</properties>

			<dependencies>
				<dependency>
					<groupId>org.apache.johnzon</groupId>
					<artifactId>johnzon-osgi</artifactId>
					<version>${johnzon.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><!--$NO-MVN-MAN-VER$-->
					<scope>runtime</scope>
				</dependency>

				<dependency>
					<groupId>org.eclipse.microprofile.jwt</groupId>
					<artifactId>microprofile-jwt-auth-tck</artifactId>
					<version>${mp.jwt.auth.version}</version>
					<scope>test</scope>
					<exclusions>
						<exclusion>
							<groupId>javax.enterprise</groupId>
							<artifactId>cdi-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.testng</groupId>
							<artifactId>testng</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.shrinkwrap</groupId>
							<artifactId>shrinkwrap-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.arquillian.container</groupId>
							<artifactId>arquillian-container-spi</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.arquillian.container</groupId>
							<artifactId>
								arquillian-container-test-spi
							</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.arquillian.testng</groupId>
							<artifactId>arquillian-testng-container</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.shrinkwrap.resolver</groupId>
							<artifactId>
								shrinkwrap-resolver-depchain
							</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.eclipse.microprofile.jwt</groupId>
					<artifactId>microprofile-jwt-auth-tck</artifactId>
					<version>${mp.jwt.auth.version}</version>
					<type>test-jar</type>
					<scope>test</scope>
					<exclusions>
						<exclusion>
							<groupId>javax.enterprise</groupId>
							<artifactId>cdi-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.testng</groupId>
							<artifactId>testng</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.shrinkwrap.resolver</groupId>
							<artifactId>shrinkwrap-resolver-depchain</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.shrinkwrap</groupId>
							<artifactId>shrinkwrap-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.arquillian.container</groupId>
							<artifactId>arquillian-container-spi</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.arquillian.container</groupId>
							<artifactId>arquillian-container-test-spi</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.arquillian.testng</groupId>
							<artifactId>arquillian-testng-container</artifactId>
						</exclusion>
					</exclusions>
				</dependency>

				<dependency>
					<groupId>org.osgi</groupId>
					<artifactId>org.osgi.test.assertj</artifactId>
					<version>1.0.0-SNAPSHOT</version>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.osgi</groupId>
					<artifactId>org.osgi.test.junit4</artifactId>
					<version>1.0.0-SNAPSHOT</version>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpclient-osgi</artifactId>
					<version>4.5.3</version>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpcore-osgi</artifactId>
					<version>4.4.6</version>
					<scope>test</scope>
				</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.jwt.test
										Export-Package: !${p}.tb*,${p}.*
										Import-Package:	\
											!net.jcip.annotations.*,\
											!org.testng.*,\
											!org.bouncycastle.*,\
											*
										Private-Package: \
											com.nimbusds.*,\
											net.minidev.json.*,\
											org.eclipse.microprofile.jwt.tck.util
										-make: (*).(jar); type=bnd; recipe="${.}/bnd/$1.bnd"
										-includeresource: \
											@microprofile-jwt-auth-tck-[0-9.]*-tests.jar!/privateKey.pem,\
											@microprofile-jwt-auth-tck-[0-9.]*-tests.jar!/Token2.json,\
											tb01.jar
										-fixupmessages: "Split package...";is:=ignore
									]]></bnd>
									<testCases>junit4</testCases>
									<includeClassesDir>false</includeClassesDir>
								</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>
							<failOnChanges>false</failOnChanges>
							<includeDependencyManagement>true</includeDependencyManagement>
							<resolve>true</resolve>
							<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>
					<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/jwt/test/tb*/**</exclude>
									</excludes>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
