<!--
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>
  <modelVersion>4.0.0</modelVersion>
  <groupId>def.configuration</groupId>
  <artifactId>default-configuration</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <inceptionYear>2006</inceptionYear>
  <name>Maven CPD Plugin Default Configuration Test With includeXmlInSite</name>
  <url>http://maven.apache.org</url>
  <build>
    <finalName>default-configuration</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <configuration>
          <project implementation="org.apache.maven.plugins.pmd.stubs.DefaultConfigurationMavenProjectStub"/>
          <outputDirectory>${basedir}/target/test/unit/default-configuration/target/site</outputDirectory>
          <targetDirectory>${basedir}/target/test/unit/default-configuration/target</targetDirectory>
          <format>xml</format>
          <linkXRef>false</linkXRef>
          <xrefLocation>${basedir}/target/test/unit/default-configuration/target/site/xref</xrefLocation>
          <minimumTokens>100</minimumTokens>

          <compileSourceRoots>
            <compileSourceRoot>${basedir}/src/test/resources/unit/default-configuration/</compileSourceRoot>
          </compileSourceRoots>
          <sourceEncoding>UTF-8</sourceEncoding>
          <includeXmlInSite>true</includeXmlInSite>
          <format>xml</format>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>
</project>
