<?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>
  <packaging>pom</packaging>
  <parent>
    <groupId>org.apache.lenya</groupId>
    <artifactId>lenya-parent</artifactId>
    <version>2.2.0-SNAPSHOT</version>
    <relativePath>org.apache.lenya.parent/pom.xml</relativePath>
  </parent>

  <groupId>org.apache.lenya</groupId>
  <artifactId>lenya</artifactId>

  <name>Apache Lenya Project</name>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.4</version>
      </plugin>
    </plugins>
  </reporting>
  <modules>
    <module>org.apache.lenya.parent</module>
    <module>org.apache.lenya.core.ac</module>
    <module>org.apache.lenya.core.acusecases</module>
    <module>org.apache.lenya.core.administration</module>
    <module>org.apache.lenya.core.api</module>
    <module>org.apache.lenya.core.cache</module>
    <module>org.apache.lenya.core.gui</module>
    <module>org.apache.lenya.core.i18n</module>
    <module>org.apache.lenya.core.impl</module>
    <module>org.apache.lenya.core.impl.tests</module>
    <module>org.apache.lenya.core.janitor</module>
    <module>org.apache.lenya.core.ldap</module>
    <module>org.apache.lenya.core.linking</module>
    <module>org.apache.lenya.core.metadata</module>
    <module>org.apache.lenya.core.monitoring</module>
    <module>org.apache.lenya.core.observation</module>
    <module>org.apache.lenya.core.properties</module>
    <module>org.apache.lenya.core.repository</module>
    <module>org.apache.lenya.core.resourcetype</module>
    <module>org.apache.lenya.core.sitemanagement</module>
    <module>org.apache.lenya.core.templating</module>
    <module>org.apache.lenya.core.usecase</module>
    <module>org.apache.lenya.core.workflow</module>
    <module>org.apache.lenya.core.utils</module>
    <module>org.apache.lenya.module.blog</module>
    <module>org.apache.lenya.module.bxe</module>
    <module>org.apache.lenya.module.cforms</module>
    <module>org.apache.lenya.module.collection</module>
    <module>org.apache.lenya.module.contactform</module>
    <module>org.apache.lenya.module.development</module>
    <module>org.apache.lenya.module.editors</module>
    <module>org.apache.lenya.module.export</module>
    <module>org.apache.lenya.module.fckeditor</module>
    <module>org.apache.lenya.module.kupu</module>
    <module>org.apache.lenya.module.languageselector</module>
    <module>org.apache.lenya.module.lenyadoc</module>
    <module>org.apache.lenya.module.linkcheck</module>
    <module>org.apache.lenya.module.links</module>
    <module>org.apache.lenya.module.lucene</module>
    <module>org.apache.lenya.module.menubar</module>
    <module>org.apache.lenya.module.migration</module>
    <module>org.apache.lenya.module.navigation</module>
    <module>org.apache.lenya.module.neutron</module>
    <module>org.apache.lenya.module.news</module>
    <module>org.apache.lenya.module.notification</module>
    <module>org.apache.lenya.module.opendocument</module>
    <module>org.apache.lenya.module.prettyprinting</module>
    <module>org.apache.lenya.module.profiling</module>
    <module>org.apache.lenya.module.resource</module>
    <module>org.apache.lenya.module.simplesite</module>
    <module>org.apache.lenya.module.sitetree</module>
    <module>org.apache.lenya.module.sourcerepository</module>
    <module>org.apache.lenya.module.svg</module>
    <module>org.apache.lenya.module.tinymce</module>
    <module>org.apache.lenya.module.usecasedocument</module>
    <module>org.apache.lenya.module.webdav</module>
    <module>org.apache.lenya.module.xhtml</module>
    <module>org.apache.lenya.module.xopus</module>
    <module>org.apache.lenya.optional.jcrsource</module>
    <module>org.apache.lenya.webapp</module>
    <module>org.apache.lenya.webapp.welcome</module>
  </modules>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/lenya/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/lenya/trunk</developerConnection>
    <url>http://svn.apache.org/viewvc/lenya/trunk</url>
  </scm>

</project>
