<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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/xsd/maven-4.0.0.xsd">

	<!--

	Global parent pom.xml for Spring Data modules to inherit from.

	- Shared resources are pulled in from the spring-data-build-resources dependency (images, CSS, XSLTs for documentation generation)
	- Renders reference documentation from Asciidoctor file named index.adoc within src/main/asciidoc
	- In the "distribute" profile, an assembly is generated:
	  - one to be uploaded to static.springsource.org (incl. javadoc (browsable), reference docs as described before)

	Preconfigures the following:

	- Logging dependencies: SLF4j + Commons Logging bridge and Logback as test dependency
	- Test dependencies: JUnit / Hamcrest / Mockito
	- Dependency versions for commonly used dependencies

	-->

	<modelVersion>4.0.0</modelVersion>

	<artifactId>spring-data-parent</artifactId>
	<packaging>pom</packaging>

	<parent>
		<groupId>org.springframework.data.build</groupId>
		<artifactId>spring-data-build</artifactId>
		<version>1.8.3.RELEASE</version>
		<relativePath>../pom.xml</relativePath>
	</parent>

	<name>Spring Data Build - General parent module</name>
	<description>Global parent pom.xml to be used by Spring Data modules</description>
	<url>http://www.spring.io/spring-data</url>
	<inceptionYear>2011-2015</inceptionYear>

	<organization>
		<name>Pivotal Software, Inc.</name>
		<url>http://www.spring.io</url>
	</organization>

	<developers>
		<developer>
			<id>ogierke</id>
			<name>Oliver Gierke</name>
			<email>ogierke at pivotal.io</email>
			<organization>Pivotal Software, Inc.</organization>
			<organizationUrl>http://www.spring.io</organizationUrl>
			<roles>
				<role>Project lead</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
	</developers>

	<licenses>
		<license>
			<name>Apache License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0</url>
			<comments>
			Copyright 2008-2016 the original author or authors.

			Licensed 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.
			</comments>
		</license>
	</licenses>

	<properties>

		<bundlor.enabled>true</bundlor.enabled>
		<bundlor.failOnWarnings>true</bundlor.failOnWarnings>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.root>${basedir}</project.root>
		<source.level>1.6</source.level>
		<dist.id>${project.artifactId}</dist.id>
		<jacoco.destfile>${project.build.directory}/jacoco.exec</jacoco.destfile>

		<apt>1.1.3</apt>
		<aspectj>1.8.9</aspectj>
		<cdi>1.0</cdi>
		<commons-io>2.4</commons-io>
		<guava>19.0</guava>
		<hamcrest>1.3</hamcrest>
		<jackson>2.6.7</jackson>
		<jacoco>0.7.7.201606060606</jacoco>
		<jodatime>2.9.4</jodatime>
		<junit>4.12</junit>
		<logback>1.1.7</logback>
		<lombok>1.16.10</lombok>
		<mockito>1.10.19</mockito>
		<querydsl>4.1.4</querydsl>
		<rxjava>1.1.10</rxjava>
		<slf4j>1.7.21</slf4j>
		<spring>4.2.8.RELEASE</spring>
		<spring-hateoas>0.20.0.RELEASE</spring-hateoas>
		<threetenbp>1.3.2</threetenbp>
		<webbeans>1.2.8</webbeans>

		<releasetrain>Hopper-SR3</releasetrain>

	</properties>

	<profiles>

		<profile>

			<!-- Profile to be run on the CI server, JARs JavaDocs -->

			<id>ci</id>

			<build>
				<plugins>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<executions>
							<execution>
								<id>package-javadoc</id>
								<goals>
									<goal>jar</goal>
								</goals>
								<phase>package</phase>
							</execution>
						</executions>
					</plugin>

				</plugins>
			</build>

		</profile>

		<profile>

			<!-- Profile for SonarCube -->

			<id>sonarcube</id>

			<build>
				<plugins>
					<plugin>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
						<version>${jacoco}</version>
						<configuration>
							<destFile>${jacoco.destfile}</destFile>
						</configuration>
						<executions>
							<execution>
								<id>jacoco-initialize</id>
								<goals>
									<goal>prepare-agent</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>

			<!--
				Profile to be activated when building the distribution atrifacts.

				Generates reference documentation, aggregates JavaDoc etc. Has to be combined with
				profiles "release" or "milestone" to deploy artifacts into the appropriate places.
			-->

			<id>distribute</id>

			<properties>
				<shared.resources>${project.build.directory}/shared-resources</shared.resources>
				<maven.install.skip>true</maven.install.skip>
				<skipTests>true</skipTests>
			</properties>

			<dependencies>
				<dependency>
					<groupId>org.springframework.data.build</groupId>
					<artifactId>spring-data-build-resources</artifactId>
					<version>1.8.3.RELEASE</version>
					<scope>provided</scope>
					<type>zip</type>
				</dependency>
			</dependencies>

			<build>

				<plugins>

					<!--
						Unpacks the content of spring-data-build-resources into the shared resources folder.
					-->

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-dependency-plugin</artifactId>
						<executions>
							<execution>
								<id>unpack-shared-resources</id>
								<goals>
									<goal>unpack-dependencies</goal>
								</goals>
								<phase>generate-resources</phase>
							</execution>
						</executions>
						<configuration>
							<includeGroupIds>${project.groupId}</includeGroupIds>
							<includeArtifacIds>spring-data-build-resources</includeArtifacIds>
							<includeTypes>zip</includeTypes>
							<excludeTransitive>true</excludeTransitive>
							<outputDirectory>${shared.resources}</outputDirectory>
						</configuration>
					</plugin>

					<!--
						Configures JavaDoc generation.
					-->

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<executions>
							<execution>
								<id>aggregate-javadoc</id>
								<goals>
									<goal>aggregate</goal>
								</goals>
								<phase>package</phase>
							</execution>
						</executions>
					</plugin>

					<!--
						Copies all namespaces schemas to target/schemas flatten the directory structure.
						Depended on by the site.xml assembly descriptor.
					-->

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-antrun-plugin</artifactId>
						<executions>

							<execution>
								<id>copy-documentation-resources</id>
								<phase>generate-resources</phase>
								<configuration>
									<target>
										<copy todir="${project.root}/target/site/reference/html">
											<fileset dir="${shared.resources}/asciidoc" erroronmissingdir="false">
												<include name="**/*.css"/>
											</fileset>
											<flattenmapper/>
										</copy>
										<copy todir="${project.root}/target/site/reference/html/images">
											<fileset dir="${basedir}/src/main/asciidoc" erroronmissingdir="false">
												<include name="**/*.png"/>
												<include name="**/*.gif"/>
												<include name="**/*.jpg"/>
											</fileset>
											<flattenmapper/>
										</copy>
									</target>
								</configuration>
								<goals>
									<goal>run</goal>
								</goals>
							</execution>

							<execution>
								<id>collect-schema-files</id>
								<phase>process-resources</phase>
								<configuration>
									<target>
										<copy todir="${project.build.directory}/schemas">
											<fileset dir="${basedir}" erroronmissingdir="false">
												<include name="**/src/main/resources/**/config/spring-*.xsd"/>
											</fileset>
											<flattenmapper/>
										</copy>
									</target>
								</configuration>
								<goals>
									<goal>run</goal>
								</goals>
							</execution>

							<execution>
								<id>rename-reference-docs</id>
								<phase>process-resources</phase>
								<configuration>
									<target>
										<copy failonerror="false" file="${project.build.directory}/generated-docs/index.pdf" tofile="${project.root}/target/site/reference/pdf/${dist.id}-reference.pdf"/>
										<copy failonerror="false" file="${project.build.directory}/generated-docs/index.epub" tofile="${project.root}/target/site/reference/epub/${dist.id}-reference.epub"/>
									</target>
								</configuration>
								<goals>
									<goal>run</goal>
								</goals>
							</execution>

						</executions>

					</plugin>

				</plugins>

				<pluginManagement>
					<plugins>

						<!--
							Asciidoctor
						-->

						<plugin>
							<groupId>org.asciidoctor</groupId>
							<artifactId>asciidoctor-maven-plugin</artifactId>
							<dependencies>
								<dependency>
									<groupId>org.asciidoctor</groupId>
									<artifactId>asciidoctorj-pdf</artifactId>
									<version>1.5.0-alpha.11</version>
								</dependency>
								<dependency>
									<groupId>org.asciidoctor</groupId>
									<artifactId>asciidoctorj-epub3</artifactId>
									<version>1.5.0-alpha.6</version>
								</dependency>
							</dependencies>
							<executions>

								<execution>
									<id>html</id>
									<phase>generate-resources</phase>
									<goals>
										<goal>process-asciidoc</goal>
									</goals>
									<configuration>
										<backend>html5</backend>
										<outputDirectory>${project.root}/target/site/reference/html</outputDirectory>
										<sectids>false</sectids>
										<sourceHighlighter>prettify</sourceHighlighter>
										<attributes>
											<linkcss>true</linkcss>
											<icons>font</icons>
											<sectanchors>true</sectanchors>
											<stylesheet>spring.css</stylesheet>
										</attributes>
									</configuration>
								</execution>

								<execution>
									<id>epub</id>
									<phase>generate-resources</phase>
									<goals>
										<goal>process-asciidoc</goal>
									</goals>
									<configuration>
										<backend>epub3</backend>
										<sourceHighlighter>coderay</sourceHighlighter>
									</configuration>
								</execution>

								<execution>
									<id>pdf</id>
									<phase>generate-resources</phase>
									<goals>
										<goal>process-asciidoc</goal>
									</goals>
									<configuration>
										<backend>pdf</backend>
										<sourceHighlighter>coderay</sourceHighlighter>
									</configuration>
								</execution>

							</executions>

							<configuration>
								<sourceDirectory>${project.root}/src/main/asciidoc</sourceDirectory>
								<sourceDocumentName>index.adoc</sourceDocumentName>
								<doctype>book</doctype>
								<attributes>
									<version>${project.version}</version>
									<projectName>${project.name}</projectName>
									<projectVersion>${project.version}</projectVersion>
									<aspectjVersion>${aspectj}</aspectjVersion>
									<querydslVersion>${querydsl}</querydslVersion>
									<springVersion>${spring}</springVersion>
									<releasetrainVersion>${releasetrain}</releasetrainVersion>
									<allow-uri-read>true</allow-uri-read>
									<toclevels>3</toclevels>
									<numbered>true</numbered>
								</attributes>
							</configuration>

						</plugin>

						<!--
							Creates two zip files for download as well as API and reference documentation distribution.
						-->
						<plugin>
							<groupId>org.apache.maven.plugins</groupId>
							<artifactId>maven-assembly-plugin</artifactId>
							<executions>
								<execution>
									<id>static</id>
									<goals>
										<goal>single</goal>
									</goals>
									<phase>package</phase>
									<configuration>
										<descriptors>
											<descriptor>${shared.resources}/assemblies/static-resources.xml</descriptor>
										</descriptors>
										<finalName>static-resources</finalName>
										<appendAssemblyId>false</appendAssemblyId>
									</configuration>
								</execution>
							</executions>
						</plugin>

						<plugin>
							<groupId>org.codehaus.mojo</groupId>
							<artifactId>wagon-maven-plugin</artifactId>
							<configuration>
								<fromDir>${project.build.directory}</fromDir>
							</configuration>
							<executions>

								<!-- Upload namespace XSDs -->

								<execution>
									<id>upload-schema</id>
									<phase>deploy</phase>
									<goals>
										<goal>upload</goal>
									</goals>
									<configuration>
										<fromDir>${project.root}/target/schemas</fromDir>
										<includes>*.xsd,.autoschemaln</includes>
										<serverId>static-dot-s2</serverId>
										<url>scp://static.springsource.org</url>
										<toDir>/var/www/domains/springsource.org/www/htdocs/autorepo/schema/${dist.id}/${project.version}</toDir>
										<optimize>true</optimize>
									</configuration>
								</execution>

								<!-- Distribute static resources -->

								<execution>
									<id>upload-static-resources</id>
									<phase>deploy</phase>
									<goals>
										<goal>upload</goal>
									</goals>
									<configuration>
										<fromDir>${project.build.directory}/static-resources</fromDir>
										<includes>**</includes>
										<serverId>static-dot-s2</serverId>
										<url>scp://static.springsource.org</url>
										<toDir>/var/www/domains/springsource.org/www/htdocs/autorepo/docs/${dist.id}/${project.version}</toDir>
										<optimize>true</optimize>
									</configuration>
								</execution>
							</executions>
						</plugin>

						<plugin>
							<groupId>org.apache.maven.plugins</groupId>
							<artifactId>maven-deploy-plugin</artifactId>
							<configuration>
								<skip>true</skip>
							</configuration>
						</plugin>

					</plugins>
				</pluginManagement>
			</build>
		</profile>

		<profile>

			<id>spring42-next</id>

			<properties>
				<spring>4.2.9.BUILD-SNAPSHOT</spring>
			</properties>

			<repositories>
				<repository>
					<id>spring-libs-snapshot</id>
					<url>http://repo.spring.io/libs-snapshot</url>
				</repository>
			</repositories>

		</profile>

		<profile>

			<id>spring43</id>

			<properties>
				<spring>4.3.2.RELEASE</spring>
			</properties>

		</profile>

		<profile>

			<id>spring43-next</id>

			<properties>
				<spring>4.3.3.BUILD-SNAPSHOT</spring>
			</properties>

			<repositories>
				<repository>
					<id>spring-libs-snapshot</id>
					<url>http://repo.spring.io/libs-snapshot</url>
				</repository>
			</repositories>

		</profile>

		<profile>

			<id>spring5</id>

			<properties>
				<spring>5.0.0.M1</spring>
			</properties>

			<repositories>
				<repository>
					<id>spring-libs-milestone</id>
					<url>http://repo.spring.io/libs-milestone</url>
				</repository>
			</repositories>

		</profile>

		<profile>

			<id>spring5-next</id>

			<properties>
				<spring>5.0.0.BUILD-SNAPSHOT</spring>
			</properties>

			<repositories>
				<repository>
					<id>spring-libs-snapshot</id>
					<url>http://repo.spring.io/libs-snapshot</url>
				</repository>
			</repositories>

		</profile>

		<profile>
			<id>querydsl-next</id>
			<properties>
				<querydsl>4.1.0.BUILD-SNAPSHOT</querydsl>
			</properties>
			<repositories>
				<repository>
					<id>oss-nexus-snapshots</id>
					<url>http://oss.sonatype.org/content/repositories/snapshots</url>
				</repository>
			</repositories>
		</profile>

	</profiles>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-framework-bom</artifactId>
				<version>${spring}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>

		<!-- Test -->
		<dependency>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-library</artifactId>
			<version>${hamcrest}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-core</artifactId>
			<version>${hamcrest}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId>
			<version>${mockito}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- Logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j}</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${slf4j}</version>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>${logback}</version>
			<scope>test</scope>
		</dependency>

		<!-- Lombok -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>${lombok}</version>
			<optional>true</optional>
		</dependency>

	</dependencies>

	<build>

		<extensions>
			<extension>
				<groupId>org.apache.maven.wagon</groupId>
				<artifactId>wagon-ssh</artifactId>
				<version>2.5</version>
			</extension>
		</extensions>

		<!--
			Default versioned declarations of managed plugins
			to be overridden when the distribute profile is active.
			If this section was missing, Maven would complain about
			missing version numbers for executions without the
			profile active.
		-->

		<pluginManagement>

			<plugins>

				<plugin>
					<groupId>com.springsource.bundlor</groupId>
					<artifactId>com.springsource.bundlor.maven</artifactId>
					<version>1.0.0.RELEASE</version>
				</plugin>

				<plugin>
					<groupId>org.asciidoctor</groupId>
					<artifactId>asciidoctor-maven-plugin</artifactId>
					<version>1.5.3</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-antrun-plugin</artifactId>
					<version>1.8</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-assembly-plugin</artifactId>
					<version>2.6</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.3</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-dependency-plugin</artifactId>
					<version>2.10</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>2.8.2</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jar-plugin</artifactId>
					<version>2.6</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>2.10.3</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>3.0.0</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>2.19.1</version>
				</plugin>

				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>wagon-maven-plugin</artifactId>
					<version>1.0</version>
				</plugin>

			</plugins>

		</pluginManagement>

		<plugins>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>${source.level}</source>
					<target>${source.level}</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<useFile>false</useFile>
					<includes>
						<include>**/*Tests.java</include>
					</includes>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<useDefaultManifestFile>true</useDefaultManifestFile>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>com.springsource.bundlor</groupId>
				<artifactId>com.springsource.bundlor.maven</artifactId>
				<configuration>
					<enabled>${bundlor.enabled}</enabled>
					<failOnWarnings>${bundlor.failOnWarnings}</failOnWarnings>
				</configuration>
				<executions>
					<execution>
						<id>bundlor</id>
						<goals>
							<goal>bundlor</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
					<breakiterator>true</breakiterator>
					<header>${project.name}</header>
					<source>${source.level}</source>
					<quiet>true</quiet>
					<javadocDirectory>${shared.resources}/javadoc</javadocDirectory>
					<overview>${shared.resources}/javadoc/overview.html</overview>
					<stylesheetfile>${shared.resources}/javadoc/spring-javadoc.css</stylesheetfile>
					<!-- copies doc-files subdirectory which contains image resources -->
					<docfilessubdirs>true</docfilessubdirs>
					<additionalparam>-Xdoclint:none</additionalparam>
					<links>
						<link>http://docs.spring.io/spring/docs/4.2.x/javadoc-api/</link>
						<link>http://docs.spring.io/spring-data/commons/docs/current/api/</link>
						<link>http://docs.oracle.com/javase/6/docs/api</link>
					</links>
				</configuration>
			</plugin>

		</plugins>
	</build>

	<repositories>
		<repository>
			<id>spring-libs-release</id>
			<url>https://repo.spring.io/libs-release</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>

	<pluginRepositories>
		<pluginRepository>
			<id>spring-plugins-release</id>
			<url>https://repo.spring.io/plugins-release</url>
		</pluginRepository>
	</pluginRepositories>

</project>
