<?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.
  -->
<!--
  This exists soley to simplify the execution of apache-rat over the entire
	code base of Metron.
  -->
<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>
	<groupId>org.apache.metron</groupId>
	<artifactId>Metron</artifactId>
	<version>0.1BETA</version>
	<packaging>pom</packaging>
	<name>Metron</name>
	<description>Performs release auditing for Metron.</description>
	<url>https://metron.incubator.apache.org/</url>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.rat</groupId>
				<artifactId>apache-rat-plugin</artifactId>
				<version>0.11</version>
				<configuration>
				<excludes>
					<exclude>**/README.md</exclude>
					<exclude>**/VERSION</exclude>
					<exclude>**/*.json</exclude>
					<exclude>**/*.log</exclude>
					<exclude>**/*.template</exclude>
					<exclude>**/.*</exclude>
					<exclude>**/.*/**</exclude>
					<exclude>**/*.seed</exclude>
					<exclude>**/*.iml</exclude>
					<exclude>**/ansible.cfg</exclude>
					<exclude>site/**</exclude>
          <exclude>metron-ui/lib/public/css/normalize.min.css</exclude>
          <exclude>metron-ui/lib/public/app/panels/pcap/lib/showdown.js</exclude>
          <!-- 3rd party bundled javascript dependencies -->
          <exclude>metron-ui/lib/public/vendor/**</exclude>
          <!-- Kibana panels copied from kibana and bundled -->
          <exclude>metron-ui/lib/public/app/panels/dashcontrol/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/filtering/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/histogram/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/hits/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/map/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/query/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/sparklines/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/table/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/terms/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/text/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/timepicker/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/trends/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/bettermap/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/column/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/derivequeries/**</exclude>
          <exclude>metron-ui/lib/public/app/panels/stats/**</exclude>
          <exclude>metron-ui/lib/public/app/partials/**</exclude>
          <exclude>metron-ui/lib/public/app/services/**</exclude>
          <!-- fontawesome fonts are declared in the license, so we can exclude here -->
          <exclude>metron-ui/lib/public/css/font-awesome.min.css</exclude>
          <exclude>metron-ui/lib/public/font/**</exclude>
					<exclude>**/src/main/resources/patterns/**</exclude>
					<exclude>**/src/test/resources/**</exclude>
					<exclude>**/src/main/resources/Sample*/**</exclude>
					<exclude>**/dependency-reduced-pom.xml</exclude>
				        <exclude>**/files/opensoc-ui</exclude>
					<exclude>**/target/**</exclude>
					<exclude>**/bro-plugin-kafka/build/**</exclude>
				</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
