<?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>34</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.16.1</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>
