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