<?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.B1</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>generate-resources</phase>
								<goals>
									<goal>javadoc</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
