<?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.21.0</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.9.1</frontend-maven-plugin-version>
        <closure.compiler.maven.plugin.version>2.9.0</closure.compiler.maven.plugin.version>
        <primefaces.version>8.0</primefaces.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>v11.15.0</node.version>
        <npm.version>6.7.0</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>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <version>${frontend-maven-plugin-version}</version>
            <scope>compile</scope>
        </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>--mode 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>--mode development</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_2018</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>
                    <!-- Run checks -->
                    <execution>
                        <id>run check</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <arguments>run check</arguments>
                        </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>