<?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>jar</packaging>
    
  <parent>
    <artifactId>cocoon-blocks-modules</artifactId>
    <groupId>org.apache.cocoon</groupId>
    <version>4</version>
    <relativePath>../../pom.xml</relativePath>    
  </parent>

  <artifactId>cocoon-captcha-impl</artifactId>
  <version>1.0.0-RC1</version>
  <name>Cocoon Captcha Block Implementation</name>
  <url>http://cocoon.apache.org/${docs.m.captcha.relPath}</url>    
  
  <distributionManagement>
    <site>
      <id>website</id>
      <url>${docs.deploymentBaseUrl}/${docs.m.captcha.relPath}</url>
    </site>
  </distributionManagement>  
  
  <properties>
    <docs.name>Cocoon Captcha</docs.name>    
    <docs.version>${docs.m.captcha.version}</docs.version>
  </properties>
  
  <dependencies>
    <dependency>
      <groupId>org.apache.cocoon</groupId>
      <artifactId>cocoon-core</artifactId>
      <version>2.2.0-RC1</version>
    </dependency>
  </dependencies>
  
  <profiles>
    <profile>
      <id>daisy</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.daisycms</groupId>
            <artifactId>daisy-maven-plugin</artifactId>
            <configuration>        
              <navDocId>1230</navDocId>
              <collection>cdocs-captcha</collection>          
              <skipFirstNavigationDocumentLevel>true</skipFirstNavigationDocumentLevel>
            </configuration>
          </plugin>  
        </plugins>
      </build>      
    </profile>
  </profiles>  
  

  <scm>
    <connection>scm:svn:https://svn.apache.org/repos/asf/cocoon/tags/cocoon-2.2/cocoon-captcha-impl/cocoon-captcha-impl-1.0.0-RC1</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/cocoon/tags/cocoon-2.2/cocoon-captcha-impl/cocoon-captcha-impl-1.0.0-RC1</developerConnection>
    <url>https://svn.apache.org/repos/asf/cocoon/tags/cocoon-2.2/cocoon-captcha-impl/cocoon-captcha-impl-1.0.0-RC1</url>
  </scm>
</project>
