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

	<parent>
		<groupId>org.apache.cayenne.docs</groupId>
		<artifactId>cayenne-docs-parent</artifactId>
		<version>4.1.1</version>
	</parent>

	<artifactId>cayenne-doc</artifactId>
	<packaging>jar</packaging>
	<name>cayenne-doc: Cayenne Documentation</name>

	<description>Cayenne documentation sans Docbook docs, including API, RELEASE-NOTES, etc.</description>

	<dependencies>

		<dependency>
			<groupId>org.apache.cayenne</groupId>
			<artifactId>cayenne-server</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cayenne</groupId>
			<artifactId>cayenne-rop-server</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cayenne.modeler</groupId>
			<artifactId>cayenne-modeler</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
		</dependency>

		<dependency>
			<groupId>foundrylogic.vpp</groupId>
			<artifactId>vpp</artifactId>
		</dependency>

		<dependency>
			<groupId>com.jgoodies</groupId>
			<artifactId>forms</artifactId>
		</dependency>

		<dependency>
			<groupId>com.jgoodies</groupId>
			<artifactId>jgoodies-looks</artifactId>
		</dependency>

		<dependency>
			<groupId>ognl</groupId>
			<artifactId>ognl</artifactId>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
		</dependency>

	</dependencies>

	<profiles>
		<profile>
			<id>assembly</id>
			<build>
				<resources>
					<resource>
						<directory>target/site/apidocs</directory>
					</resource>
					<resource>
						<directory>src/main/resources</directory>
						<excludes>
							<exclude>README.html</exclude>
						</excludes>
					</resource>
					<resource>
						<directory>src/main/resources</directory>
						<filtering>true</filtering>
						<includes>
							<include>README.html</include>
						</includes>
					</resource>
				</resources>

				<plugins>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>dependency-maven-plugin</artifactId>
						<executions>
							<execution>
								<id>unpack-sources</id>
								<phase>generate-sources</phase>
								<goals>
									<goal>unpack</goal>
								</goals>
								<!-- TODO generate javadocs per module, not for the entire thing at once... -->
								<configuration>
									<outputDirectory>target/sources</outputDirectory>
									<artifactItems>
										<artifactItem>
											<groupId>org.apache.cayenne</groupId>
											<artifactId>cayenne-di</artifactId>
											<version>${project.version}</version>
											<classifier>sources</classifier>
										</artifactItem>
										<artifactItem>
											<groupId>org.apache.cayenne</groupId>
											<artifactId>cayenne-server</artifactId>
											<version>${project.version}</version>
											<classifier>sources</classifier>
										</artifactItem>
										<artifactItem>
											<groupId>org.apache.cayenne</groupId>
											<artifactId>cayenne-client</artifactId>
											<version>${project.version}</version>
											<classifier>sources</classifier>
										</artifactItem>
									</artifactItems>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>maven-javadoc-plugin</artifactId>
						<configuration>
							<!-- must use ${project.build.directory}, as using relative path "target/sources" confuses the plugin -->
							<sourcepath>${project.build.directory}/sources</sourcepath>

							<!-- this is relative to target/site/apidocs  -->
							<destDir>doc/api</destDir>
							<stylesheet>java</stylesheet>
							<header><![CDATA[<a href="http://cayenne.apache.org" target="top">Apache Cayenne</a>]]></header>
							<additionalDependencies>
								<additionalDependency>
									<groupId>net.sf.ehcache</groupId>
									<artifactId>ehcache-core</artifactId>
									<version>2.4.3</version>
								</additionalDependency>
							</additionalDependencies>
						</configuration>
						<executions>
							<execution>
								<id>javadoc</id>
								<phase>${build.docs}</phase>
								<goals>
									<goal>javadoc</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
