<?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>
    <groupId>org.apache.archiva</groupId>
    <artifactId>archiva-base</artifactId>
    <version>1.1.4</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>archiva-configuration</artifactId>
  <name>Archiva Base :: Configuration</name>
  <dependencies>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-spring</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus.registry</groupId>
      <artifactId>plexus-registry-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus.registry</groupId>
      <artifactId>plexus-registry-commons</artifactId>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-expression-evaluator</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.archiva</groupId>
      <artifactId>archiva-policies</artifactId>
    </dependency>
    <dependency>
      <groupId>xmlunit</groupId>
      <artifactId>xmlunit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.modello</groupId>
        <artifactId>modello-maven-plugin</artifactId>
        <version>1.0-alpha-15</version>
        <executions>
          <execution>
            <goals>
              <goal>java</goal>
              <goal>registry-reader</goal>
              <goal>registry-writer</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <version>1.2.0</version>
          <model>src/main/mdo/configuration.mdo</model>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <configuration>
          <instrumentation>
            <!-- exclude generated -->
            <excludes>
              <exclude>org/apache/maven/archiva/configuration/io/**</exclude>
              <exclude>org/apache/maven/archiva/configuration/*RepositoryConfiguration.*</exclude>
              <exclude>org/apache/maven/archiva/configuration/Configuration.*</exclude>
              <exclude>org/apache/maven/archiva/configuration/Proxy.*</exclude>
            </excludes>
          </instrumentation>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
