<?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.flex.flexjs.compiler</groupId>
    <artifactId>flexjs-compiler-parent</artifactId>
    <version>0.8.0-SNAPSHOT</version>
  </parent>

  <artifactId>compiler-jx</artifactId>
  <version>0.8.0-SNAPSHOT</version>

  <name>Apache Flex - FlexJS: Compiler: Compiler-JX</name>

  <build>
    <plugins>
      <!-- Make the surefire execute all unit-tests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</version>
        <configuration>
          <includes>
            <include>org/**/Test*.java</include>
          </includes>
          <excludes>
            <exclude>org/apache/flex/compiler/internal/codegen/externals/**</exclude>
            <exclude>org/apache/flex/compiler/internal/codegen/js/flexjs/**</exclude>
            <exclude>**/TestGoogClass.java</exclude>
            <exclude>**/TestGoogEmitter.java</exclude>
            <exclude>**/TestGoogFile.java</exclude>
            <exclude>**/TestFlexJSMXMLApplication.java</exclude>
            <exclude>**/TestFlexJSMXMLScript.java</exclude>
            <exclude>**/TestSourceMapMXMLScript.java</exclude>
            <exclude>**/TestSourceMapMXMLEvents.java</exclude>
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.18.1</version>
        <configuration>
          <includes>
            <include>org/apache/flex/compiler/internal/codegen/js/flexjs/Test*.java</include>
            <!-- Disabled for now as these tests require the flex-typedefs repo to be located in a pre-defined location -->
            <!--include>org/apache/flex/compiler/internal/codegen/externals/Test*.java</include-->
          </includes>
          <excludes>
            <!-- This test seems to have issues. -->
            <exclude>**/TestFlexJSFile.java</exclude>
            <exclude>**/TestFlexJSProject.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.flex.flexjs.compiler</groupId>
      <artifactId>compiler</artifactId>
      <version>0.8.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-compress</artifactId>
      <version>1.11</version>
    </dependency>

    <dependency>
      <groupId>args4j</groupId>
      <artifactId>args4j</artifactId>
      <version>2.0.28</version>
    </dependency>
    <dependency>
      <groupId>org.codeartisans</groupId>
      <artifactId>org.json</artifactId>
      <version>20131017</version>
    </dependency>
    <dependency>
      <groupId>com.google.javascript</groupId>
      <artifactId>closure-compiler</artifactId>
      <version>v20161201</version>
    </dependency>
    <dependency>
      <groupId>org.clojure</groupId>
      <artifactId>google-closure-library</artifactId>
      <version>0.0-20150902-b129bb9e</version>
    </dependency>

    <dependency>
      <groupId>org.apache.flex.flexjs.compiler</groupId>
      <artifactId>compiler-test-utils</artifactId>
      <version>0.8.0-SNAPSHOT</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>
