<?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.
  -->

<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>
    <artifactId>archiva</artifactId>
    <groupId>org.apache.archiva</groupId>
    <version>1.2-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>archiva-modules</artifactId>
  <packaging>pom</packaging>
  <name>Archiva :: Modules</name>
  <url>http://archiva.apache.org/ref/${project.version}</url>
  <modules>
    <module>archiva-base</module>
    <module>archiva-database</module>
    <module>archiva-reporting</module>
    <module>archiva-scheduled</module>
    <module>archiva-web</module>
  </modules>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.2</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <configLocation>config/maven_checks.xml</configLocation>
          <!-- TODO: enable when archiva-build-resources is active (released?)
          <configLocation>checkstyle.xml</configLocation>
          <headerLocation>header.txt</headerLocation>
            -->
        </configuration>
      </plugin>
<!-- TODO: OOME
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>1.1.1</version>
      </plugin>
-->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>changelog-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>taglist-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-jxr-plugin</artifactId>
        <configuration>
          <aggregate>true</aggregate>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.4.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <source>1.5</source>
          <aggregate>true</aggregate>
          <doclet>gr.spinellis.umlgraph.doclet.UmlGraphDoc</doclet>
          <docletArtifact>
            <groupId>gr.spinellis</groupId>
            <artifactId>UmlGraph</artifactId>
            <version>4.6</version>
          </docletArtifact>
          <additionalparam>
            -inferrel -inferdep -quiet -hide java.*
            -collpackages java.util.* -qualify
            -postfixpackage -nodefontsize 9
            -nodefontpackagesize 7
          </additionalparam>
          <links>
            <link>http://java.sun.com/j2se/1.4.2/docs/api</link>
            <link>http://java.sun.com/j2ee/1.4/docs/api</link>
            <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
            <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>
            <link>http://commons.apache.org/dbcp/apidocs/</link>
            <link>http://commons.apache.org/fileupload/apidocs/</link>
            <link>http://commons.apache.org/httpclient/apidocs/</link>
            <link>http://commons.apache.org/logging/apidocs/</link>
            <link>http://commons.apache.org/pool/apidocs/</link>
            <link>http://junit.sourceforge.net/javadoc/</link>
            <link>http://logging.apache.org/log4j/1.2/apidocs/</link>
            <link>http://jakarta.apache.org/regexp/apidocs/</link>
            <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>
          </links>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <!-- TODO: choose appropriate rulesets -->
        <configuration>
          <targetJdk>1.5</targetJdk>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>
  <profiles>
    <profile>
      <id>ci</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <!-- TODO: after rules are set
                              <goal>check</goal>
                           -->
                  <goal>cpd-check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <!-- TODO: reformat first, and correct the checks (some are not consistent with the Maven style)
                              <goal>check</goal>
                           -->
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
              <check>
                <!-- TODO: raise to 85/100 -->
                <totalLineRate>77</totalLineRate>
                <totalBranchRate>95</totalBranchRate>
              </check>
              <instrumentation>
                <excludes>
                  <exclude>**/*$*</exclude>
                </excludes>
              </instrumentation>
            </configuration>
            <executions>
              <execution>
                <id>clean</id>
                <goals>
                  <goal>clean</goal>
                </goals>
              </execution>
              <execution>
                <id>check</id>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>${siteBaseDeployment}/ref/${project.version}</url>
    </site>
  </distributionManagement>
</project>
