<?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.wicket</groupId>
		<artifactId>wicket-parent</artifactId>
		<version>8.15.0</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<artifactId>wicket-user-guide</artifactId>
	<packaging>jar</packaging>
	<name>Wicket User Guide</name>
	<description>
		Provides the user guide of wicket
	</description>

	<properties>
		<automatic-module-name>org.apache.wicket.userguide</automatic-module-name>
		<asciidoctor.version>1.5.5</asciidoctor.version>
		<clirr.skip>true</clirr.skip>
		<!-- because of windows we need this particular version -->
		<jruby.version>1.7.21</jruby.version>
	</properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-deploy-plugin</artifactId>
					<configuration>
						<!-- Just documentation. No need to deploy -->
						<skip>true</skip>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-enforcer-plugin</artifactId>
					<version>1.4</version>
					<inherited>false</inherited>
					<configuration>
						<skip>true</skip>
					</configuration>
					<dependencies>
						<dependency>
							<groupId>com.github.ferstl</groupId>
							<artifactId>pedantic-pom-enforcers</artifactId>
							<version>1.2.0</version>
						</dependency>
					</dependencies>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<configuration>
						<!-- Just documentation, no sources -->
						<skip>true</skip>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<configuration>
						<!-- Just documentation, no sources -->
						<skipSource>true</skipSource>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.asciidoctor</groupId>
					<artifactId>asciidoctor-maven-plugin</artifactId>
					<version>${asciidoctor.version}</version>
					<configuration>
						<backend>html</backend>
						<doctype>book</doctype>
						<attributes>
							<gemPath>${project.build.directory}/gems-provided</gemPath>
							<allow-uri-read>allow-uri-read</allow-uri-read>
							<stylesheet>css/style.css</stylesheet>
							<linkcss>true</linkcss>
						</attributes>
						<preserveDirectories>true</preserveDirectories>
						<requires>
							<require>asciidoctor-diagram</require>
						</requires>
						<sourceDocumentName>single.adoc</sourceDocumentName>
						<sourceHighlighter>coderay</sourceHighlighter>
					</configuration>
					<executions>
						<execution>
							<id>output-html</id>
							<phase>generate-resources</phase>
							<goals>
								<goal>process-asciidoc</goal>
							</goals>
						</execution>
						<execution>
							<id>output-docbook</id>
							<phase>generate-resources</phase>
							<goals>
								<goal>process-asciidoc</goal>
							</goals>
							<configuration>
								<backend>docbook</backend>
								<doctype>book</doctype>
							</configuration>
						</execution>
						<execution>
							<id>output-pdf</id>
							<phase>generate-resources</phase>
							<goals>
								<goal>process-asciidoc</goal>
							</goals>
							<configuration>
								<backend>pdf</backend>
								<attributes>
									<pagenums />
									<idprefix />
									<idseparator>-</idseparator>
									<toc />
								</attributes>
							</configuration>
						</execution>
					</executions>
					<dependencies>
						<dependency>
							<groupId>org.asciidoctor</groupId>
							<artifactId>asciidoctorj-pdf</artifactId>
							<version>1.5.0-alpha.15</version>
						</dependency>
						<dependency>
							<groupId>org.asciidoctor</groupId>
							<artifactId>asciidoctorj-diagram</artifactId>
							<version>1.5.4</version>
						</dependency>
						<dependency>
							<groupId>org.asciidoctor</groupId>
							<artifactId>asciidoctorj</artifactId>
							<version>1.5.5</version>
						</dependency>
						<dependency>
							<groupId>org.jruby</groupId>
							<artifactId>jruby-complete</artifactId>
							<version>${jruby.version}</version>
						</dependency>
					</dependencies>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<profiles>
		<profile>
			<id>guide</id>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-clean-plugin</artifactId>
						<configuration>
							<filesets>
								<fileset>
									<directory>plugins</directory>
									<includes>
										<include>**/*</include>
									</includes>
									<followSymlinks>false</followSymlinks>
								</fileset>
							</filesets>
						</configuration>
					</plugin>
					<plugin>
						<groupId>org.asciidoctor</groupId>
						<artifactId>asciidoctor-maven-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>dot-1</id>
			<activation>
				<file>
					<exists>/usr/local/bin/dot</exists>
				</file>
			</activation>
			<properties>
				<dot.location>/usr/local/bin/dot</dot.location>
			</properties>
		</profile>
		<profile>
			<id>dot-2</id>
			<activation>
				<file>
					<exists>/usr/bin/dot</exists>
				</file>
			</activation>
			<properties>
				<dot.location>/usr/bin/dot</dot.location>
			</properties>
		</profile>
	</profiles>
</project>
