<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.falcon</groupId>
    <artifactId>falcon-main</artifactId>
    <version>0.11-SNAPSHOT</version>
  </parent>
  <artifactId>falcon-ui</artifactId>
  <packaging>pom</packaging>
  <name>Apache Falcon UI</name>
  <description>Apache Falcon UI Application</description>
  <build>
    <plugins>

      <plugin>
        <groupId>com.github.eirslett</groupId>
        <artifactId>frontend-maven-plugin</artifactId>
        <version>0.0.23</version>
        <executions>

          <execution>
            <id>install node and npm</id>
            <goals>
              <goal>install-node-and-npm</goal>
            </goals>
            <configuration>
              <nodeVersion>v0.10.30</nodeVersion>
              <npmVersion>1.4.3</npmVersion>
            </configuration>
          </execution>

          <execution>
            <id>npm install</id>
            <goals>
              <goal>npm</goal>
            </goals>
            <configuration>
              <arguments>install</arguments>
            </configuration>
          </execution>

          <execution>
            <id>grunt build</id>
            <goals>
              <goal>grunt</goal>
            </goals>
            <configuration>
              <arguments>build</arguments>
            </configuration>
          </execution>

          <execution>
            <id>grunt test</id>
            <goals>
              <goal>grunt</goal>
            </goals>
            <configuration>
              <arguments>test</arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>app/js/lib/**</exclude>
            <exclude>app/css/bootstrap/**</exclude>
            <exclude>app/test/lib/**</exclude>
            <exclude>app/css/fonts/**</exclude>
            <exclude>app/css/styles/**</exclude>
            <exclude>app/config/loginData.json</exclude>
            <exclude>README.md</exclude>
            <exclude>dist/**</exclude>
            <exclude>node/**</exclude>
	    <exclude>node_modules/**</exclude>
            <exclude>package.json</exclude>
            <exclude>bower.json</exclude>
            <exclude>karma.conf.js</exclude>
            <exclude>bower.json</exclude>
            <exclude>app/css/main.css</exclude>
	    <exclude>app/css/img/**</exclude>
            <exclude>app/test/e2e/protractor.js</exclude>
            <exclude>app/js/directives/ng-tags-input.js</exclude>
          </excludes>
        </configuration>
      </plugin>

    </plugins>
  </build>
</project>
