<!--
 ! 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>
  <artifactId>hyracks-documentation</artifactId>
  <name>hyracks-documentation</name>

  <parent>
    <groupId>org.apache.hyracks</groupId>
    <artifactId>hyracks</artifactId>
    <version>0.2.17-incubating</version>
  </parent>

  <properties>
      <root.dir>${basedir}/../..</root.dir>
  </properties>

  <build>
    <plugins>
    	<plugin>
    		<groupId>org.apache.maven.doxia</groupId>
    		<artifactId>doxia-maven-plugin</artifactId>
    		<version>1.1.3</version>
    		<executions>
    		  <execution>
    		    <phase>package</phase>
    		    <goals>
    		      <goal>render-books</goal>
    		    </goals>
    		  </execution>
    		</executions>
    		<configuration>
    		  <books>
    		    <book>
    		      <directory>src/books/user-guide</directory>
    		      <descriptor>src/books/user-guide/doxia-descriptor.xml</descriptor>
    		      <formats>
    		        <format>
    		          <id>pdf</id>
    		        </format>
    		        <format>
    		          <id>xhtml</id>
    		        </format>
    		      </formats>
    		    </book>
    		  </books>
    		</configuration>
    	</plugin>
    </plugins>
  </build>
  <dependencies>
  </dependencies>
</project>
