<?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.
-->
<!-- $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>6</version>
    <relativePath>../../pom.xml</relativePath>    
  </parent>
  <artifactId>cocoon-linkrewriter-impl</artifactId>
  <version>1.0.0</version>
  <name>Cocoon Linkrewriter Block Implementation</name>
  <url>http://cocoon.apache.org/${docs.m.linkrewriter.relPath}</url>  
  
  <properties>
    <docs.name>Cocoon Linkrewriter Block</docs.name>    
    <docs.version>${docs.m.linkrewriter.version}</docs.version>
  </properties>  
  
  <distributionManagement>
    <site>
      <id>website</id>
      <url>${docs.deploymentBaseUrl}/${docs.m.linkrewriter.relPath}</url>
    </site>
  </distributionManagement>
  
  <dependencies>
    <dependency>
      <groupId>org.apache.cocoon</groupId>
      <artifactId>cocoon-core</artifactId>
      <version>2.2.0</version>
    </dependency>
  </dependencies>
  
  <profiles>
    <profile>
      <id>daisy</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.daisycms</groupId>
            <artifactId>daisy-maven-plugin</artifactId>
            <configuration>        
              <navDocId>1355</navDocId>
              <collection>cdocs-linkrewriter</collection>             
            </configuration>
          </plugin>
        </plugins>
      </build>      
    </profile>
  </profiles>

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