<?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>8.0.0-M9</version>
		<relativePath>../../pom.xml</relativePath>
	</parent>

	<artifactId>wicket-arquillian-testing</artifactId>
  <version>8.0.0</version>
	<packaging>war</packaging>

	<name>Wicket Arquillian Testing</name>

	<description>
        A sample JAVA EE 6 project demonstrating how to use Arquillian with Wicket Framework deployed on JBoss WildFly managed downloaded from maven repository (NEXUS for example) and unpacked with dependency plugin.
        WAR version (everything in a single .war file).
    </description>

	<properties>
		<!-- port configuration -->
		<wicket.arquillian.server.port>18787</wicket.arquillian.server.port>
		<java.debug.wire.protocol.port>48787</java.debug.wire.protocol.port>
		<wicket.arquillian.management.port>11091</wicket.arquillian.management.port>
		<!-- end port configuration -->

		<arquillian.version>1.1.13.Final</arquillian.version>
		<maven.dependency.plugin.version>2.10</maven.dependency.plugin.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<wildfly.version>8.2.1.Final</wildfly.version>
		<version.wildfly.maven.plugin>1.0.2.Final</version.wildfly.maven.plugin>
		<jee.spec.version>1.1.0.Final</jee.spec.version>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.jboss.arquillian</groupId>
				<artifactId>arquillian-bom</artifactId>
				<version>${arquillian.version}</version>
				<scope>import</scope>
				<type>pom</type>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>org.jboss.spec</groupId>
			<artifactId>jboss-javaee-7.0</artifactId>
			<version>${jee.spec.version}</version>
			<type>pom</type>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.wildfly</groupId>
			<artifactId>wildfly-arquillian-container-embedded</artifactId>
			<version>${wildfly.version}</version>
		</dependency>
		<dependency>
			<groupId>org.wildfly</groupId>
			<artifactId>wildfly-embedded</artifactId>
			<version>${wildfly.version}</version>
		</dependency>
		<dependency>
			<groupId>org.jboss.arquillian.junit</groupId>
			<artifactId>arquillian-junit-container</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- Wicket CDI integration. -->
		<dependency>
			<groupId>org.apache.wicket</groupId>
			<artifactId>wicket-cdi</artifactId>
		</dependency>

		<!-- Wicket -->
		<dependency>
			<groupId>org.apache.wicket</groupId>
			<artifactId>wicket-core</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.jboss.shrinkwrap.resolver</groupId>
			<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jboss.shrinkwrap.resolver</groupId>
			<artifactId>shrinkwrap-resolver-spi</artifactId>
		</dependency>

	</dependencies>

	<build>
		<resources>
			 <resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-dependency-plugin</artifactId>
					<version>${maven.dependency.plugin.version}</version>
					<executions>
						<execution>
							<id>unpack</id>
							<phase>process-test-classes</phase>
							<goals>
								<goal>unpack</goal>
							</goals>
							<configuration>
								<artifactItems>
									<artifactItem>
										<groupId>org.wildfly</groupId>
										<artifactId>wildfly-dist</artifactId>
										<version>${wildfly.version}</version>
										<type>zip</type>
										<overWrite>false</overWrite>
										<outputDirectory>${project.build.directory}</outputDirectory>
									</artifactItem>
								</artifactItems>
							</configuration>
						</execution>
					</executions>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>${maven.surefire.version}</version>
					<configuration>
						<systemPropertyVariables>
							<!-- <jboss.socket.binding.port-offset>1100</jboss.socket.binding.port-offset> -->
							<jboss.management.http.port>${wicket.arquillian.management.port}</jboss.management.http.port>
							<jboss.http.port>${wicket.arquillian.server.port}</jboss.http.port>
							<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
							<jboss.home>${project.build.directory}/wildfly-${wildfly.version}</jboss.home>
							<module.path>${project.build.directory}/wildfly-${wildfly.version}/modules</module.path>
						</systemPropertyVariables>
						<redirectTestOutputToFile>false</redirectTestOutputToFile>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.wildfly.plugins</groupId>
					<artifactId>wildfly-maven-plugin</artifactId>
					<version>${version.wildfly.maven.plugin}</version>
					<configuration>
						<port>${wicket.arquillian.management.port}</port>
						<filename>target/${project.build.finalName}.war</filename>
					</configuration>
				</plugin>

			</plugins>
		</pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.wildfly.plugins</groupId>
				<artifactId>wildfly-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

