<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You 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.wicket</groupId>
		<artifactId>wicket-parent</artifactId>
		<version>9.0.0-M3</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<artifactId>wicket-cdi</artifactId>
	<packaging>bundle</packaging>
	<name>Wicket CDI</name>
	<description>
		Provides integration between Wicket and CDI containers. Enables injection of
		components and behaviors, as well as other non-contextual object instances.
		Also enables propagation of conversations between wicket artifacts such as pages
		and resources.
	</description>

	<properties>
		<automatic-module-name>org.apache.wicket.cdi</automatic-module-name>
	</properties>

	<dependencyManagement>
		<dependencies>
			<!-- local management because we can only define one GAV in the parent -->
			<dependency>
				<groupId>javax.enterprise</groupId>
				<artifactId>cdi-api</artifactId>
				<version>2.0.SP1</version>
				<scope>provided</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>javax.enterprise</groupId>
			<artifactId>cdi-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.wicket</groupId>
			<artifactId>wicket-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jboss.weld.module</groupId>
			<artifactId>weld-web</artifactId>
		</dependency>
		<!-- SUPPORT FOR JAVA 12 BUILD START -->
		<dependency>
			<groupId>org.jboss.weld</groupId>
			<artifactId>weld-core-impl</artifactId>
			<version>${weld.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.jboss.classfilewriter</groupId>
					<artifactId>jboss-classfilewriter</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.jboss.classfilewriter</groupId>
			<artifactId>jboss-classfilewriter</artifactId>
			<version>1.2.4.Final</version>
		</dependency>
		<!-- SUPPORT FOR JAVA 12 BUILD END -->
		<dependency>
			<groupId>org.jboss.weld.se</groupId>
			<artifactId>weld-se-core</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.vintage</groupId>
			<artifactId>junit-vintage-engine</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.jglue.cdi-unit</groupId>
			<artifactId>cdi-unit</artifactId>
			<exclusions>
				<exclusion>
					<artifactId>org.jboss.spec.javax.annotation</artifactId>
					<groupId>jboss-annotations-api_1.2_spec</groupId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-enforcer-plugin</artifactId>
					<configuration>
						<skip>true</skip>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>
