<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.royale.compiler</groupId>
    <artifactId>royale-compiler-parent</artifactId>
    <version>0.9.8</version>
  </parent>

  <artifactId>compiler-externc</artifactId>
  <version>0.9.8</version>

  <name>Apache Royale: Compiler: Externc</name>
  <description>The Apache Royale Compiler Externs Compiler</description>

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.royale.compiler</groupId>
            <artifactId>compiler-build-tools</artifactId>
            <version>${compiler-build-tools.version}</version>
            <executions>
                <execution>
                    <id>unpack-closure-externs</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>unpack-resources</goal>
                    </goals>
                    <configuration>
                        <resource>externs.zip</resource>
                    </configuration>
                </execution>
            </executions>
            <!--
             Dependency to the closure compiler externs artifact so
             the "unpack-resources" goal can find the externs.zip
             -->
            <dependencies>
                <dependency>
                    <groupId>com.google.javascript</groupId>
                    <artifactId>closure-compiler-externs</artifactId>
                    <version>v20181210</version>
                </dependency>
            </dependencies>
        </plugin>
        <!-- Download JavaScript from GitHub -->
        <plugin>
            <groupId>com.googlecode.maven-download-plugin</groupId>
            <artifactId>download-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>get-svg</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/contrib/externs/svg.js</url>
                        <outputFileName>svg.js</outputFileName>
                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
                        <skipCache>true</skipCache>
                    </configuration>
                </execution>
                <execution>
                    <id>get-es3</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/es3.js</url>
                        <outputFileName>es3.js</outputFileName>
                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
                        <skipCache>true</skipCache>
                        <overwrite>true</overwrite>
                    </configuration>
                </execution>
                <execution>
                    <id>get-es6</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/es6.js</url>
                        <outputFileName>es6.js</outputFileName>
                        <outputDirectory>${project.build.directory}/downloads</outputDirectory>
                        <skipCache>true</skipCache>
                        <overwrite>true</overwrite>
                    </configuration>
                </execution>
                <execution>
                    <id>get-w3c_composition_event</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_composition_event.js</url>
                        <outputFileName>w3c_composition_event.js</outputFileName>
                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
                        <skipCache>true</skipCache>
                        <overwrite>true</overwrite>
                    </configuration>
                </execution>
                <execution>
                    <id>get-w3c_css</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_css.js</url>
                        <outputFileName>w3c_css.js</outputFileName>
                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
                        <skipCache>true</skipCache>
                        <overwrite>true</overwrite>
                    </configuration>
                </execution>
                <execution>
                    <id>get-gecko_dom</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/gecko_dom.js</url>
                        <outputFileName>gecko_dom.js</outputFileName>
                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
                        <skipCache>true</skipCache>
                        <overwrite>true</overwrite>
                    </configuration>
                </execution>
                <execution>
                    <id>get-w3c_dom2</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/w3c_dom2.js</url>
                        <outputFileName>w3c_dom2.js</outputFileName>
                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
                        <skipCache>true</skipCache>
                        <overwrite>true</overwrite>
                    </configuration>
                </execution>
                <execution>
                    <id>get-html5</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>wget</goal>
                    </goals>
                    <configuration>
                        <url>https://raw.githubusercontent.com/royale-extras/closure-compiler/royale/externs/browser/html5.js</url>
                        <outputFileName>html5.js</outputFileName>
                        <outputDirectory>${project.build.directory}/downloads/browser</outputDirectory>
                        <skipCache>true</skipCache>
                        <overwrite>true</overwrite>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        
        <!-- Make the surefire execute all unit-tests -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>org/**/TestExternES3.java</include>
                    <include>org/**/TestExternChrome.java</include>
                    <include>org/**/TestExternJSMissing.java</include>
                    <include>org/**/TestAnnotationEnum.java</include>
                    <include>org/**/TestCollectImports.java</include>
                    <include>org/**/TestConstructor.java</include>
                    <include>org/**/TestPackageNamespace.java</include>
                    <include>org/**/TestReferenceModel.java</include>
                    <include>org/**/TestTypeTypedefs.java</include>
                    <include>org/**/TestTypeInheritance.java</include>
                </includes>
                <excludes>
                </excludes>
            </configuration>
        </plugin>
        
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
                <includes>
                    <include>org/**/TestExternES3.java</include>
                    <include>org/**/TestExternChrome.java</include>
                    <include>org/**/TestExternJSMissing.java</include>
                    <include>org/**/TestAnnotationEnum.java</include>
                    <include>org/**/TestCollectImports.java</include>
                    <include>org/**/TestConstructor.java</include>
                    <include>org/**/TestPackageNamespace.java</include>
                    <include>org/**/TestReferenceModel.java</include>
                    <include>org/**/TestTypeTypedefs.java</include>
                    <include>org/**/TestTypeInheritance.java</include>
                </includes>
                <excludes>
                </excludes>
            </configuration>
        </plugin>
        
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <id>default-jar</id>
                    <configuration>
                        <archive>
                            <manifestEntries>
                                <!-- These paths are all defined the way the layout will be in the distribution -->
                                <Class-Path>../../compiler/lib/external/commons-cli.jar ../../lib/external/commons-cli.jar ../../compiler/lib/external/commons-io.jar ../../lib/external/commons-io.jar ../../compiler/lib/external/guava.jar ../../lib/external/guava.jar ../../compiler/lib/external/flex-tool-api.jar ../../lib/external/flex-tool-api.jar google/closure-compiler/compiler.jar ../../compiler/lib/compiler-common.jar ../../lib/compiler-common.jar ..</Class-Path>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </execution>
                <execution>
                    <id>default-test-jar</id>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
  </build>


  <dependencies>
    <dependency>
      <groupId>org.apache.royale.compiler</groupId>
      <artifactId>compiler-common</artifactId>
      <version>0.9.8</version>
    </dependency>
    <dependency>
      <groupId>com.google.javascript</groupId>
      <artifactId>closure-compiler</artifactId>
      <version>v20181210</version>
    </dependency>

    <dependency>
      <groupId>org.apache.royale.compiler</groupId>
      <artifactId>compiler-test-utils</artifactId>
      <version>0.9.8</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

<properties /></project>
