<!--
 ! 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.16-incubating</version>
  </parent>

  <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>
