<?xml version="1.0" encoding="UTF-8"?>
<!-- /******************************************************************************* 
	* Copyright (c) 2012 Rushan R. Gilmullin and others. * All rights reserved. 
	This program and the accompanying materials * are made available under the 
	terms of the Eclipse Public License v1.0 * which accompanies this distribution, 
	and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: 
	* Rushan R. Gilmullin - initial API and implementation *******************************************************************************/ -->
<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>org.eclipse.osbp.vaaclipse.widgets</artifactId>
	<packaging>eclipse-plugin</packaging>
	<parent>
		<groupId>org.eclipse.osbp.vaaclipse</groupId>
		<artifactId>org.eclipse.osbp.vaaclipse</artifactId>
		<version>0.9.0-SNAPSHOT</version>
		<relativePath>..</relativePath>
	</parent>

	<properties>
		<vaaclipse-version>0.9.0-SNAPSHOT</vaaclipse-version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	</properties>

	<dependencies>
<!--	
		<dependency>
			<groupId>org.vaadin.addons</groupId>
			<artifactId>dragdroplayouts</artifactId>
			<version>1.3.2</version>
		</dependency>
		<dependency>
			<groupId>org.vaadin.addon</groupId>
			<artifactId>easyuploads</artifactId>
			<version>7.4.2</version>
		</dependency>
-->		
		<dependency>
			<groupId>com.vaadin</groupId>
			<artifactId>vaadin-server</artifactId>
			<version>${vaadin.version}</version>
		</dependency>
		<dependency>
			<groupId>com.vaadin</groupId>
			<artifactId>vaadin-client</artifactId>
			<version>${vaadin.version}</version>
		</dependency>
		<dependency>
			<groupId>com.vaadin</groupId>
			<artifactId>vaadin-client-compiled</artifactId>
			<version>${vaadin.version}</version>
		</dependency>
		<dependency>
			<groupId>com.vaadin</groupId>
			<artifactId>vaadin-shared</artifactId>
			<version>${vaadin.version}</version>
		</dependency>
		<dependency>
			<groupId>com.vaadin</groupId>
			<artifactId>vaadin-client-compiler</artifactId>
			<version>${vaadin.version}</version>
		</dependency>
		<dependency>
			<groupId>com.vaadin</groupId>
			<artifactId>vaadin-themes</artifactId>
			<version>${vaadin.version}</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.osbp.dependencies</groupId>
			<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.external.gwt</artifactId>
			<version>2.7.0-SNAPSHOT</version>
		</dependency>
	</dependencies>

	<build>
		<resources>
			<resource>
				<!-- This add sources, .gwt.xml files etc to jar from source directory. 
					Not quite maven convention byt easiest to setup this way. -->
				<directory>src</directory>
			</resource>
			<resource>
				<directory>src</directory>
			</resource>
		</resources>
		<sourceDirectory>src</sourceDirectory>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.5</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>com.vaadin</groupId>
				<artifactId>vaadin-maven-plugin</artifactId>
				<version>${vaadin.plugin.version}</version>
				<configuration>
					<extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
					<!-- <runTarget>mobilemail</runTarget> -->
					<!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This 
						way compatible with Vaadin eclipse plugin. -->
					<webappDirectory>${basedir}/VAADIN/widgetsets
					</webappDirectory>
					<hostedWebapp>${basedir}/VAADIN/widgetsets
					</hostedWebapp>
					<noServer>true</noServer>
					<!-- Remove draftCompile when project is ready -->
					<draftCompile>true</draftCompile>
					<strict>true</strict>
					<compileReport>false</compileReport>
					<style>PRETTY</style>
					<logLevel>DEBUG</logLevel>
					<runTarget>http://localhost:8080/</runTarget>

					<!-- Remove these when going to release dependencies -->
					<force>true</force>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>resources</goal>
							<goal>compile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
			<!-- directory is cleaned properly -->
			<plugin>
				<artifactId>maven-clean-plugin</artifactId>
				<configuration>
					<filesets>
						<fileset>
							<directory>${basedir}/VAADIN/widgetsets</directory>
						</fileset>
					</filesets>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>com.vaadin</groupId>
										<artifactId>vaadin-maven-plugin</artifactId>
										<versionRange>[2.3.0-1,)</versionRange>
										<goals>
											<goal>resources</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>com.vaadin</groupId>
										<artifactId>vaadin-maven-plugin</artifactId>
										<versionRange>[1.0.2,)</versionRange>
										<goals>
											<goal>update-widgetset</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>
