<?xml version="1.0" encoding="UTF-8"?>
<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>co.codewizards.cloudstore</groupId>
	<artifactId>co.codewizards.cloudstore.parent</artifactId>
	<version>1.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<url>http://cloudstore.codewizards.co</url>
	<inceptionYear>2013</inceptionYear>
	<licenses>
		<license>
			<name>GNU Lesser General Public License</name>
			<url>http://www.gnu.org/licenses/lgpl-3.0-standalone.html</url>
			<distribution>manual</distribution>
		</license>
	</licenses>

	<ciManagement>
		<system>jenkins</system>
		<url>https://codewizards.co/jenkins/job/co.codewizards.cloudstore/</url>
	</ciManagement>

	<issueManagement>
		<system>GitHub</system>
		<url>http://cloudstore.codewizards.co/tracker</url>
	</issueManagement>

	<properties>
		<cloudstore.version>${project.version}</cloudstore.version>
		<cloudstore_version>${project.version}</cloudstore_version> <!-- We must not use a '.' in a property used by velocity (for our web-site). -->
		<!--
		<bouncycastle.version>1.60</bouncycastle.version>
		-->
		<bouncycastle.version>161b03</bouncycastle.version>

		<slf4j.version>2.0.0-alpha1</slf4j.version>
		<logback.version>1.3.0-alpha4</logback.version>

		<jersey.version>2.29.1</jersey.version>
		<!-- <jetty.version>9.3.24.v20180605</jetty.version> -->
		<jetty.version>9.4.17.v20190418</jetty.version>

		<!-- Always aggregate. -->
		<aggregate>true</aggregate>

		<!-- Everything is UTF-8 (except for files that are specified differently 
			- e.g. properties) -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

		<!-- Java version. -->
		<!--
		2024-12-23: Building works with Java 17 and also setting these values to 17. But I reverted these values to 9 for compatibility.
		Also, I just tested building with Java 11, again, after all changes, and it works still fine. Building with Java 9 failed, though.
		As of today, I'm pretty sure that it now works with all Java-versions from 11 to 17.
		-->
		<maven.compiler.source>9</maven.compiler.source>
		<maven.compiler.target>9</maven.compiler.target>

		<datanucleus-maven-plugin.version>5.2.1</datanucleus-maven-plugin.version>
		<datanucleus-core.version>5.2.2</datanucleus-core.version>
		<datanucleus-api-jdo.version>5.2.3</datanucleus-api-jdo.version>
		<datanucleus-rdbms.version>5.2.2</datanucleus-rdbms.version>
		<datanucleus.javadoc.version>5.0</datanucleus.javadoc.version>
		<datanucleus-javax-jdo.version>3.2.0-m13</datanucleus-javax-jdo.version>
		<apache.directory.server.version>2.0.0-M20</apache.directory.server.version>
		<jmockit.version>1.49</jmockit.version>
		<jaxb.version>2.4.0-b180830.0438</jaxb.version>

		<!-- javadoc-generation still fails, but we do not necessarily need this => disable! -->
		<maven.javadoc.skip>true</maven.javadoc.skip>
	</properties>

	<repositories>
		<repository>
			<id>central</id>
			<name>Central Repository</name>
			<url>https://repo.maven.apache.org/maven2</url>
			<layout>default</layout>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
		<repository>
			<id>datanucleus-maven2-nightly</id>
			<url>http://www.datanucleus.org/downloads/maven2-nightly</url>
			<releases>
				<enabled>false</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
		<repository>
			<id>codewizards-release</id>
			<url>https://codewizards.co/maven/release</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>

	<pluginRepositories>
		<pluginRepository>
			<id>central</id>
			<name>Central Repository</name>
			<url>https://repo.maven.apache.org/maven2</url>
			<layout>default</layout>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
			<releases>
				<updatePolicy>never</updatePolicy>
			</releases>
		</pluginRepository>
		<pluginRepository>
			<id>datanucleus-maven2-nightly</id>
			<url>http://www.datanucleus.org/downloads/maven2-nightly</url>
			<releases>
				<enabled>false</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</pluginRepository>
		<pluginRepository>
			<id>mvnrepository</id>
			<url>https://mvnrepository.com/artifact/</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</pluginRepository>
	</pluginRepositories>

	<distributionManagement>
		<!--
		We configure this "junk" directory here in order to make Maven upload everything but the
		'co.codewizards.cloudstore.aggregator' to a directory which doesn't disturb us. I did not yet find out how to prevent
		Maven from uploading the other modules completely. Marco.
		-->
		<site>
			<id>cloudstore.codewizards.co</id>
			<url>file:${java.io.tmpdir}/cloudstore-junk</url>
		</site>
		<!--
		The following properties must be defined in the local ~/.m2/settings.xml to support deployment of the artifacts:
		<activeProfiles>
			<activeProfile>default</activeProfile>
		</activeProfiles>
		<profiles>
			<profile>
				<id>default</id>
				<properties>
					<cloudstore.repository.id>cloudstore-repo</cloudstore.repository.id>
					<cloudstore.repository.name>CloudStore Repository</cloudstore.repository.name>
					<cloudstore.repository.url>file:/srv/www/cloudstore/maven/release</cloudstore.repository.url>

					<cloudstore.snapshotRepository.id>cloudstore-snapshot-repo</cloudstore.snapshotRepository.id>
					<cloudstore.snapshotRepository.name>CloudStore Snapshot Repository</cloudstore.snapshotRepository.name>
					<cloudstore.snapshotRepository.url>file:/srv/www/cloudstore/maven/snapshot</cloudstore.snapshotRepository.url>
				</properties>
			</profile>
		</profiles>
		-->
		<repository>
			<id>${cloudstore.repository.id}</id>
			<name>${cloudstore.repository.name}</name>
			<url>${cloudstore.repository.url}</url>
		</repository>
		<snapshotRepository>
			<id>${cloudstore.snapshotRepository.id}</id>
			<name>${cloudstore.snapshotRepository.name}</name>
			<url>${cloudstore.snapshotRepository.url}</url>
		</snapshotRepository>
	</distributionManagement>

	<dependencyManagement>
		<dependencies>
			<!-- BEGIN co.codewizards.cloudstore -->
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.client</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.core</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.core.oio.nio</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.ls.client</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.ls.rest.client</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.ls.rest.server</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.ls.server</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.ls.server.cproc</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.ls.core</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.local</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.rest.client</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.rest.server</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.rest.shared</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.server</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.site.skin</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.test</artifactId>
				<classifier>war</classifier>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.updater</artifactId>
				<version>${cloudstore.version}</version>
			</dependency>
			<dependency>
				<groupId>co.codewizards.cloudstore</groupId>
				<artifactId>co.codewizards.cloudstore.webapp</artifactId>
				<type>war</type>
				<version>${cloudstore.version}</version>
			</dependency>
			<!-- END co.codewizards.cloudstore -->

			<!-- BEGIN third party -->
			<dependency>
				<groupId>args4j</groupId>
		    	<artifactId>args4j</artifactId>
		    	<version>2.0.16</version>
	    	</dependency>

	    	<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-server</artifactId>
				<version>${jetty.version}</version>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-servlets</artifactId>
				<version>${jetty.version}</version>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-webapp</artifactId>
				<version>${jetty.version}</version>
			</dependency>

			<dependency>
				<groupId>org.glassfish.jersey.core</groupId>
				<artifactId>jersey-client</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.core</groupId>
				<artifactId>jersey-server</artifactId>
				<version>${jersey.version}</version>
				<exclusions>
					<exclusion>
						<groupId>jakarta.xml.bind</groupId>
						<artifactId>jakarta.xml.bind-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.activation</groupId>
						<artifactId>jakarta.activation</artifactId>
					</exclusion>
				</exclusions>				
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.connectors</groupId>
				<artifactId>jersey-apache-connector</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.containers</groupId>
				<artifactId>jersey-container-servlet</artifactId>
				<version>${jersey.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.core</groupId>
				<artifactId>jersey-common</artifactId>
				<version>${jersey.version}</version>
				<exclusions>
<!--					<exclusion> At least the Jersey server essentially requires ASM. We don't need a Jersey server on Android (we can avoid using LS [LocalServer] and instead directly access objects in the same JVM). Let's deal with this problem when focusing on Android.
						<groupId>org.glassfish.hk2.external</groupId> <artifactId>asm-all-repackaged</artifactId>
					</exclusion> -->
<!--					<exclusion> Jersey crashes without cglib being present :-( But maybe this is no problem as I just read that the newest cglib supports Android. Have to deal with this problem, later - if it really still is a problem on android.
						<groupId>org.glassfish.hk2.external</groupId> <artifactId>cglib</artifactId>
					</exclusion>  -->

					<exclusion>
						<groupId>jakarta.xml.bind</groupId>
						<artifactId>jakarta.xml.bind-api</artifactId>
					</exclusion>
					<exclusion>
						<groupId>com.sun.activation</groupId>
						<artifactId>jakarta.activation</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
    			<artifactId>javax.servlet-api</artifactId>
				<version>3.1.0</version>
				<scope>provided</scope>
			</dependency>

			<dependency><!-- must be *BEFORE* junit -->
				<groupId>org.jmockit</groupId>
				<artifactId>jmockit</artifactId>
				<version>${jmockit.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.12</version>
				<scope>test</scope>
			</dependency>
			
			<dependency>
				<groupId>net.jcip</groupId>
				<artifactId>jcip-annotations</artifactId>
				<version>1.0</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>org.assertj</groupId>
				<artifactId>assertj-core</artifactId>
				<!-- 3.4.1 requires Java 8 - using the newest one that works with Java 7. -->
				<version>2.4.1</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>org.apache.directory.server</groupId>
				<artifactId>apacheds-server-integ</artifactId>
				<version>${apache.directory.server.version}</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>org.apache.directory.server</groupId>
				<artifactId>apacheds-core-integ</artifactId>
				<version>${apache.directory.server.version}</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>org.apache.derby</groupId>
				<artifactId>derby</artifactId>
				<version>10.13.1.1</version>
			</dependency>

			<dependency>
				<groupId>org.postgresql</groupId>
				<artifactId>postgresql</artifactId>
				<version>42.2.12</version>
			</dependency>

			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-compress</artifactId>
				<version>1.18</version>
			</dependency>

			<dependency>
				<groupId>org.apache.httpcomponents</groupId>
				<artifactId>httpclient</artifactId>
				<version>4.5.6</version>
			</dependency>

			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcprov-jdk15on</artifactId>
				<version>${bouncycastle.version}</version>
			</dependency>
	
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcpg-jdk15on</artifactId>
				<version>${bouncycastle.version}</version>
			</dependency>

			<!-- BEGIN logging -->
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jul-to-slf4j</artifactId>
				<version>${slf4j.version}</version>
				<!-- <scope>provided</scope> -->
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jcl-over-slf4j</artifactId>
				<version>${slf4j.version}</version>
				<!-- <scope>provided</scope> -->
			</dependency>
			<dependency> <!-- http://www.datanucleus.org/servlet/jira/browse/NUCACCESS-104 -->
				<groupId>org.slf4j</groupId>
				<artifactId>log4j-over-slf4j</artifactId>
				<version>${slf4j.version}</version>
				<!-- <scope>provided</scope> -->
			</dependency>
			<dependency>
				<groupId>ch.qos.logback</groupId>
				<artifactId>logback-classic</artifactId>
				<version>${logback.version}</version>
				<!-- <scope>provided</scope> -->
				<exclusions>
					<exclusion>
						<groupId>edu.washington.cs.types.checker</groupId>
						<artifactId>checker-framework</artifactId>
					</exclusion>
					<exclusion>
						<groupId>javax.activation</groupId>
						<artifactId>activation</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<!-- END logging -->

			<!-- BEGIN datanucleus -->
			<dependency>
				<groupId>org.datanucleus</groupId>
				<artifactId>datanucleus-core</artifactId>
				<version>${datanucleus-core.version}</version>
			</dependency>
			<dependency>
				<groupId>org.datanucleus</groupId>
				<artifactId>datanucleus-api-jdo</artifactId>
				<version>${datanucleus-api-jdo.version}</version>
			</dependency>
			<dependency>
				<groupId>org.datanucleus</groupId>
				<artifactId>javax.jdo</artifactId>
				<version>${datanucleus-javax-jdo.version}</version>
				<exclusions>
					<exclusion>
						<groupId>javax.transaction</groupId>
						<artifactId>transaction-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.datanucleus</groupId>
				<artifactId>datanucleus-rdbms</artifactId>
				<version>${datanucleus-rdbms.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.transaction</groupId>
				<artifactId>javax.transaction-api</artifactId>
				<version>1.3</version>
			</dependency>
			<!-- END datanucleus -->

			<dependency>
				<groupId>javax.activation</groupId>
				<artifactId>javax.activation-api</artifactId>
				<version>1.2.0</version>
			</dependency>

			<dependency>
				<groupId>javax.inject</groupId>
				<artifactId>javax.inject</artifactId>
				<version>1</version>
			</dependency>

			<!-- BEGIN JAXB + activation - needed since Java9
			see: https://stackoverflow.com/questions/43574426/how-to-resolve-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception-in-j
			jaxb.version = 2.3.0
			<dependency>
				<groupId>javax.xml.bind</groupId>
				<artifactId>jaxb-api</artifactId>
				<version>${jaxb.version}</version>
			</dependency>
			<dependency>
				<groupId>com.sun.xml.bind</groupId>
				<artifactId>jaxb-impl</artifactId>
				<version>${jaxb.version}</version>
			</dependency>
			<dependency>
				<groupId>com.sun.xml.bind</groupId>
				<artifactId>jaxb-core</artifactId>
				<version>${jaxb.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.activation</groupId>
				<artifactId>activation</artifactId>
				<version>1.1.1</version>
			</dependency>
			-->
			<!-- END JAXB + activation - needed since Java9 -->

			<!-- BEGIN JAXB now in different artifacts - needed for Java 11
			see: https://github.com/javaee/jaxb-v2/issues/1168
			<dependency>
				<groupId>org.glassfish.jaxb</groupId>
				<artifactId>jaxb-runtime</artifactId>
				<version>${jaxb.version}</version>
			</dependency>
			-->
			<!-- not needed? only tools for development?
			<dependency>
				<groupId>org.glassfish.jaxb</groupId>
				<artifactId>jaxb-xjc</artifactId>
				<version>${jaxb.version}</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jaxb</groupId>
				<artifactId>jaxb-jxc</artifactId>
				<version>${jaxb.version}</version>
			</dependency>
			-->

			<!-- ... -->
			<!-- Gone from jvm in java11 -->
			<dependency>
				<groupId>com.sun.xml.bind</groupId>
				<artifactId>jaxb-ri</artifactId>
				<version>${jaxb.version}</version>
				<scope>import</scope>
				<type>pom</type>
			</dependency>
			<!-- END JAXB -->

			<!-- END third party -->
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jmockit</groupId>
			<artifactId>jmockit</artifactId>
		</dependency>
		<dependency>
			<groupId>net.jcip</groupId>
			<artifactId>jcip-annotations</artifactId>
		</dependency>
		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>

		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
			</resource>
		</resources>

		<testResources>
			<testResource>
				<directory>src/test/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</testResource>
			<testResource>
				<directory>src/test/resources</directory>
			</testResource>
		</testResources>

		<pluginManagement>
			<plugins>
				<plugin>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.1</version>
					<executions>
						<execution>
							<id>default-compile</id>
							<configuration>
								<!-- compile everything to ensure module-info contains right entries
								required when JAVA_HOME is JDK 8 or below -->
								<jdkToolchain>
									<version>9</version>
								</jdkToolchain>
								<release>9</release>
							</configuration>
						</execution>
						<execution>
							<id>base-compile</id>
							<goals>
								<goal>compile</goal>
							</goals>
							<!-- recompile everything for target VM except the module-info.java -->
							<configuration>
								<excludes>
									<exclude>module-info.java</exclude>
								</excludes>
							</configuration>
						</execution>
					</executions>
					<!-- defaults for compile and testCompile -->
					<configuration>
						<!-- jdkToolchain required when JAVA_HOME is JDK 9 or above -->
						<jdkToolchain>
							<version>[1.7,9)</version>
						</jdkToolchain>
						<source>1.7</source>
						<target>1.7</target>
					</configuration>
				</plugin>

				<plugin>
					<artifactId>maven-assembly-plugin</artifactId>
<!-- 					<version>2.4</version> -->
				</plugin>
				<plugin>
					<artifactId>maven-dependency-plugin</artifactId>
<!-- 					<version>2.8</version> -->
				</plugin>

				<plugin>
					<artifactId>maven-failsafe-plugin</artifactId>
<!-- 					<version>2.17</version> -->
					<version>3.0.0-M5</version>
					<configuration>
						<!--
						Multi-threading tests (no matter whether 'classes', 'methods' or 'all') within
						the same JVM do not work: LocalServerClientGarbageCollectionIT and other ITs fail!
						They use global settings like e.g. the config directory. 

						<parallel>methods</parallel>
						<threadCount>2</threadCount>
						<perCoreThreadCount>true</perCoreThreadCount>
						-->

						<forkCount>1.5C</forkCount>
						<reuseForks>false</reuseForks>

						<argLine>
							-javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
							--add-opens java.base/java.lang=ALL-UNNAMED
							--add-opens java.base/java.util=ALL-UNNAMED
						</argLine>
						<useSystemClassLoader>true</useSystemClassLoader>
					</configuration>
					<executions>
						<execution>
							<goals>
								<goal>integration-test</goal>
								<goal>verify</goal>
							</goals>
						</execution>
					</executions>
				</plugin>

				<plugin>
					<artifactId>maven-jar-plugin</artifactId>
 					<version>2.4</version>
				</plugin>

				<plugin>
					<artifactId>maven-surefire-plugin</artifactId>
<!-- 					<version>2.19.1</version> -->
					<version>2.12.4</version>
					<configuration>
						<!--
						<parallel>classes</parallel>
						<parallel>methods</parallel>
						-->

						<!-- This is more error-prone and does not seem to be faster than forking.
						<parallel>all</parallel>
						<threadCount>4</threadCount>
						<perCoreThreadCount>true</perCoreThreadCount>
						-->

						<!-- We do not have so many test classes => running all (classes, methods) in parallel.
						WRONG! This seems to be faster (though I do not know why).
						-->
						<forkCount>1.5C</forkCount>
						<reuseForks>false</reuseForks>

						<argLine>-javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar</argLine>
						<useSystemClassLoader>true</useSystemClassLoader>
					</configuration>
				</plugin>

				<plugin>
					<artifactId>maven-surefire-report-plugin</artifactId>
					<version>3.0.0-M5</version>
				</plugin>

				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>cobertura-maven-plugin</artifactId>
					<version>2.5.1</version>
					<configuration>
						<skip>true</skip>
					</configuration>
				</plugin>

				<plugin>
					<artifactId>maven-site-plugin</artifactId>
					<!--
					The version 3.0 has the bug that it deploys to
					file:/tmp/vestigo-junk/../../opt/tomcat-jenkins/.jenkins/workspace/JDO_JPA_Query_Browser_Deploy_Stand-alone_Assemblies/scp:/nightly@eagle.nighthost.de/srv/www/nightly/vestigo.nightlabs.com/htdocs/0.1.1/download/stand-alone
					instead of
					scp:/nightly@eagle.nighthost.de/srv/www/nightly/vestigo.nightlabs.com/htdocs/0.1.1/download/stand-alone
					Downgrading to the beta-3 instead. Marco :-)
					-->
					<!-- 
					<version>3.0-beta-3</version>
					Switched to 3.3 because of https://java.net/jira/browse/PINEAPPLE-563
					-->
					<version>3.3</version>
					<configuration>
						<locales>en,de</locales>
						<inputencoding>UTF-8</inputencoding>
						<outputencoding>UTF-8</outputencoding>
						<reportPlugins>
							<!-- Suppress reports by this empty 'reportPlugins'-element. -->
						</reportPlugins>
					</configuration>
				</plugin>

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

				<plugin>
					<groupId>org.mortbay.jetty</groupId>
					<artifactId>jetty-maven-plugin</artifactId>
					<version>8.1.0.v20120127</version>
				</plugin>

				<plugin>
					<groupId>org.datanucleus</groupId>
					<artifactId>datanucleus-maven-plugin</artifactId>
					<version>${datanucleus-maven-plugin.version}</version>
					<inherited>true</inherited>
					<extensions>true</extensions>
					<configuration>
						<verbose>true</verbose>
						<!-- TODO: fork:true is the default but does not work in windows as 
							the command line gets too long. -->
						<fork>false</fork>
					</configuration>
					<executions>
						<execution>
							<phase>process-classes</phase>
							<goals>
								<goal>enhance</goal>
							</goals>
						</execution>
					</executions>
					<dependencies>
						<dependency>
							<groupId>log4j</groupId>
							<artifactId>log4j</artifactId>
							<version>1.2.16</version>
						</dependency>
						<dependency>
							<groupId>org.datanucleus</groupId>
							<artifactId>datanucleus-api-jdo</artifactId>
							<version>${datanucleus-api-jdo.version}</version>
						</dependency>
						<dependency>
							<groupId>org.datanucleus</groupId>
							<artifactId>datanucleus-core</artifactId>
							<version>${datanucleus-core.version}</version>
						</dependency>
						<dependency>
							<groupId>org.datanucleus</groupId>
							<artifactId>datanucleus-rdbms</artifactId>
							<version>${datanucleus-rdbms.version}</version>
						</dependency>
					</dependencies>
				</plugin>

				<plugin>
					<artifactId>maven-resources-plugin</artifactId>
 					<version>2.6</version>
					<configuration>
						<encoding>UTF-8</encoding>
					</configuration>
				</plugin>

				<plugin>
					<artifactId>maven-source-plugin</artifactId>
 					<version>3.2.1</version>
<!--
					<configuration>
						<includePom>true</includePom>
					</configuration>
-->
				</plugin>

				<plugin>
					<artifactId>maven-javadoc-plugin</artifactId>
					<!-- <version>2.9.1</version> -->
					<version>3.1.1</version>
					<configuration>
						<detectLinks>true</detectLinks>
						<doctitle><![CDATA[<a target="_blank" href="http://cloudstore.codewizards.co/${project.version}/">CloudStore</a> API (version ${project.version})]]></doctitle>
<!--
            			<excludePackageNames>org.cumulus4j.store.test*:org.cumulus4j.integrationtest*</excludePackageNames>
						<groups>
							<group>
            					<title><![CDATA[<a target="_blank" href="../org.cumulus4j.annotation/">org.cumulus4j.annotation</a>]]></title>
            					<packages>org.cumulus4j.annotation:org.cumulus4j.annotation.*</packages>
            				</group>
							<group>
            					<title><![CDATA[<a target="_blank" href="../org.cumulus4j.crypto/">org.cumulus4j.crypto</a>]]></title>
            					<packages>org.cumulus4j.crypto:org.cumulus4j.crypto.*</packages>
            				</group>
            			</groups>
-->
            			<header><![CDATA[<b><a target="_blank" href="http://cloudstore.codewizards.co/${project.version}/">CloudStore</a> API</b><br />(${project.version})]]></header>
<!--
            			<links>
            				<!- The Legion of the Bouncy Castle ->
            				<link>http://www.bouncycastle.org/docs/docs1.5on</link>
            				<link>http://www.bouncycastle.org/docs/mdocs1.5on</link>
            				<link>http://www.bouncycastle.org/docs/pgdocs1.5on</link>
            				<link>http://www.bouncycastle.org/docs/pkixdocs1.5on</link>

            				<!- DataNucleus
            				We don't import DN's classes directly, because we use the JDO API only. Hence,
            				DN should not occur in Javadoc anywhere, anyway. No need to reference it here.
            				<link>http://www.datanucleus.org/javadocs/core/${datanucleus.javadoc.version}</link>
            				<link>http://www.datanucleus.org/javadocs/api.jdo/${datanucleus.javadoc.version}</link>
            				<link>http://www.datanucleus.org/javadocs/store.rdbms/${datanucleus.javadoc.version}</link>
            				->

            				<!- JDO (javax.jdo.*) ->
            				<link>http://db.apache.org/jdo/api30/apidocs</link>
            			</links>
-->
            			<linksource>true</linksource>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>

		<plugins>
		<!--
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<configuration>
					<manifestLocation>META-INF</manifestLocation>
				</configuration>
			</plugin>
		-->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>cobertura-maven-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-source-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-sources</id>
						<phase>verify</phase>
						<goals>
							<goal>jar-no-fork</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

<!--
	*** BEGIN Javadoc with filtering ***
	We want to use variables like ${project.version} in Javadoc. Hence we configure it to generate the Javadoc
	first in "target/javadoc.unfiltered" and then copy it (while filtering all HTML files) to "target/apidocs"
	(the ordinary Maven Javadoc directory).
	
	As the site needs it in "target/site/apidocs", we copy it again (the filtered version).
	
	Finally, we create the javadoc-JAR from the filtered version - but this is not done here - it's only done in
	project "org.cumulus4j.crypto.all" - see that pom.xml.
-->
			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<executions>
					<execution>
						<configuration>
							<outputDirectory>${project.build.directory}/javadoc.unfiltered</outputDirectory>
							<!-- <reportOutputDirectory>${project.reporting.outputDirectory}</reportOutputDirectory> -->
							<reportOutputDirectory>${project.build.directory}</reportOutputDirectory>
							<destDir>javadoc.unfiltered</destDir>
						</configuration>

						<id>javadoc-generate-unfiltered</id>
						<phase>site</phase>
						<goals>
							<goal>javadoc</goal>
							<!-- <goal>jar</goal> -->
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<executions>
					<execution>
						<id>javadoc-filter</id>
						<phase>site</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>

						<configuration>
							<outputDirectory>${project.build.directory}/apidocs</outputDirectory>
							<resources>
								<resource>
									<directory>${project.build.directory}/javadoc.unfiltered</directory>
									<filtering>true</filtering>
									<includes>
										<include>**/*.html</include>
									</includes>
								</resource>
								<resource>
									<directory>${project.build.directory}/javadoc.unfiltered</directory>
									<filtering>false</filtering>
									<excludes>
										<exclude>**/*.html</exclude>
									</excludes>
								</resource>
							</resources>
						</configuration>
					</execution>

					<execution>
						<id>javadoc-copy-to-site</id>
						<phase>site</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>

						<configuration>
							<outputDirectory>${project.reporting.outputDirectory}/apidocs</outputDirectory>
							<resources>
								<resource>
									<directory>${project.build.directory}/apidocs</directory>
									<filtering>false</filtering>
									<includes>
										<include>**/*</include>
									</includes>
								</resource>
							</resources>
						</configuration>
					</execution>
				</executions>
			</plugin>
<!--
	*** END Javadoc with filtering ***
-->
		</plugins>
	</build>
</project>
