<?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.openmeetings</groupId>
		<artifactId>openmeetings-parent</artifactId>
		<version>4.0.6</version>
		<relativePath>..</relativePath>
	</parent>
	<artifactId>openmeetings-flash</artifactId>
	<packaging>swf</packaging>
	<name>Openmeetings Flash</name>
	<description>Module for OpenMeetings OpenLaszlo/Flex client</description>
	<properties>
		<site.basedir>${project.parent.basedir}</site.basedir>
		<skip.site.copy>false</skip.site.copy>
		<flex.sdk.version>4.16.0</flex.sdk.version>
		<playerglobal.version>23.0</playerglobal.version>
		<flexmojos-maven-plugin.version>7.1.1</flexmojos-maven-plugin.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.apache.flex</groupId>
			<artifactId>framework</artifactId>
			<version>${flex.sdk.version}</version>
			<type>pom</type>
		</dependency>
		<dependency>
			<groupId>com.adobe.flash.framework</groupId>
			<artifactId>playerglobal</artifactId>
			<version>${playerglobal.version}</version>
			<type>swc</type>
		</dependency>
	</dependencies>
	<build>
		<sourceDirectory>src/main/flex</sourceDirectory>
		<plugins>
			<plugin>
				<groupId>net.flexmojos.oss</groupId>
				<artifactId>flexmojos-maven-plugin</artifactId>
				<version>${flexmojos-maven-plugin.version}</version>
				<extensions>true</extensions>
				<dependencies>
					<dependency>
						<groupId>org.apache.flex</groupId>
						<artifactId>compiler</artifactId>
						<version>${flex.sdk.version}</version>
						<type>pom</type>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<id>main-compile</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>compile-swf</goal>
						</goals>
						<configuration>
							<sourceFile>main.mxml</sourceFile>
						</configuration>
					</execution>
					<execution>
						<id>nettest-compile</id>
						<phase>generate-resources</phase>
						<goals>
							<goal>compile-swf</goal>
						</goals>
						<configuration>
							<sourceFile>nettest.mxml</sourceFile>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<id>main-move</id>
						<phase>process-sources</phase>
						<configuration>
							<target>
								<move verbose="true" force="true" overwrite="true"
									file="${project.build.directory}/${project.build.finalName}.${project.packaging}"
									tofile="${project.build.directory}/main.swf"/>
							</target>
							<skip>${om.quick.build}</skip>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
					<execution>
						<id>nettest-move</id>
						<phase>process-resources</phase>
						<configuration>
							<target>
								<move verbose="true" force="true" overwrite="true"
									file="${project.build.directory}/${project.build.finalName}.${project.packaging}"
									tofile="${project.build.directory}/networktest.swf"/>
							</target>
							<skip>${om.quick.build}</skip>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
