<!--
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>invalid.format</groupId>
  <artifactId>invalid-format</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <inceptionYear>2006</inceptionYear>
  <name>Maven PMD Plugin Invalid Format Test</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.InvalidFormatMavenProjectStub"/>
          <outputDirectory>${basedir}/target/test/unit/invalid-format/target/site</outputDirectory>
          <targetDirectory>${basedir}/target/test/unit/invalid-format/target</targetDirectory>
          <rulesetsTargetDirectory>${basedir}/target/test/unit/invalid-format/target/pmd/rulesets</rulesetsTargetDirectory>
          <format>xhtml</format>
          <linkXRef>false</linkXRef>
          <xrefLocation>${basedir}/target/test/unit/invalid-format/target/site/xref</xrefLocation>
          <sourceEncoding>ISO-8859-1</sourceEncoding>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
