<?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>7.3.0</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<artifactId>wicket-cdi</artifactId>
	<packaging>jar</packaging>
	<name>Wicket CDI Integration</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>
	<dependencyManagement>
    	<dependencies>
            <!-- local management because we can only define one GAV in the parent -->
        	<dependency>
        		<groupId>javax.enterprise</groupId>
        		<artifactId>cdi-api</artifactId>
        		<version>1.0-SP4</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.seam.conversation</groupId>
			<artifactId>seam-conversation-spi</artifactId>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
	</dependencies>
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>clirr-maven-plugin</artifactId>
					<executions>
						<execution>
							<id>clirr-check</id>
							<phase>compile</phase>
							<goals>
								<goal>check</goal>
							</goals>
							<configuration>
								<comparisonVersion>6.1.0</comparisonVersion>
								<failOnError>true</failOnError>
								<logResults>true</logResults>
							</configuration>
						</execution>
					</executions>
					<configuration>
						<comparisonVersion>6.1.0</comparisonVersion>
						<failOnError>true</failOnError>
						<logResults>true</logResults>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>
