<?xml version="1.0" encoding="UTF-8" ?>
<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>

	<name>${project.groupId}:${project.artifactId}</name>
	<description>JSF (Primefaces) component for the monaco code editor.</description>
	<packaging>jar</packaging>
	<url>https://github.com/blutorange/primefaces-monaco</url>

	<groupId>com.github.blutorange</groupId>
	<artifactId>primefaces.monaco</artifactId>
	<version>0.22.1</version>

	<properties>
		<maven.resources.plugin.version>3.1.0</maven.resources.plugin.version>
		<maven.compiler.plugin.version>3.8.0</maven.compiler.plugin.version>
		<maven.source.plugin.version>3.0.1</maven.source.plugin.version>
		<maven.javadoc.plugin.version>3.0.1</maven.javadoc.plugin.version>
		<maven.clean.plugin.version>3.1.0</maven.clean.plugin.version>
		<maven.gpg.plugin.version>1.6</maven.gpg.plugin.version>
		<vdldoc.maven.plugin.version>1.0</vdldoc.maven.plugin.version>
		<frontend-maven-plugin-version>1.11.0</frontend-maven-plugin-version>
		<closure.compiler.maven.plugin.version>2.19.0</closure.compiler.maven.plugin.version>
		<primefaces.version>8.0</primefaces.version>
		<owasp-encoder.version>1.2.3</owasp-encoder.version>
		<nexus.staging.version>1.6.8</nexus.staging.version>
		<faces.version>2.2</faces.version>
		<build.helper.maven.plugin.version>3.0.0</build.helper.maven.plugin.version>
		<node.version>v14.15.1</node.version>
		<npm.version>6.14.8</npm.version>
	</properties>

	<licenses>
		<license>
			<name>The MIT License (MIT)</name>
			<url>https://opensource.org/licenses/MIT</url>
		</license>
	</licenses>

	<developers>
		<developer>
			<name>Andre Wachsmuth</name>
			<email>wachsmuth.andre@gmx.de</email>
			<organization>Homelab</organization>
			<organizationUrl>https://github.com/blutorange</organizationUrl>
		</developer>
	</developers>

	<scm>
		<connection>scm:git:git://github.com/blutorange/primefaces-monaco.git</connection>
		<developerConnection>scm:git:ssh://github.com:blutorange/primefaces-monaco.git</developerConnection>
		<url>https://github.com/blutorange/primefaces-monaco/tree/master</url>
	</scm>

	<distributionManagement>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
		</repository>
	</distributionManagement>

	<dependencies>
		<dependency>
			<groupId>org.owasp.encoder</groupId>
			<artifactId>encoder</artifactId>
			<version>${owasp-encoder.version}</version>
		</dependency>
		<dependency>
			<groupId>org.primefaces</groupId>
			<artifactId>primefaces</artifactId>
			<scope>provided</scope>
			<version>${primefaces.version}</version>
		</dependency>
		<dependency>
			<groupId>javax.faces</groupId>
			<artifactId>javax.faces-api</artifactId>
			<version>${faces.version}</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

	<profiles>
		<profile>
			<id>release</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.sonatype.plugins</groupId>
						<artifactId>nexus-staging-maven-plugin</artifactId>
						<version>${nexus.staging.version}</version>
						<extensions>true</extensions>
						<configuration>
							<serverId>ossrh</serverId>
							<nexusUrl>https://oss.sonatype.org/</nexusUrl>
							<autoReleaseAfterClose>true</autoReleaseAfterClose>
						</configuration>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>${maven.gpg.plugin.version}</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>default</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<is.dev.build>false</is.dev.build>
				<node.arguments>--env production</node.arguments>
				<closure.compilation.level>SIMPLE_OPTIMIZATIONS</closure.compilation.level>
			</properties>
		</profile>
		<profile>
			<id>dev</id>
			<properties>
				<is.dev.build>true</is.dev.build>
				<node.arguments>--env production=false</node.arguments>
				<closure.compilation.level>WHITESPACE_ONLY</closure.compilation.level>
				<jsf.projectStage>Development</jsf.projectStage>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>com.github.blutorange</groupId>
						<artifactId>closure-compiler-maven-plugin</artifactId>
						<configuration>
							<closureEmitUseStrict>false</closureEmitUseStrict>
							<closureForceInjectLibs>
								<closureForceInjectLib>base</closureForceInjectLib>
								<closureForceInjectLib>es6_runtime</closureForceInjectLib>
							</closureForceInjectLibs>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>m2e</id>
			<activation>
				<property>
					<name>m2e.version</name>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>com.github.blutorange</groupId>
						<artifactId>closure-compiler-maven-plugin</artifactId>
						<executions>
							<execution>
								<id>default-minify</id>
								<phase>generate-resources</phase>
								<configuration>
									<closureEmitUseStrict>false</closureEmitUseStrict>
									<closureForceInjectLibs>
										<closureForceInjectLib>base</closureForceInjectLib>
										<closureForceInjectLib>es6_runtime</closureForceInjectLib>
									</closureForceInjectLibs>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<build>
		<resources>
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
			</resource>
			<resource>
				<directory>${project.build.directory}/generated-sources/npm</directory>
				<targetPath>META-INF/resources/primefaces-blutorange/monacoEditor</targetPath>
			</resource>
			<resource>
				<directory>${project.build.directory}/generated-sources/closure</directory>
				<targetPath>META-INF/resources/primefaces-blutorange/monacoEditor</targetPath>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>${maven.source.plugin.version}</version>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar-no-fork</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>${maven.javadoc.plugin.version}</version>
				<configuration>
					<encoding>UTF-8</encoding>
					<source>8</source>
					<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
				</configuration>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>com.github.matinh.vdldoc</groupId>
				<artifactId>vdldoc-maven-plugin</artifactId>
				<version>${vdldoc.maven.plugin.version}</version>
				<configuration>
					<reportOutputDirectory>${project.basedir}/docs</reportOutputDirectory>
					<documentTitle>Primefaces Monaco Editor</documentTitle>
				</configuration>
				<goals>
					<id>attach-vdldocs</id>
					<goal>vdldoc</goal>
				</goals>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<version>${build.helper.maven.plugin.version}</version>
				<executions>
					<execution>
						<id>test</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>add-source</goal>
						</goals>
						<configuration>
							<sources>
								<source>${basedir}/target/generated-sources/java/</source>
							</sources>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>${maven.compiler.plugin.version}</version>
				<configuration>
					<encoding>UTF-8</encoding>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>${maven.resources.plugin.version}</version>
				<configuration>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-clean-plugin</artifactId>
				<version>${maven.clean.plugin.version}</version>
				<configuration>
					<filesets>
						<fileset>
							<directory>${project.basedir}/src/npm/node_modules</directory>
							<followSymlinks>false</followSymlinks>
						</fileset>
					</filesets>
				</configuration>
			</plugin>
			<plugin>
				<groupId>com.github.blutorange</groupId>
				<artifactId>closure-compiler-maven-plugin</artifactId>
				<version>${closure.compiler.maven.plugin.version}</version>
				<configuration>
					<force>true</force>

					<closureCompilationLevel>${closure.compilation.level}</closureCompilationLevel>
					<closurePrettyPrint>${is.dev.build}</closurePrettyPrint>
					<closureCreateSourceMap>${is.dev.build}</closureCreateSourceMap>
					<closureDebug>${is.dev.build}</closureDebug>
					<closureIncludeSourcesContent>true</closureIncludeSourcesContent>
					<closureSourceMapOutputType>inline</closureSourceMapOutputType>
					<closureLanguageIn>ECMASCRIPT_2020</closureLanguageIn>
					<closureLanguageOut>ECMASCRIPT3</closureLanguageOut>
					<closureOutputWrapper>(function(){%output%}).call(window);</closureOutputWrapper>
					<closureAssumeFunctionWrapper>true</closureAssumeFunctionWrapper>
					<closureDependencyMode>PRUNE</closureDependencyMode>
					<closureModuleResolution>NODE</closureModuleResolution>

					<baseSourceDir>${project.basedir}/src/main/</baseSourceDir>
					<baseTargetDir>${project.basedir}/target/generated-sources</baseTargetDir>
					<sourceDir>js</sourceDir>
					<targetDir>closure</targetDir>
				</configuration>
				<executions>
					<execution>
						<id>minify-inline-widget</id>
						<configuration>
							<encoding>UTF-8</encoding>
							<includes>
								<include>promise-queue.js</include>
								<include>util.js</include>
								<include>widget-base.js</include>
								<include>widget-inline.js</include>
							</includes>
							<outputFilename>widget-inline.js</outputFilename>
							<closureDependencyEntryPoints>
								<closureDependencyEntryPoint>file:widget-inline.js</closureDependencyEntryPoint>
							</closureDependencyEntryPoints>
						</configuration>
						<goals>
							<goal>minify</goal>
						</goals>
						<phase>generate-resources</phase>
					</execution>
					<execution>
						<id>minify-framed-widget</id>
						<configuration>
							<encoding>UTF-8</encoding>
							<includes>
								<include>util.js</include>
								<include>widget-base.js</include>
								<include>widget-framed.js</include>
							</includes>
							<outputFilename>widget-framed.js</outputFilename>
							<closureDependencyEntryPoints>
								<closureDependencyEntryPoint>file:widget-framed.js</closureDependencyEntryPoint>
							</closureDependencyEntryPoints>
						</configuration>
						<goals>
							<goal>minify</goal>
						</goals>
						<phase>generate-resources</phase>
					</execution>
					<execution>
						<id>minify-monaco-iframe</id>
						<configuration>
							<encoding>UTF-8</encoding>
							<includes>
								<include>util.js</include>
								<include>monaco-iframe.js</include>
							</includes>
							<outputFilename>monaco-iframe.js</outputFilename>
							<closureDependencyEntryPoints>
								<closureDependencyEntryPoint>file:monaco-iframe.js</closureDependencyEntryPoint>
							</closureDependencyEntryPoints>
						</configuration>
						<goals>
							<goal>minify</goal>
						</goals>
						<phase>generate-resources</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>com.github.eirslett</groupId>
				<artifactId>frontend-maven-plugin</artifactId>
				<version>${frontend-maven-plugin-version}</version>
				<configuration>
					<nodeVersion>${node.version}</nodeVersion>
					<npmVersion>${npm.version}</npmVersion>
					<installDirectory>${project.basedir}/target/node</installDirectory>
					<workingDirectory>${project.basedir}/src/npm</workingDirectory>
				</configuration>
				<executions>
					<!-- Install node -->
					<execution>
						<id>install node and npm</id>
						<goals>
							<goal>install-node-and-npm</goal>
						</goals>
						<phase>generate-resources</phase>
					</execution>
					<!-- Install dependencies -->
					<execution>
						<id>npm install</id>
						<goals>
							<goal>npm</goal>
						</goals>
						<phase>generate-resources</phase>
						<configuration>
							<arguments>install</arguments>
							<testFailureIgnore>true</testFailureIgnore>
						</configuration>
					</execution>
					<!-- Generate typedoc -->
					<execution>
						<id>generate typedoc</id>
						<goals>
							<goal>npm</goal>
						</goals>
						<phase>generate-resources</phase>
						<configuration>
							<arguments>run typedoc</arguments>
						</configuration>
					</execution>
					<!-- Generate locales -->
					<execution>
						<id>generate locales</id>
						<goals>
							<goal>npm</goal>
						</goals>
						<phase>generate-resources</phase>
						<configuration>
							<arguments>run generate-locales</arguments>
						</configuration>
					</execution>
					<!-- Generate extras -->
					<execution>
						<id>generate extras</id>
						<goals>
							<goal>npm</goal>
						</goals>
						<phase>generate-resources</phase>
						<configuration>
							<arguments>run generate-extras</arguments>
						</configuration>
					</execution>
					<!-- Generate editor options -->
					<execution>
						<id>generate editor options</id>
						<goals>
							<goal>npm</goal>
						</goals>
						<phase>generate-resources</phase>
						<configuration>
							<arguments>run generate-editor-options</arguments>
						</configuration>
					</execution>
					<!-- Run build -->
					<execution>
						<id>webpack build</id>
						<goals>
							<goal>webpack</goal>
						</goals>
						<phase>generate-resources</phase>
						<configuration>
							<arguments>${node.arguments}</arguments>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
