<?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>5.0.0-M1</version>
		<relativePath>..</relativePath>
	</parent>
	<artifactId>openmeetings-screenshare</artifactId>
	<packaging>jar</packaging>
	<name>Openmeetings Screen Sharing applet</name>
	<description>Module to build OpenMeetings web application to grab a screen and send it to a Server</description>
	<properties>
		<keystore.location>${project.build.directory}/screensharing_sign.keystore</keystore.location>
		<key.password>secret</key.password>
		<keystore.password>secret</keystore.password>
		<keystore.type>pkcs12</keystore.type>
		<key.alias>screen</key.alias>
		<site.basedir>${project.parent.basedir}</site.basedir>
		<jnlp.out.dir>${project.build.directory}/jnlp</jnlp.out.dir>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.red5</groupId>
			<artifactId>red5-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.mina</groupId>
			<artifactId>mina-core</artifactId>
			<version>${mina.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<executions>
					<execution>
						<id>create-template</id>
						<phase>generate-resources</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}</outputDirectory>
							<resources>
								<resource>
									<directory>${project.basedir}/src/main/jnlp/templates</directory>
									<includes>
										<include>*.jnlp</include>
									</includes>
									<filtering>true</filtering>
								</resource>
							</resources>
						</configuration>
					</execution>
					<execution>
						<id>copy-icons</id>
						<phase>generate-resources</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<outputDirectory>${jnlp.out.dir}</outputDirectory>
							<resources>
								<resource>
									<directory>${project.basedir}/src/main/jnlp/resources</directory>
									<includes>
										<include>*.png</include>
									</includes>
									<filtering>false</filtering>
								</resource>
							</resources>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<phase>generate-resources</phase>
						<configuration>
							<target>
								<copy file="${project.build.directory}/template.jnlp" tofile="${jnlp.out.dir}/APPLICATION.jnlp" overwrite="true" force="true" />
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>keytool-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals><goal>generateKeyPair</goal></goals>
						<phase>generate-resources</phase>
						<configuration>
							<keystore>${keystore.location}</keystore>
							<storepass>${keystore.password}</storepass>
							<keypass>${key.password}</keypass>
							<alias>${key.alias}</alias>
							<dname>cn=Sebastian Wagner, ou=technolog, o=openmeetings.apache.org, c=DE</dname>
							<ext></ext>
							<validity>365</validity>
							<keyalg>RSA</keyalg>
							<keysize>4096</keysize>
							<storetype>${keystore.type}</storetype>
							<skip>${jarsigner.skip}</skip>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<executions>
					<execution>
						<id>make-screen-sharing</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<descriptors>
								<descriptor>src/main/assembly/assembly.xml</descriptor>
							</descriptors>
							<outputDirectory>${jnlp.out.dir}</outputDirectory>
							<archive>
								<manifest>
									<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
									<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
									<mainClass>org.apache.openmeetings.screenshare.Core</mainClass>
								</manifest>
								<manifestEntries>
									<Application-Name>${project.name}</Application-Name>
									<Built-By>OpenMeetings - https://openmeetings.apache.org</Built-By>
									<Built-On>${maven.build.timestamp}</Built-On>
									<Git-Revision>${buildNumber}</Git-Revision>
									<Product-Version>${project.version}</Product-Version>
									<Permissions>all-permissions</Permissions>
									<Trusted-Only>true</Trusted-Only>
									<Codebase>*</Codebase>
									<Crypto-Strength>unlimited</Crypto-Strength>
								</manifestEntries>
							</archive>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>copy-bcprov</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${jnlp.out.dir}</outputDirectory>
							<includeArtifactIds>bcprov-jdk15on</includeArtifactIds>
							<overWriteReleases>true</overWriteReleases>
							<overWriteSnapshots>true</overWriteSnapshots>
							<overWriteIfNewer>true</overWriteIfNewer>
							<excludeTransitive>false</excludeTransitive>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jarsigner-plugin</artifactId>
				<executions>
					<execution>
						<id>sign-applet</id>
						<phase>package</phase>
						<goals><goal>sign</goal></goals>
						<configuration>
							<archiveDirectory>${jnlp.out.dir}</archiveDirectory>
							<keystore>${keystore.location}</keystore>
							<keypass>${key.password}</keypass>
							<storepass>${keystore.password}</storepass>
							<storetype>${keystore.type}</storetype>
							<alias>${key.alias}</alias>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

