<?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>6.0.0</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>
		<autoModuleName>apache.openmeetings.screenshare</autoModuleName>
	</properties>
	<dependencies>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
		</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>

