<?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">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>archiva-modules</artifactId>
    <groupId>org.apache.archiva</groupId>
    <version>2.2.2</version>
  </parent>
  <artifactId>plugins</artifactId>
  <name>Archiva :: Core Plugins</name>
  <packaging>pom</packaging>
  <modules>
    <module>metadata-store-file</module>
    <module>maven2-repository</module>
    <module>repository-statistics</module>
    <module>problem-reports</module>
    <module>audit</module>
    <module>stage-repository-merge</module>
    <module>generic-metadata-support</module>
    <module>metadata-store-jcr</module>
    <module>metadata-store-cassandra</module>
  </modules>

</project>
