<?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.
-->
<!-- @version $Id$ -->
<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.cocoon</groupId>
    <artifactId>cocoon</artifactId>
    <version>6</version>
    <relativePath>../parent</relativePath>
  </parent>
  <artifactId>cocoon-tools-modules</artifactId>
  <version>5</version>
  <name>Cocoon Tools [modules]</name>

  <modules>
    <module>archetypes/cocoon-22-archetype-block</module>
    <module>archetypes/cocoon-22-archetype-block-plain</module>    
    <module>archetypes/cocoon-22-archetype-webapp</module>    
    <module>cocoon-it-fw</module>    
    <module>cocoon-maven-reports</module>
    <module>cocoon-maven-plugin</module>
    <module>cocoon-maven-docs-cleaner-plugin</module>
    <module>cocoon-maven-javadocs-script-report</module>
    <module>cocoon-rcl/cocoon-rcl-webapp-wrapper</module>
    <module>cocoon-rcl/cocoon-rcl-spring-reloader</module>        
  </modules>

  <scm>
    <connection>scm:svn:https://svn.apache.org/repos/asf/cocoon/tags/cocoon-2.2/cocoon-tools-modules/cocoon-tools-modules-5</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/cocoon/tags/cocoon-2.2/cocoon-tools-modules/cocoon-tools-modules-5</developerConnection>
    <url>https://svn.apache.org/repos/asf/cocoon/tags/cocoon-2.2/cocoon-tools-modules/cocoon-tools-modules-5</url>
  </scm>

</project>
