<?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 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.flex.flexjs.externs</groupId>
    <artifactId>flexjs-externs</artifactId>
    <version>0.7.0-SNAPSHOT</version>
  </parent>

  <artifactId>flexjs-externs-cordova</artifactId>
  <version>0.7.0-SNAPSHOT</version>
  <packaging>swc</packaging>

  <name>Apache Flex - FlexJS: Externs: Cordova</name>

  <properties>
    <cordova.version>4.11</cordova.version>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.flex.flexjs.compiler</groupId>
        <artifactId>flexjs-maven-plugin</artifactId>
        <version>0.7.0-SNAPSHOT</version>
        <extensions>true</extensions>
        <configuration>
          <includeSources>true</includeSources>
          <externcInput>
            <fileSet>
              <directory>${project.basedir}/src/main/javascript</directory>
              <includes>
                <include>**/*.js</include>
              </includes>
            </fileSet>
          </externcInput>
          <includeFiles>
            <include-file>
              <name>externs/cordova_file_plugin-4-11.js</name>
              <path>../src/main/javascript/cordova_file_plugin-4-11.js</path>
            </include-file>
          </includeFiles>
          <skipSwc>true</skipSwc>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.flex.flexjs.compiler</groupId>
            <artifactId>compiler-jx</artifactId>
            <version>0.7.0-SNAPSHOT</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.flex.flexjs.externs</groupId>
      <artifactId>flexjs-externs-js</artifactId>
      <version>0.7.0-SNAPSHOT</version>
      <type>swc</type>
      <classifier>extern</classifier>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

</project>
