<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2011 The Open Source Research Group,
                   University of Erlangen-Nürnberg

    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.

-->
<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">
	<modelVersion>4.0.0</modelVersion>

	<groupId>de.fau.cs.osr</groupId>
	<artifactId>tooling</artifactId>
	<version>3.0.8</version>
	<packaging>pom</packaging>
	<name>Tooling</name>
	<url>${site-url}</url>
	<inceptionYear>2011</inceptionYear>
	<description>
		The parent project for all projects in the de.fau.cs.osr group of the Open Source Research
		Group.
	</description>

	<!-- =================================================================== -->
	<!-- Properties - Properties - Properties - Properties - Properties - Pr -->
	<!-- =================================================================== -->

	<properties>

		<!-- Source encoding -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

		<!-- Java compiler source and target version -->
		<maven.compiler.source>1.6</maven.compiler.source>
		<maven.compiler.target>${maven.compiler.source}</maven.compiler.target>

		<!-- Paths and build configuration files (override in child poms as needed) -->
		<tooling.path>${project.basedir}</tooling.path>
		<tooling.etc-path>${tooling.path}/etc</tooling.etc-path>

		<forbiddenapis-plugin.signatures>${tooling.etc-path}/forbiddenapis.txt</forbiddenapis-plugin.signatures>
		<license-maven-plugin.header>${tooling.etc-path}/apache-license-v2-header.txt</license-maven-plugin.header>
		<maven-checkstyle-plugin.config>${tooling.etc-path}/checkstyle.xml</maven-checkstyle-plugin.config>

		<!-- Configure site staging and deployment -->
		<maven-site-plugin.topSiteURL>http://sweble.org</maven-site-plugin.topSiteURL>
		<site-url>${maven-site-plugin.topSiteURL}/sites/${project.groupId}/${project.artifactId}/${project.version}</site-url>

		<!-- Where to put the git.properties file -->
		<git-commit-id-plugin.properties-filename>${project.build.outputDirectory}/${project.groupId}/${project.artifactId}/git.properties</git-commit-id-plugin.properties-filename>

		<!-- Enable/Disable plugins (override in child poms as needed) -->
		<forbiddenapis-plugin.skip>false</forbiddenapis-plugin.skip>
		<git-commit-id-plugin.skip>false</git-commit-id-plugin.skip>
		<license-maven-plugin.skip>false</license-maven-plugin.skip>
		<maven-checkstyle-plugin.skip>false</maven-checkstyle-plugin.skip>
		<maven-dependency-plugin.skip>false</maven-dependency-plugin.skip>
		<maven-deploy-plugin.skip>false</maven-deploy-plugin.skip>
		<maven-enforcer-plugin.skip>false</maven-enforcer-plugin.skip>
		<maven-install-plugin.skip>false</maven-install-plugin.skip>
		<maven-release-plugin.skip>false</maven-release-plugin.skip>
		<maven-site-plugin.skip>false</maven-site-plugin.skip>

		<!-- Maven plugins: http://maven.apache.org/plugins/ -->

		<!-- Core plugins -->
		<maven-clean-plugin.version>2.5</maven-clean-plugin.version>
		<maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
		<maven-deploy-plugin.version>2.8.1</maven-deploy-plugin.version>
		<maven-failsafe-plugin.version>2.18.1</maven-failsafe-plugin.version>
		<maven-install-plugin.version>2.4</maven-install-plugin.version>
		<maven-resources-plugin.version>2.6</maven-resources-plugin.version>
		<maven-site-plugin.version>3.5</maven-site-plugin.version>
		<maven-surefire-plugin.version>2.16</maven-surefire-plugin.version>
		<!-- verifier -->

		<!-- Packaging types / tools -->
		<maven-jar-plugin.version>2.4</maven-jar-plugin.version>
		<maven-war-plugin.version>2.4</maven-war-plugin.version>

		<!-- Reporting plugins -->
		<maven-changes-plugin.version>2.9</maven-changes-plugin.version>
		<maven-javadoc-plugin.version>2.9.1</maven-javadoc-plugin.version>
		<maven-jxr-plugin.version>2.3</maven-jxr-plugin.version>
		<maven-project-info-reports-plugin.version>2.9</maven-project-info-reports-plugin.version>
		<maven-surefire-report-plugin.version>2.16</maven-surefire-report-plugin.version>

		<!-- Tools -->
		<maven-archetype-plugin.version>2.2</maven-archetype-plugin.version>
		<maven-assembly-plugin.version>2.4</maven-assembly-plugin.version>
		<maven-checkstyle-plugin.version>2.17</maven-checkstyle-plugin.version>
		<maven-dependency-plugin.version>2.10</maven-dependency-plugin.version>
		<maven-enforcer-plugin.version>1.4.1</maven-enforcer-plugin.version>
		<maven-gpg-plugin.version>1.4</maven-gpg-plugin.version>
		<maven-release-plugin.version>2.4.1</maven-release-plugin.version>
		<maven-shade-plugin.version>1.6</maven-shade-plugin.version>
		<maven-source-plugin.version>2.2.1</maven-source-plugin.version>

		<!-- IDEs -->
		<maven-eclipse-plugin.version>2.9</maven-eclipse-plugin.version>

		<!-- MojoHaus plugins (http://www.mojohaus.org/plugins.html) -->
		<aspectj-maven-plugin.version>1.7</aspectj-maven-plugin.version>
		<build-helper-maven-plugin.version>1.8</build-helper-maven-plugin.version>
		<exec-maven-plugin.version>1.2.1</exec-maven-plugin.version>
		<cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>

		<!-- Other -->
		<forbiddenapis-plugin.version>2.0</forbiddenapis-plugin.version>
		<git-commit-id-plugin.version>2.1.12</git-commit-id-plugin.version>
		<license-maven-plugin.version>2.5</license-maven-plugin.version>
		<maven-replacer-plugin.version>1.3.2</maven-replacer-plugin.version>

		<!-- Dependencies needed by plugins -->
		<maven-scm-provider-gitexe.version>1.9.4</maven-scm-provider-gitexe.version>
		<extra-enforcer-rules.version>1.0-beta-4</extra-enforcer-rules.version>

		<!-- Dependencies: Toolkits -->
		<commons-codec.version>1.6</commons-codec.version>
		<commons-collections.version>3.2.2</commons-collections.version>
		<commons-compress.version>1.8.1</commons-compress.version>
		<commons-io.version>1.4</commons-io.version>
		<commons-jxpath.version>1.3</commons-jxpath.version>
		<commons-lang3.version>3.4</commons-lang3.version>
		<commons-math3.version>3.2</commons-math3.version>
		<guava.version>18.0</guava.version>
		<joda-time.version>2.3</joda-time.version>

		<!-- Dependencies: Logging -->
		<log4j.version>1.2.17</log4j.version>
		<slf4j.version>1.7.12</slf4j.version>

		<!-- Dependencies: XML/JSON -->
		<gson.version>2.3.1</gson.version>
		<jaxb-impl.version>2.2.5</jaxb-impl.version>
		<Saxon-HE.version>9.7.0-1</Saxon-HE.version>
		<xalan.version>2.7.2</xalan.version>
		<xercesImpl.version>2.11.0</xercesImpl.version>
		<xml-apis.version>1.4.01</xml-apis.version>

		<!-- Dependencies: AspectJ -->
		<aspectj.version>1.8.5</aspectj.version>

		<!-- Dependencies: Testing -->
		<junit.version>4.12</junit.version>
		<mockito.version>1.10.8</mockito.version>

	</properties>

	<!-- =================================================================== -->
	<!-- Dependency Management - Dependency Management - Dependency Manageme -->
	<!-- =================================================================== -->

	<dependencyManagement>
		<dependencies>

			<!-- =========================================================== -->
			<!-- AspectJ - AspectJ - AspectJ - AspectJ - AspectJ - AspectJ - -->
			<!-- =========================================================== -->

			<!-- AspectJ -->
			<dependency>
				<groupId>org.aspectj</groupId>
				<artifactId>aspectjrt</artifactId>
				<version>${aspectj.version}</version>
			</dependency>

			<!-- =========================================================== -->
			<!-- Toolkits - Toolkits - Toolkits - Toolkits - Toolkits - Tool -->
			<!-- =========================================================== -->

			<!-- Apache Commons -->
			<dependency>
				<groupId>commons-codec</groupId>
				<artifactId>commons-codec</artifactId>
				<version>${commons-codec.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-collections</groupId>
				<artifactId>commons-collections</artifactId>
				<version>${commons-collections.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-compress</artifactId>
				<version>${commons-compress.version}</version>
			</dependency>
			<dependency>
				<!--
					Also add signature "commons-io-unsafe-<ver>" to
					forbiddenapis plugin when using this dependency
				-->
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>${commons-io.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-jxpath</groupId>
				<artifactId>commons-jxpath</artifactId>
				<version>${commons-jxpath.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-lang3</artifactId>
				<version>${commons-lang3.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-math3</artifactId>
				<version>${commons-math3.version}</version>
			</dependency>

			<!-- Google Guava -->
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>${guava.version}</version>
			</dependency>

			<!-- Joda-Time - Java date and time API -->
			<dependency>
				<groupId>joda-time</groupId>
				<artifactId>joda-time</artifactId>
				<version>${joda-time.version}</version>
			</dependency>

			<!-- =========================================================== -->
			<!-- Logging - Logging - Logging - Logging - Logging - Logging - -->
			<!-- =========================================================== -->

			<!-- SLF4J Logging -->
			<dependency>
				<!-- The SLF4J API used in our code -->
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<!-- The SLF4J <-> Log4j 1.2.* adapter -->
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<!-- The Log4j logger (used as backend to SLF4J) -->
				<groupId>log4j</groupId>
				<artifactId>log4j</artifactId>
				<version>${log4j.version}</version>
			</dependency>

			<!-- =========================================================== -->
			<!-- XML/JSON - XML/JSON - XML/JSON - XML/JSON - XML/JSON - XML/ -->
			<!-- =========================================================== -->

			<!-- Google Gson -->
			<dependency>
				<groupId>com.google.code.gson</groupId>
				<artifactId>gson</artifactId>
				<version>${gson.version}</version>
			</dependency>

			<!-- JAXB Reference Implementation -->
			<dependency>
				<groupId>com.sun.xml.bind</groupId>
				<artifactId>jaxb-impl</artifactId>
				<version>${jaxb-impl.version}</version>
			</dependency>

			<!-- Saxon HE -->
			<dependency>
				<groupId>net.sf.saxon</groupId>
				<artifactId>Saxon-HE</artifactId>
				<version>${Saxon-HE.version}</version>
			</dependency>

			<!-- Apache Xalan XSLT processor -->
			<dependency>
				<groupId>xalan</groupId>
				<artifactId>xalan</artifactId>
				<version>${xalan.version}</version>
			</dependency>

			<!-- Apache Xerces2 -->
			<dependency>
				<groupId>xerces</groupId>
				<artifactId>xercesImpl</artifactId>
				<version>${xercesImpl.version}</version>
			</dependency>

			<!-- XML APIs -->
			<dependency>
				<groupId>xml-apis</groupId>
				<artifactId>xml-apis</artifactId>
				<version>${xml-apis.version}</version>
			</dependency>

			<!-- =========================================================== -->
			<!-- Testing - Testing - Testing - Testing - Testing - Testing - -->
			<!-- =========================================================== -->

			<!-- JUnit -->
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
			</dependency>

			<!--Hamcrest - Core -->
			<dependency>
				<groupId>org.hamcrest</groupId>
				<artifactId>hamcrest-core</artifactId>
				<!-- Should match the version used by junit -->
				<version>1.3</version>
			</dependency>

			<!-- Mockito -->
			<dependency>
				<groupId>org.mockito</groupId>
				<artifactId>mockito-core</artifactId>
				<version>${mockito.version}</version>
			</dependency>

		</dependencies>
	</dependencyManagement>

	<build>

		<!-- =============================================================== -->
		<!-- Plugins - Plugins - Plugins - Plugins - Plugins - Plugins - Plu -->
		<!-- =============================================================== -->

		<plugins>
			<plugin>
				<groupId>de.thetaphi</groupId>
				<artifactId>forbiddenapis</artifactId>
			</plugin>
			<plugin>
				<groupId>pl.project13.maven</groupId>
				<artifactId>git-commit-id-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>com.mycila</groupId>
				<artifactId>license-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<artifactId>maven-checkstyle-plugin</artifactId>
			</plugin>
			<plugin>
				<artifactId>maven-dependency-plugin</artifactId>
			</plugin>
			<plugin>
				<artifactId>maven-enforcer-plugin</artifactId>
			</plugin>
			<plugin>
				<artifactId>maven-site-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-site-descriptor</id>
						<goals>
							<goal>attach-descriptor</goal>
						</goals>
						<configuration>
							<skip>false</skip>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>

		<!-- =============================================================== -->
		<!-- Plugin Management - Plugin Management - Plugin Management - Plu -->
		<!-- =============================================================== -->

		<pluginManagement>
			<plugins>

				<!-- ==[ Core Plugins ]===================================== -->

				<!-- Maven Clean Plugin -->
				<plugin>
					<artifactId>maven-clean-plugin</artifactId>
					<version>${maven-clean-plugin.version}</version>
				</plugin>

				<!-- Java Maven Compiler Plugin -->
				<plugin>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>${maven-compiler-plugin.version}</version>
					<configuration>
						<source>${maven.compiler.source}</source>
						<target>${maven.compiler.target}</target>
						<args>
							<arg>-deprecation</arg>
						</args>
					</configuration>
				</plugin>

				<!-- Maven Deploy Plugin -->
				<plugin>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>${maven-deploy-plugin.version}</version>
					<configuration>
						<skip>${maven-deploy-plugin.skip}</skip>
					</configuration>
				</plugin>

				<!-- Maven Failsafe Plugin -->
				<plugin>
					<artifactId>maven-failsafe-plugin</artifactId>
					<version>${maven-failsafe-plugin.version}</version>
				</plugin>

				<!-- Maven Install Plugin -->
				<plugin>
					<artifactId>maven-install-plugin</artifactId>
					<version>${maven-install-plugin.version}</version>
					<configuration>
						<skip>${maven-install-plugin.skip}</skip>
					</configuration>
				</plugin>

				<!-- Maven Resources Plugin -->
				<plugin>
					<artifactId>maven-resources-plugin</artifactId>
					<version>${maven-resources-plugin.version}</version>
				</plugin>

				<!-- Maven Site Plugin -->
				<plugin>
					<artifactId>maven-site-plugin</artifactId>
					<version>${maven-site-plugin.version}</version>
					<configuration>
						<skip>${maven-site-plugin.skip}</skip>
						<topSiteURL>${maven-site-plugin.topSiteURL}</topSiteURL>
					</configuration>
				</plugin>

				<!-- Maven Surefire Plugin -->
				<plugin>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>${maven-surefire-plugin.version}</version>
					<configuration>
						<!-- Be less verbose by default -->
						<printSummary>false</printSummary>
						<redirectTestOutputToFile>true</redirectTestOutputToFile>
					</configuration>
				</plugin>

				<!-- ==[ Artifact Assembly ]================================ -->

				<!-- Maven Jar Plugin -->
				<plugin>
					<artifactId>maven-jar-plugin</artifactId>
					<version>${maven-jar-plugin.version}</version>
					<configuration>
						<archive>
							<manifest>
								<!-- Make sure MANIFEST files contain version information -->
								<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
								<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
							</manifest>
						</archive>
					</configuration>
				</plugin>

				<!-- Maven War Plugin -->
				<plugin>
					<artifactId>maven-war-plugin</artifactId>
					<version>${maven-war-plugin.version}</version>
					<configuration>
						<archive>
							<manifest>
								<!-- Make sure MANIFEST files contain version information -->
								<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
								<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
							</manifest>
						</archive>
					</configuration>
				</plugin>

				<!-- ==[ Reporting ]======================================== -->

				<!-- Maven Changes Plugin -->
				<plugin>
					<artifactId>maven-changes-plugin</artifactId>
					<version>${maven-changes-plugin.version}</version>
				</plugin>

				<!-- Maven Javadoc Plugin -->
				<plugin>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>${maven-javadoc-plugin.version}</version>
					<configuration>
						<!-- Be less verbose by default -->
						<quiet>true</quiet>
						<additionalparam>${javadoc.opts}</additionalparam>
					</configuration>
				</plugin>

				<!-- Maven JXR Plugin -->
				<plugin>
					<artifactId>maven-jxr-plugin</artifactId>
					<version>${maven-jxr-plugin.version}</version>
				</plugin>

				<!-- Maven Project Info Report Plugin -->
				<plugin>
					<artifactId>maven-project-info-reports-plugin</artifactId>
					<version>${maven-project-info-reports-plugin.version}</version>
				</plugin>

				<!-- Maven Surefire Report Plugin -->
				<plugin>
					<artifactId>maven-surefire-report-plugin</artifactId>
					<version>${maven-surefire-report-plugin.version}</version>
				</plugin>

				<!-- ==[ Tools ]============================================ -->

				<!-- Maven Archetype Plugin -->
				<plugin>
					<artifactId>maven-archetype-plugin</artifactId>
					<version>${maven-archetype-plugin.version}</version>
				</plugin>

				<!-- Maven Assembly Plugin -->
				<plugin>
					<artifactId>maven-assembly-plugin</artifactId>
					<version>${maven-assembly-plugin.version}</version>
				</plugin>

				<!-- Maven Checkstyle Plugin -->
				<plugin>
					<artifactId>maven-checkstyle-plugin</artifactId>
					<version>${maven-checkstyle-plugin.version}</version>
					<configuration>
						<skip>${maven-checkstyle-plugin.skip}</skip>
						<configLocation>${maven-checkstyle-plugin.config}</configLocation>
						<encoding>UTF-8</encoding>
						<consoleOutput>true</consoleOutput>
						<failsOnError>true</failsOnError>
						<linkXRef>false</linkXRef>
					</configuration>
					<executions>
						<execution>
							<id>check-code-style</id>
							<phase>validate</phase>
							<goals>
								<goal>check</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Maven Dependency Plugin -->
				<plugin>
					<artifactId>maven-dependency-plugin</artifactId>
					<version>${maven-dependency-plugin.version}</version>
					<executions>
						<execution>
							<id>analyze-dependency-usage</id>
							<phase>verify</phase>
							<goals>
								<goal>analyze-only</goal>
							</goals>
							<configuration>
								<skip>${maven-dependency-plugin.skip}</skip>
								<failOnWarning>true</failOnWarning>
							</configuration>
						</execution>
					</executions>
				</plugin>

				<!-- Maven Enforcer Plugin -->
				<plugin>
					<artifactId>maven-enforcer-plugin</artifactId>
					<version>${maven-enforcer-plugin.version}</version>
					<configuration>
						<skip>${maven-enforcer-plugin.skip}</skip>
					</configuration>
					<executions>
						<execution>
							<id>enforce-ban-version-downgrades</id>
							<phase>validate</phase>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<rules>
									<dependencyConvergence />
									<!--
										<reactorModuleConvergence /> complains
										that tooling is missing a parent. Cannot
										be enabled in submodules either because
										it will fail with the same complaint.
									 -->
									<requirePluginVersions>
										<banLatest>true</banLatest>
										<banRelease>true</banRelease>
										<banSnapshots>true</banSnapshots>
										<phases>clean,deploy,site</phases>
									</requirePluginVersions>
									<requireUpperBoundDeps />
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>enforce-ban-duplicate-classes</id>
							<phase>verify</phase>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<rules>
									<banDuplicateClasses>
										<ignoreClasses />
										<findAllDuplicates>true</findAllDuplicates>
									</banDuplicateClasses>
								</rules>
								<fail>true</fail>
							</configuration>
						</execution>
					</executions>
					<dependencies>
						<dependency>
							<groupId>org.codehaus.mojo</groupId>
							<artifactId>extra-enforcer-rules</artifactId>
							<version>${extra-enforcer-rules.version}</version>
						</dependency>
					</dependencies>
				</plugin>

				<!-- Maven GPG Plugin -->
				<plugin>
					<artifactId>maven-gpg-plugin</artifactId>
					<version>${maven-gpg-plugin.version}</version>
					<configuration>
						<!-- We don't want to enter the password for every artifact -->
						<useAgent>true</useAgent>
					</configuration>
				</plugin>

				<!-- Maven Release Plugin -->
				<plugin>
					<artifactId>maven-release-plugin</artifactId>
					<version>${maven-release-plugin.version}</version>
					<configuration>
						<!-- Don't try to deploy site by default -->
						<goals>deploy</goals>
						<skip>${maven-release-plugin.skip}</skip>
					</configuration>
					<dependencies>
						<dependency>
							<groupId>org.apache.maven.scm</groupId>
							<artifactId>maven-scm-provider-gitexe</artifactId>
							<version>${maven-scm-provider-gitexe.version}</version>
						</dependency>
					</dependencies>
				</plugin>

				<!-- Maven Shade Plugin -->
				<plugin>
					<artifactId>maven-shade-plugin</artifactId>
					<version>${maven-shade-plugin.version}</version>
				</plugin>

				<!-- Maven Source Plugin -->
				<plugin>
					<artifactId>maven-source-plugin</artifactId>
					<version>${maven-source-plugin.version}</version>
				</plugin>

				<!-- ==[ IDEs ]============================================= -->

				<!-- Maven Eclipse Plugin -->
				<plugin>
					<artifactId>maven-eclipse-plugin</artifactId>
					<version>${maven-eclipse-plugin.version}</version>
				</plugin>

				<!--
					This plugin's configuration is used to store Eclipse m2e
					settings only. It has no influence on the Maven build
					itself.
				-->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.apache.maven.plugins</groupId>
										<artifactId>maven-checkstyle-plugin</artifactId>
										<versionRange>[0,)</versionRange>
										<goals>
											<goal>check</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>

				<!-- ==[ MojoHaus plugins ]================================= -->

				<!-- Build Helper Maven Plugin -->
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>build-helper-maven-plugin</artifactId>
					<version>${build-helper-maven-plugin.version}</version>
				</plugin>

				<!-- Maven AspectJ Plugin -->
				<!--
					When using the AspectJ plugin one must disable the Maven
					Compilier Plugin in favor of the AspectJ plugin:
						<plugin>
							<artifactId>maven-compiler-plugin</artifactId>
							<configuration>
								<excludes>
									<exclude>**/*</exclude>
								</excludes>
							</configuration>
						</plugin>
				 -->
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>aspectj-maven-plugin</artifactId>
					<version>${aspectj-maven-plugin.version}</version>
					<dependencies>
						<dependency>
							<groupId>org.aspectj</groupId>
							<artifactId>aspectjtools</artifactId>
							<version>${aspectj.version}</version>
						</dependency>
					</dependencies>
					<configuration>
						<complianceLevel>${maven.compiler.source}</complianceLevel>
						<source>${maven.compiler.source}</source>
						<target>${maven.compiler.target}</target>
					</configuration>
					<executions>
						<execution>
							<goals>
								<goal>compile</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Exec Maven Plugin -->
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>exec-maven-plugin</artifactId>
					<version>${exec-maven-plugin.version}</version>
				</plugin>

				<!-- ==[ Other ]============================================ -->

				<!-- Forbidden APIs -->
				<plugin>
					<groupId>de.thetaphi</groupId>
					<artifactId>forbiddenapis</artifactId>
					<version>${forbiddenapis-plugin.version}</version>
					<configuration>
						<skip>${forbiddenapis-plugin.skip}</skip>
						<!-- disallow undocumented classes like sun.misc.Unsafe: -->
						<internalRuntimeForbidden>true</internalRuntimeForbidden>
						<failOnUnsupportedJava>false</failOnUnsupportedJava>
						<bundledSignatures>
							<bundledSignature>jdk-deprecated</bundledSignature>
						</bundledSignatures>
						<signaturesFiles>
							<signaturesFile>${forbiddenapis-plugin.signatures}</signaturesFile>
						</signaturesFiles>
					</configuration>
					<executions>
						<execution>
							<id>check-for-forbidden-apis</id>
							<phase>verify</phase>
							<goals>
								<goal>check</goal>
								<goal>testCheck</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Gather git repository information -->
				<plugin>
					<groupId>pl.project13.maven</groupId>
					<artifactId>git-commit-id-plugin</artifactId>
					<version>${git-commit-id-plugin.version}</version>
					<configuration>
						<skip>${git-commit-id-plugin.skip}</skip>
						<generateGitPropertiesFile>true</generateGitPropertiesFile>
						<generateGitPropertiesFilename>${git-commit-id-plugin.properties-filename}</generateGitPropertiesFilename>
						<gitDescribe>
							<!-- Print commit ID if no tag was found "near" this commit -->
							<always>true</always>
						</gitDescribe>
					</configuration>
					<executions>
						<execution>
							<id>gather-git-information</id>
							<phase>initialize</phase>
							<goals>
								<goal>revision</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Check and format license headers -->
				<plugin>
					<groupId>com.mycila</groupId>
					<artifactId>license-maven-plugin</artifactId>
					<version>${license-maven-plugin.version}</version>
					<configuration>
						<skip>${license-maven-plugin.skip}</skip>
						<header>${license-maven-plugin.header}</header>
						<strictCheck>true</strictCheck>
						<failIfMissing>true</failIfMissing>
						<excludes>
							<!-- A sensible default set of excludes -->
							<exclude>bin/*</exclude>
							<exclude>tooling</exclude>
							<exclude>etc/checkstyle.xml</exclude>
							<exclude>etc/forbiddenapis.txt</exclude>
							<exclude>etc/eclipse-formatter/**</exclude>
							<exclude>**/LICENSE</exclude>
							<exclude>**/NOTICE</exclude>
							<exclude>**/README</exclude>
							<exclude>**/README.md</exclude>
							<exclude>**/*.log</exclude>
							<exclude>**/.gitignore</exclude>
						</excludes>
					</configuration>
					<executions>
						<execution>
							<id>check-licenses</id>
							<phase>verify</phase>
							<goals>
								<goal>check</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<!-- Maven Replacer Plugin -->
				<plugin>
					<groupId>com.google.code.maven-replacer-plugin</groupId>
					<artifactId>maven-replacer-plugin</artifactId>
					<version>${maven-replacer-plugin.version}</version>
				</plugin>

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

	<!-- =================================================================== -->
	<!-- Reporting - Reporting - Reporting - Reporting - Reporting - Reporti -->
	<!-- =================================================================== -->

	<reporting>
		<excludeDefaults>true</excludeDefaults>
		<plugins>

			<plugin>
				<artifactId>maven-changes-plugin</artifactId>
				<configuration>
					<xmlPath>${project.basedir}/src/site/changes.xml</xmlPath>
				</configuration>
				<reportSets>
					<reportSet>
						<reports>
							<report>changes-report</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>

			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
					<quiet>true</quiet>
					<additionalparam>${javadoc.opts}</additionalparam>
				</configuration>
				<reportSets>
					<reportSet>
						<id>site-javadoc</id>
						<reports>
							<report>javadoc</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>

			<plugin>
				<artifactId>maven-jxr-plugin</artifactId>
			</plugin>

			<plugin>
				<artifactId>maven-project-info-reports-plugin</artifactId>
			</plugin>

			<plugin>
				<artifactId>maven-surefire-report-plugin</artifactId>
			</plugin>

		</plugins>
	</reporting>

	<!-- =================================================================== -->
	<!-- More Project Information - More Project Information - More Project  -->
	<!-- =================================================================== -->

	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<organization>
		<name>University of Erlangen-Nürnberg - Open Source Research Group</name>
		<url>http://osr.cs.fau.de</url>
	</organization>

	<developers>
		<developer>
			<id>driehle</id>
			<name>Dirk Riehle</name>
			<email>dirk.riehle@fau.de</email>
			<roles>
				<role>Director</role>
			</roles>
			<organization>University of Erlangen-Nürnberg - Open Source Research Group</organization>
			<timezone>+1</timezone>
		</developer>
		<developer>
			<id>hdohrn</id>
			<name>Hannes Dohrn</name>
			<email>hannes.dohrn@fau.de</email>
			<roles>
				<role>Developer</role>
			</roles>
			<organization>University of Erlangen-Nürnberg - Open Source Research Group</organization>
			<timezone>+1</timezone>
		</developer>
	</developers>

	<!-- =================================================================== -->
	<!-- Environment Settings - Environment Settings - Environment Settings  -->
	<!-- =================================================================== -->

	<issueManagement>
		<system>GitHub</system>
		<url>https://github.com/sweble/osr-common/issues</url>
	</issueManagement>

	<scm>
		<connection>scm:git://git@github.com/sweble/osr-common.git</connection>
		<developerConnection>scm:git://git@mojo-forge.cs.fau.de/sweble-public/osr-common.git</developerConnection>
		<url>https://github.com/sweble/osr-common</url>
		<tag>osr-common-3.0.8</tag>
	</scm>

	<repositories>
		<repository>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
				<updatePolicy>daily</updatePolicy>
				<checksumPolicy>warn</checksumPolicy>
			</snapshots>
			<id>osr-public-repository</id>
			<name>OSR Public Repository</name>
			<url>http://mojo-maven.cs.fau.de/content/repositories/public</url>
		</repository>
	</repositories>

	<pluginRepositories>
		<pluginRepository>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
				<updatePolicy>daily</updatePolicy>
				<checksumPolicy>warn</checksumPolicy>
			</snapshots>
			<id>osr-public-plugin-repository</id>
			<name>OSR Public Plugin Repository</name>
			<url>http://mojo-maven.cs.fau.de/content/repositories/public</url>
		</pluginRepository>
	</pluginRepositories>

	<distributionManagement>
		<repository>
			<id>sonatype-nexus-staging</id>
			<name>Sonatype Nexus Staging</name>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
		</repository>
		<snapshotRepository>
			<id>osr-public-snapshots-deployment</id>
			<name>OSR Public Snapshots Deployment</name>
			<url>http://mojo-maven.cs.fau.de/content/repositories/public-snapshots</url>
		</snapshotRepository>
		<site>
			<id>default-site</id>
			<name>Default Site</name>
			<url>${site-url}</url>
		</site>
	</distributionManagement>

	<!-- =================================================================== -->
	<!-- Profiles - Profiles - Profiles - Profiles - Profiles - Profiles - P -->
	<!-- =================================================================== -->

	<profiles>

		<!-- ==[ quick ]==================================================== -->

		<profile>
			<id>quick</id>

			<!--
				Disables compiling and executing tests
				(-DskipTests only skips test execution)
			-->
			<properties>
				<maven.test.skip>true</maven.test.skip>
				<forbiddenapis-plugin.skip>true</forbiddenapis-plugin.skip>
				<git-commit-id-plugin.skip>true</git-commit-id-plugin.skip>
				<license-maven-plugin.skip>true</license-maven-plugin.skip>
				<maven-checkstyle-plugin.skip>true</maven-checkstyle-plugin.skip>
				<maven-dependency-plugin.skip>true</maven-dependency-plugin.skip>
				<maven-enforcer-plugin.skip>true</maven-enforcer-plugin.skip>
			</properties>

			<!--
				Only generate minimal site.
				Only relevant if the site phase is invoked.
			-->
			<reporting>
				<excludeDefaults>true</excludeDefaults>
				<plugins>

					<plugin>
						<!-- It's not possible to disable this report :( -->
						<artifactId>maven-changes-plugin</artifactId>
					</plugin>

					<plugin>
						<artifactId>maven-javadoc-plugin</artifactId>
						<configuration>
							<skip>true</skip>
							<additionalparam>${javadoc.opts}</additionalparam>
						</configuration>
					</plugin>

					<plugin>
						<artifactId>maven-jxr-plugin</artifactId>
						<configuration>
							<skip>true</skip>
						</configuration>
					</plugin>

					<plugin>
						<artifactId>maven-project-info-reports-plugin</artifactId>
						<reportSets>
							<reportSet>
								<reports>
									<report>index</report>
									<report>summary</report>
								</reports>
							</reportSet>
						</reportSets>
					</plugin>

					<plugin>
						<artifactId>maven-surefire-report-plugin</artifactId>
						<configuration>
							<skipSurefireReport>true</skipSurefireReport>
						</configuration>
					</plugin>

				</plugins>
			</reporting>
		</profile>

		<!-- ==[ release ]================================================== -->

		<!--
			This profile is used to release artifacts to Maven Central.
			Each module has to build its main artifacts including javadoc and
			source. Signing of the artifacts is also required
			(see "sign" profile).
		-->
		<profile>
			<id>release</id>
			<build>
				<plugins>

					<!-- Build a javadoc JAR archive for each individual module -->
					<plugin>
						<artifactId>maven-javadoc-plugin</artifactId>
						<executions>
							<execution>
								<id>attach-javadoc-jar</id>
								<phase>package</phase>
								<goals>
									<goal>jar</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<quiet>true</quiet>
							<additionalparam>${javadoc.opts}</additionalparam>
						</configuration>
					</plugin>

					<!-- Build a source JAR archive for each individual module -->
					<plugin>
						<artifactId>maven-source-plugin</artifactId>
						<executions>
							<execution>
								<id>attach-sources-jar</id>
								<phase>package</phase>
								<goals>
									<goal>jar-no-fork</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

					<!-- We have to explicitly define it here to force the right execution order of plugins -->
					<plugin>
						<artifactId>maven-deploy-plugin</artifactId>
						<executions>
							<execution>
								<id>deploy</id>
								<phase>deploy</phase>
								<goals>
									<goal>deploy</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

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

		<!-- ==[ sign ]===================================================== -->

		<!--
			Sign the generated artifacts. Usually used in conjunction with the
			"release" profile to deploy artifacts to Maven Central. The key name
			has to be given as option on the command line (-Dgpg.keyname=...)
			and the key should be unlocked and held by the gpg agent.
		-->
		<profile>
			<id>sign</id>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-gpg-plugin</artifactId>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>

		<!-- ==[ disable checkstyle ]======================================= -->

		<profile>
			<id>disable-checkstyle-plugin-for-tooling-module</id>
			<activation>
				<file>
					<exists>tooling</exists>
				</file>
			</activation>
			<properties>
				<maven-checkstyle-plugin.skip>true</maven-checkstyle-plugin.skip>
			</properties>
		</profile>

		<!-- ==[ disable java8 doclint ]==================================== -->

		<profile>
	    <id>java8-doclint-disabled</id>
	    <activation>
	      <jdk>[1.8,)</jdk>
	    </activation>
	    <properties>
	      <javadoc.opts>-Xdoclint:none</javadoc.opts>
	    </properties>
	  </profile>

	</profiles>
</project>
