<?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>18</version>
    </parent>
  
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.qpid</groupId>
    <artifactId>qpid-dispatch</artifactId>
    <version>1.9.0</version>
    <name>QpidDispatch</name>
    <inceptionYear>2018</inceptionYear>
    <url>https://qpid.apache.org</url>   
    
    <prerequisites>
        <maven>3.0.4</maven>
    </prerequisites>
  
    <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.12</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>**/*.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>**/*.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>
                </excludes>
        </configuration>            
            </plugin>
        </plugins>        
    </build>  
</project>
