<!--
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 PMD Plugin Javascript Configuration 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.DefaultConfigurationMavenProjectStub"/>
          <outputDirectory>${basedir}/target/test/unit/default-configuration/target/site</outputDirectory>
          <targetDirectory>${basedir}/target/test/unit/default-configuration/target</targetDirectory>
          <rulesetsTargetDirectory>${basedir}/target/test/unit/default-configuration/target/pmd/rulesets</rulesetsTargetDirectory>
          <format>xml</format>
          <sourceEncoding>UTF-8</sourceEncoding>
          <language>javascript</language>
          <rulesets>
            <ruleset>/category/ecmascript/bestpractices.xml</ruleset>
            <ruleset>/category/ecmascript/codestyle.xml</ruleset>
            <ruleset>/category/ecmascript/errorprone.xml</ruleset>
          </rulesets>
          <includes>
            <include>**/*.js</include>
          </includes>
          <compileSourceRoots>
            <compileSourceRoot>${basedir}/src/test/resources/unit/default-configuration/js</compileSourceRoot>
          </compileSourceRoots>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
