<?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.
-->
<!-- Run this file like this - mvn apache-rat:check -->
<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">

    <parent>
      <groupId>org.apache</groupId>
      <artifactId>apache</artifactId>
      <version>25</version>
    </parent>
  
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.qpid</groupId>
    <artifactId>qpid-dispatch</artifactId>
    <version>1.20.0-SNAPSHOT</version>
    <name>QpidDispatch</name>
    <inceptionYear>2018</inceptionYear>
    <url>https://qpid.apache.org</url>   
    
    <description>
      Qpid Dispatch Router
    </description>
    
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>   
    
    <build>
        <defaultGoal>verify</defaultGoal>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <version>0.13</version>
                    <executions>
                      <execution>
                        <phase>verify</phase>
                        <goals>
                          <goal>check</goal>
                        </goals>
                      </execution>
                   </executions>
              </plugin>
            </plugins>
        </pluginManagement>        
        <plugins>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                      <exclude>.travis.yml</exclude>
                      <exclude>CMakeCache.txt</exclude>
                      <exclude>.gitmodules</exclude>
                      <exclude>.gitignore</exclude>
                      <exclude>.autotools</exclude>
                      <exclude>**/angular-patternfly.min.js</exclude>
                      <exclude>**/angular-patternfly.min.css</exclude>
                      <exclude>**/d3.v3.min.js</exclude>
                      <exclude>**/jquery.tipsy.js</exclude>
                      <exclude>**/jquery.tipsy.js</exclude>
                      <exclude>**/zd3-queue.min.js</exclude>
                      <exclude>**/d3.min.js</exclude>
                      <exclude>**/tooltipsy.min.js</exclude>
                      <exclude>**/font-awesome.min.css</exclude>
                      <exclude>**/jquery-ui.css</exclude>
                      <exclude>**/jquery.tipsy.css</exclude>
    	              <exclude>**/vendor.min.js</exclude>
		      <exclude>**/vendor.min.css</exclude>
                      <exclude>**/jquery.dynatree.min.js</exclude>
                      <exclude>**/slider.js</exclude>
                      <exclude>**/ui-grid.js</exclude>
                      <exclude>**/system_tests_http.txt</exclude>
                      <exclude>**/build/</exclude>
                      <exclude>**/target/</exclude>
                      <exclude>**/install/</exclude>
                      <exclude>**/*.lock</exclude>
                      <exclude>**/MANIFEST.in</exclude>
                      <exclude>**/valgrind.supp</exclude>
                      <exclude>**/tsan.supp</exclude>
                      <exclude>**/asan.supp</exclude>
                      <exclude>**/lsan.supp</exclude>
                      <exclude>**/lsan_3rdparty.supp</exclude>
                      <exclude>**/*.json.in</exclude>
                      <exclude>**/*.json</exclude>
                      <exclude>**/*.svg</exclude>
                      <exclude>**/rhea-min.js</exclude>
                      <exclude>**/VERSION.txt</exclude>
                      <exclude>**/v3_ca.ext</exclude>
                      <exclude>**/system_test.dir/**</exclude>
                      <exclude>**/server-password-file.txt</exclude>
                      <exclude>**/server-password-file-bad.txt</exclude>
                      <exclude>**/client-password-file.txt</exclude>
		      <exclude>**/password.txt</exclude>
                      <exclude>**/*.pkcs12</exclude>
                      <exclude>**/.idea/**</exclude> <!-- This is for ignoring the intellij idea project files -->
                      <exclude>**/*~</exclude> <!-- This is for files created by emacs -->
                      <exclude>.pydevproject</exclude> <!-- PyCharm project file -->
                      <exclude>.cproject</exclude>
                      <exclude>**/qpid-proton/**</exclude>
                      <exclude>**/CMakeFiles/**</exclude>
                      <exclude>**/licenses/**</exclude>
                      <exclude>qpid-proton/**</exclude>
                      <exclude>libuv/**</exclude>
                      <exclude>libwebsockets/**</exclude>
                      <exclude>tools/scraper/test_data/**</exclude>
                      <exclude>**/doctest.h</exclude>
                      <exclude>**/cpp-stub/*</exclude>
                      <exclude>**/*_pb2*</exclude>
                </excludes>
        </configuration>            
            </plugin>
        </plugins>        
    </build>  
</project>
