<?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.nifi</groupId>
        <artifactId>nifi-web</artifactId>
        <version>1.1.0</version>
    </parent>
    <artifactId>nifi-web-ui</artifactId>
    <packaging>war</packaging>
    <properties>
        <maven.javadoc.skip>true</maven.javadoc.skip>
        <source.skip>true</source.skip>
        <staging.dir>${project.build.directory}/tmp</staging.dir>
        <canvas.filter>canvas.properties</canvas.filter>
        <history.filter>history.properties</history.filter>
        <summary.filter>summary.properties</summary.filter>
        <counters.filter>counters.properties</counters.filter>
        <cluster.filter>cluster.properties</cluster.filter>
        <templates.filter>templates.properties</templates.filter>
        <users.filter>users.properties</users.filter>
        <bulletin.board.filter>bulletin-board.properties</bulletin.board.filter>
        <login.filter>login.properties</login.filter>
        <provenance.filter>provenance.properties</provenance.filter>
        <frontend.dependency.configs>${basedir}/src/main/frontend</frontend.dependency.configs>
        <frontend.working.dir>${project.build.directory}/frontend-working-directory</frontend.working.dir>
        <frontend.assets>${project.build.directory}/${project.build.finalName}/assets</frontend.assets>
        <!--
            This property can be set on the command line and allows any bower cli options to be set.
        -->
        <bower.options />
    </properties>
    <build>
        <!--
            These filters are used to populate the includes (css and js)
            for each of the avialable pages. The property is the name of
            the file which contains the properties that define which
            css and js files get included. When running with minify and
            compression (default) the filter properties will be overridden
            in the profile. The JSPs that contain the HEAD portion of the
            pages will not be pre-compiled and will instead be filtered
            when the war is built.
        -->
        <filters>
            <filter>src/main/resources/filters/${canvas.filter}</filter>
            <filter>src/main/resources/filters/${history.filter}</filter>
            <filter>src/main/resources/filters/${summary.filter}</filter>
            <filter>src/main/resources/filters/${counters.filter}</filter>
            <filter>src/main/resources/filters/${cluster.filter}</filter>
            <filter>src/main/resources/filters/${templates.filter}</filter>
            <filter>src/main/resources/filters/${users.filter}</filter>
            <filter>src/main/resources/filters/${bulletin.board.filter}</filter>
            <filter>src/main/resources/filters/${login.filter}</filter>
            <filter>src/main/resources/filters/${provenance.filter}</filter>
        </filters>
        <plugins>
            <!--
                Precompile jsp's and add entries into the web.xml - the web.xml
                is automatically places in ${project.build.directory}. Do not
                precompile canvas.jsp, summary.jsp, history.jsp, etc.
                These jsp's need to have the artifacts version filtered in to
                eliminate broswer caching issues and set up the proper includes.
                Since the webResource filter occurs after the precompilation we
                must exclude them here.
            -->
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-jspc-maven-plugin</artifactId>
                <version>${jetty.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>jspc</goal>
                        </goals>
                        <configuration>
                            <keepSources>true</keepSources>
                            <useProvidedScope>true</useProvidedScope>
                            <excludes>
                                **/message-page.jsp,
                                **/canvas.jsp,
                                **/summary.jsp,
                                **/history.jsp,
                                **/provenance.jsp,
                                **/counters.jsp,
                                **/cluster.jsp,
                                **/templates.jsp,
                                **/users.jsp,
                                **/bulletin-board.jsp,
                                **/login.jsp
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--
                Filter the web.xml that was generated from jspc to specify the
                NiFi base directory. the plugin configuration is
                specified here while the execution's are defined below in the
                profiles to bind to the appropriate phase
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-web-xml</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${staging.dir}/WEB-INF</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${project.build.directory}</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>web.xml</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-client-side-deps</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${frontend.assets}</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${frontend.working.dir}/node_modules</directory>
                                    <filtering>false</filtering>
                                    <includes>
                                        <include>**/*</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-package-json</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${frontend.working.dir}</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${frontend.dependency.configs}</directory>
                                    <filtering>false</filtering>
                                    <includes>
                                        <include>package.json</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--
                Tell the war plugin where to find the filtered web.xml and
                filter the head portion of the pages. The correct includes and
                project version is filtered into these jsp's as a browser cache
                buster.
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>${staging.dir}/WEB-INF/web.xml</webXml>
                    <webResources>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>canvas.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>summary.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>history.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>provenance.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>counters.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>users.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>templates.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>cluster.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>bulletin-board.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                        <resource>
                            <directory>src/main/webapp/WEB-INF/pages</directory>
                            <targetPath>WEB-INF/pages</targetPath>
                            <includes>
                                <include>login.jsp</include>
                            </includes>
                            <filtering>true</filtering>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>1.0</version>
                <configuration>
                    <installDirectory>${frontend.working.dir}</installDirectory>
                </configuration>
                <executions>
                    <execution>
                        <id>install-node-and-npm</id>
                        <goals>
                            <goal>install-node-and-npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <nodeVersion>v0.10.18</nodeVersion>
                            <npmVersion>1.3.8</npmVersion>
                        </configuration>
                    </execution>
                    <execution>
                        <id>npm install</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <configuration>
                            <arguments>--cache-min Infinity install</arguments>
                            <workingDirectory>${frontend.working.dir}</workingDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>minify-and-compress</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <canvas.filter>canvas-min.properties</canvas.filter>
                <history.filter>history-min.properties</history.filter>
                <summary.filter>summary-min.properties</summary.filter>
                <counters.filter>counters-min.properties</counters.filter>
                <cluster.filter>cluster-min.properties</cluster.filter>
                <templates.filter>templates-min.properties</templates.filter>
                <users.filter>users-min.properties</users.filter>
                <bulletin.board.filter>bulletin-board-min.properties</bulletin.board.filter>
                <login.filter>login-min.properties</login.filter>
                <provenance.filter>provenance-min.properties</provenance.filter>
            </properties>
            <build>
                <plugins>
                    <!--
                        Minifies and compresses the javascript and css.
                    -->
                    <plugin>
                        <groupId>net.alchim31.maven</groupId>
                        <artifactId>yuicompressor-maven-plugin</artifactId>
                        <version>1.5.1</version>
                        <executions>
                            <execution>
                                <id>minify</id>
                                <goals>
                                    <goal>compress</goal>
                                </goals>
                                <configuration>
                                    <sourceDirectory>src/main/webapp</sourceDirectory>
                                    <outputDirectory>${staging.dir}</outputDirectory>
                                    <nomunge>false</nomunge>
                                    <jswarn>false</jswarn>
                                    <nosuffix>true</nosuffix>
                                    <gzip>true</gzip>
                                    <aggregations>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/canvas/nf-canvas-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-canvas-utils.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-shell.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-snippet.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-custom-ui.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-queue-listing.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-component-state.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-controller-service.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-controller-services.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-reporting-task.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-processor-configuration.js</include>
                                                <include>${staging.dir}/js/nf/nf-processor-details.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-process-group-configuration.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-policy-management.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-remote-process-group-configuration.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-remote-process-group-details.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-remote-process-group-ports.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-port-configuration.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-port-details.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-label-configuration.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-connection-configuration.js</include>
                                                <include>${staging.dir}/js/nf/nf-connection-details.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-graph.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-processor.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-label.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-port.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-process-group.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-remote-process-group.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-funnel.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-connection.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-draggable.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-selectable.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-connectable.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-birdseye.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-settings.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-go-to.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-actions.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-context-menu.js</include>
                                                <include>${staging.dir}/js/nf/nf-status-history.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-canvas.js</include>
                                                <include>${staging.dir}/js/nf/canvas/nf-clipboard.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/controllers/nf-ng-breadcrumbs-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-header-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-toolbox-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-flow-status-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-graph-controls-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-navigate-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/controllers/nf-ng-canvas-operate-controller.js</include>
                                                <include>${staging.dir}/js/nf/canvas/header/components/nf-ng-processor-component.js</include>
                                                <include>${staging.dir}/js/nf/canvas/header/components/nf-ng-input-port-component.js</include>
                                                <include>${staging.dir}/js/nf/canvas/header/components/nf-ng-output-port-component.js</include>
                                                <include>${staging.dir}/js/nf/canvas/header/components/nf-ng-group-component.js</include>
                                                <include>${staging.dir}/js/nf/canvas/header/components/nf-ng-remote-process-group-component.js</include>
                                                <include>${staging.dir}/js/nf/canvas/header/components/nf-ng-funnel-component.js</include>
                                                <include>${staging.dir}/js/nf/canvas/header/components/nf-ng-template-component.js</include>
                                                <include>${staging.dir}/js/nf/canvas/header/components/nf-ng-label-component.js</include>
                                                <include>${staging.dir}/js/nf/canvas/directives/nf-ng-breadcrumbs-directive.js</include>
                                                <include>${staging.dir}/js/nf/canvas/directives/nf-ng-draggable-directive.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/history/nf-history-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/history/nf-history.js</include>
                                                <include>${staging.dir}/js/nf/history/nf-history-table.js</include>
                                                <include>${staging.dir}/js/nf/history/nf-history-model.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/provenance/nf-provenance-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
                                                <include>${staging.dir}/js/nf/provenance/nf-provenance.js</include>
                                                <include>${staging.dir}/js/nf/provenance/nf-provenance-table.js</include>
                                                <include>${staging.dir}/js/nf/provenance/nf-provenance-lineage.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/summary/nf-summary-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/nf-processor-details.js</include>
                                                <include>${staging.dir}/js/nf/nf-connection-details.js</include>
                                                <include>${staging.dir}/js/nf/nf-status-history.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
                                                <include>${staging.dir}/js/nf/summary/nf-summary.js</include>
                                                <include>${staging.dir}/js/nf/summary/nf-summary-table.js</include>
                                                <include>${staging.dir}/js/nf/summary/nf-cluster-search.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/counters/nf-counters-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/counters/nf-counters.js</include>
                                                <include>${staging.dir}/js/nf/counters/nf-counters-table.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/users/nf-users-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/users/nf-users.js</include>
                                                <include>${staging.dir}/js/nf/users/nf-users-table.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/templates/nf-templates-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/templates/nf-templates.js</include>
                                                <include>${staging.dir}/js/nf/templates/nf-templates-table.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/cluster/nf-cluster-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/cluster/nf-cluster.js</include>
                                                <include>${staging.dir}/js/nf/cluster/nf-cluster-table.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/bulletin-board/nf-bulletin-board-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-bridge.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-service-provider.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-app-config.js</include>
                                                <include>${staging.dir}/js/nf/nf-ng-app-controller.js</include>
                                                <include>${staging.dir}/js/nf/bulletin-board/nf-bulletin-board.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/js/nf/login/nf-login-all.js</output>
                                            <includes>
                                                <include>${staging.dir}/js/nf/nf-client.js</include>
                                                <include>${staging.dir}/js/nf/nf-common.js</include>
                                                <include>${staging.dir}/js/nf/nf-universal-capture.js</include>
                                                <include>${staging.dir}/js/nf/nf-dialog.js</include>
                                                <include>${staging.dir}/js/nf/nf-storage.js</include>
                                                <include>${staging.dir}/js/nf/nf-ajax-setup.js</include>
                                                <include>${staging.dir}/js/nf/login/nf-login.js</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-canvas-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/reporting-task.css</include>
                                                <include>${staging.dir}/css/controller-service.css</include>
                                                <include>${staging.dir}/css/processor-configuration.css</include>
                                                <include>${staging.dir}/css/processor-details.css</include>
                                                <include>${staging.dir}/css/process-group-configuration.css</include>
                                                <include>${staging.dir}/css/policy-management.css</include>
                                                <include>${staging.dir}/css/remote-process-group-configuration.css</include>
                                                <include>${staging.dir}/css/port-configuration.css</include>
                                                <include>${staging.dir}/css/port-details.css</include>
                                                <include>${staging.dir}/css/queue-listing.css</include>
                                                <include>${staging.dir}/css/component-state.css</include>
                                                <include>${staging.dir}/css/label-configuration.css</include>
                                                <include>${staging.dir}/css/connection-configuration.css</include>
                                                <include>${staging.dir}/css/connection-details.css</include>
                                                <include>${staging.dir}/css/shell.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/new-processor-dialog.css</include>
                                                <include>${staging.dir}/css/new-controller-service-dialog.css</include>
                                                <include>${staging.dir}/css/new-reporting-task-dialog.css</include>
                                                <include>${staging.dir}/css/graph.css</include>
                                                <include>${staging.dir}/css/header.css</include>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/navigation.css</include>
                                                <include>${staging.dir}/css/flow-status.css</include>
                                                <include>${staging.dir}/css/settings.css</include>
                                                <include>${staging.dir}/css/about.css</include>
                                                <include>${staging.dir}/css/status-history.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-common-ui.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/common-ui.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-history-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/history.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-provenance-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/provenance.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-summary-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/processor-details.css</include>
                                                <include>${staging.dir}/css/connection-details.css</include>
                                                <include>${staging.dir}/css/status-history.css</include>
                                                <include>${staging.dir}/css/summary.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-counters-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/counters.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-cluster-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/cluster.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-users-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/users.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-templates-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/templates.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-bulletin-board-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/bulletin-board.css</include>
                                            </includes>
                                        </aggregation>
                                        <aggregation>
                                            <insertNewLine>true</insertNewLine>
                                            <output>${project.build.directory}/${project.build.finalName}/css/nf-login-all.css</output>
                                            <includes>
                                                <include>${staging.dir}/css/main.css</include>
                                                <include>${staging.dir}/css/banner.css</include>
                                                <include>${staging.dir}/css/dialog.css</include>
                                                <include>${staging.dir}/css/login.css</include>
                                            </includes>
                                        </aggregation>
                                    </aggregations>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!--
                        Configuration to ensure that we only bundle the gzip compressed
                        version of static content.
                    -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>2.5</version>
                        <configuration>
                            <packagingIncludes>
                                assets/**/*,
                                css/reset.css,
                                css/reset.css.gz,
                                css/common-ui.css,
                                css/common-ui.css.gz,
                                css/message-page.css,
                                css/message-page.css.gz,
                                css/message-pane.css,
                                css/message-pane.css.gz,
                                css/nf-common-ui.css,
                                css/nf-common-ui.css.gz,
                                css/nf-canvas-all.css,
                                css/nf-canvas-all.css.gz,
                                css/nf-history-all.css,
                                css/nf-history-all.css.gz,
                                css/nf-provenance-all.css,
                                css/nf-provenance-all.css.gz,
                                css/nf-summary-all.css,
                                css/nf-summary-all.css.gz,
                                css/nf-counters-all.css,
                                css/nf-counters-all.css.gz,
                                css/nf-cluster-all.css,
                                css/nf-cluster-all.css.gz,
                                css/nf-users-all.css,
                                css/nf-users-all.css.gz,
                                css/nf-templates-all.css,
                                css/nf-templates-all.css.gz,
                                css/nf-bulletin-board-all.css,
                                css/nf-bulletin-board-all.css.gz,
                                css/nf-login-all.css,
                                css/nf-login-all.css.gz,
                                js/*,
                                js/d3/**/*,
                                js/codemirror/**/*,
                                js/jquery/**/*,
                                js/jsonlint/**/*,
                                js/nf/nf-namespace.js,
                                js/nf/nf-namespace.js.gz,
                                js/nf/nf-ng-namespace.js,
                                js/nf/nf-ng-namespace.js.gz,
                                js/nf/canvas/nf-ng-canvas-namespace.js,
                                js/nf/canvas/nf-ng-canvas-namespace.js.gz,
                                js/nf/nf-universal-capture.js,
                                js/nf/nf-universal-capture.js.gz,
                                js/nf/nf-storage.js,
                                js/nf/nf-storage.js.gz,
                                js/nf/nf-ajax-setup.js,
                                js/nf/nf-ajax-setup.js.gz,
                                js/nf/nf-status-history.js,
                                js/nf/nf-status-history.js.gz,
                                js/nf/canvas/nf-canvas-all.js,
                                js/nf/canvas/nf-canvas-all.js.gz,
                                js/nf/history/nf-history-all.js,
                                js/nf/history/nf-history-all.js.gz,
                                js/nf/provenance/nf-provenance-all.js,
                                js/nf/provenance/nf-provenance-all.js.gz,
                                js/nf/provenance/nf-provenance-lineage.js,
                                js/nf/provenance/nf-provenance-lineage.js.gz,
                                js/nf/summary/nf-summary-all.js,
                                js/nf/summary/nf-summary-all.js.gz,
                                js/nf/counters/nf-counters-all.js,
                                js/nf/counters/nf-counters-all.js.gz,
                                js/nf/cluster/nf-cluster-all.js,
                                js/nf/cluster/nf-cluster-all.js.gz,
                                js/nf/users/nf-users-all.js,
                                js/nf/users/nf-users-all.js.gz,
                                js/nf/templates/nf-templates-all.js,
                                js/nf/templates/nf-templates-all.js.gz,
                                js/nf/bulletin-board/nf-bulletin-board-all.js,
                                js/nf/bulletin-board/nf-bulletin-board-all.js.gz,
                                js/nf/login/nf-login-all.js,
                                js/nf/login/nf-login-all.js.gz,
                                views/*,
                                fonts/**/*,
                                images/*,
                                resources/*,
                                images/*,
                                WEB-INF/**/*
                            </packagingIncludes>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <configuration>
                            <excludes combine.children="append">
                                <exclude>nbactions.xml</exclude>
                                <exclude>src/main/frontend/package.json</exclude>
                                <exclude>src/main/webapp/js/json2.js</exclude>
                                <exclude>src/main/webapp/js/jquery/</exclude>
                                <exclude>src/main/webapp/js/d3/d3.min.js</exclude>
                                <exclude>src/main/webapp/js/codemirror/</exclude>
                                <exclude>src/main/webapp/js/jsonlint/</exclude>
                                <exclude>src/main/webapp/css/reset.css</exclude>
                                <exclude>src/main/webapp/js/angular/**/*</exclude>
                                <exclude>src/main/webapp/fonts/**/*</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    <dependencies>
        <!--
            Artifacts that will be on the jetty classpath at runtime either through
            the application classpath or the maven jetty plugin classpath defined
            above.
        -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-utils</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
    </dependencies>
</project>
