<?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.janitor</module> -->
    <module>org.apache.lenya.core.ldap</module>
    <module>org.apache.lenya.core.linking</module>
    <module>org.apache.lenya.core.metadata.api</module>
    <module>org.apache.lenya.core.metadata.impl</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.api</module>
    <module>org.apache.lenya.core.repository.impl</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.core.cocoon</module>
    <module>org.apache.lenya.core.publication.api</module>
    <module>org.apache.lenya.core.publication.impl</module>
    <module>org.apache.lenya.core.document.api</module>
    <module>org.apache.lenya.core.document.impl</module>
    <module>org.apache.lenya.core.transaction.api</module>
    <module>org.apache.lenya.core.transaction.impl</module>
    <module>org.apache.lenya.core.identity</module>
    <module>org.apache.lenya.core.proxy</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>
    <module>org.apache.lenya.deprecated</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>
