<?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>one.microstream</groupId>
	<artifactId>microstream-parent</artifactId>
	<version>06.01.00-MS-GA</version>
	<packaging>pom</packaging>

	<name>MicroStream</name>
	<description>Microstream Project</description>
	<url>https://microstream.one</url>

	<organization>
		<name>MicroStream Software</name>
		<url>https://microstream.one</url>
	</organization>

	<developers>
		<developer>
			<name>MicroStream Software</name>
			<url>https://microstream.one</url>
		</developer>
	</developers>

	<licenses>
		<license>
			<name>Eclipse Public License - v 2.0</name>
			<url>https://www.eclipse.org/legal/epl-2.0/</url>
		</license>
	</licenses>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<org.owasp.depencency.check.version>6.1.6</org.owasp.depencency.check.version>
		<license.inceptionYear>2019</license.inceptionYear>
		<license.licenseName>epl_v2</license.licenseName>
		<license.licenceFile>${basedir}/LICENSE</license.licenceFile>
		<api.version>6.0</api.version>
		<javadoc.failed.on.error>false</javadoc.failed.on.error>
	</properties>

	<modules>
		<module>afs</module>
		<module>base</module>
		<module>cache</module>
		<module>communication</module>
		<module>configuration</module>
		<module>persistence</module>
		<module>storage</module>
		<module>integrations</module>
		<module>examples</module>
	</modules>

	<distributionManagement>
		<repository>
			<id>ossrh</id>
			<name>Sonytype Nexus Releases</name>
			<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
		</repository>
		<snapshotRepository>
			<id>microstream-repo</id>
			<url>https://repo.microstream.one/repository/maven-snapshots/</url>
		</snapshotRepository>
	</distributionManagement>

	<scm>
		<connection>scm:git:git@github.com:microstream-one/microstream.git</connection>
		<developerConnection>scm:git:git@github.com:microstream-one/microstream.git</developerConnection>
		<url>https://github.com/microstream-one/microstream</url>
		<tag>HEAD</tag>
	</scm>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>license-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.1</version>
					<configuration>
						<compilerId>eclipse</compilerId>
					</configuration>
					<executions>
						<execution>
							<id>default-compile</id>
							<configuration>
								<compilerArgument>-proc:none</compilerArgument>
							</configuration>
						</execution>
					</executions>
					<dependencies>
						<dependency>
							<groupId>org.codehaus.plexus</groupId>
							<artifactId>plexus-compiler-eclipse</artifactId>
							<version>2.8.5</version>
						</dependency>
						<dependency>
							<groupId>org.eclipse.jdt</groupId>
							<artifactId>ecj</artifactId>
							<version>3.26.0</version>
						</dependency>
					</dependencies>
				</plugin>
				<plugin>
					<groupId>org.apache.felix</groupId>
					<artifactId>maven-bundle-plugin</artifactId>
					<version>5.1.1</version>
					<extensions>true</extensions>
					<executions>
						<execution>
							<id>bundle-manifest</id>
							<phase>process-classes</phase>
							<goals>
								<goal>manifest</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<instructions>
							<Export-Package>one.microstream*;-split-package:=merge-first</Export-Package>
							<Import-Package>*</Import-Package>
							<DynamicImport-Package>*</DynamicImport-Package>
						</instructions>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jar-plugin</artifactId>
					<version>3.2.0</version>
					<configuration>
						<archive>
							<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
							<manifestEntries>
								<built-by>${project.organization.name}</built-by>
							</manifestEntries>
						</archive>
					</configuration>
				</plugin>
				<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.2.1</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                            <configuration>
								<archive>
									<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
									<manifestEntries>
										<built-by>${project.organization.name}</built-by>
									</manifestEntries>
								</archive>
							</configuration>
                        </execution>
                    </executions>
                </plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>3.3.0</version>
					<configuration>
						<doclint>none</doclint>
						<failOnError>false</failOnError>
						<notree>true</notree>
						<source>8</source>
						<doctitle>MicroStream API</doctitle>
						<windowtitle>MicroStream API</windowtitle>
						<stylesheetfile>${maven.multiModuleProjectDirectory}/etc/styles/javadoc-stylesheet.css</stylesheetfile>
						<archive>
							<manifestEntries>
								<built-by>${project.organization.name}</built-by>
							</manifestEntries>
						</archive>
					</configuration>
					<executions>
						<execution>
							<id>attach-javadocs</id>
							<goals>
								<goal>jar</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.moditect</groupId>
					<artifactId>moditect-maven-plugin</artifactId>
					<version>1.0.0.RC1</version>
				</plugin>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>license-maven-plugin</artifactId>
					<version>2.0.0</version>
					<configuration>
						<overrideFile>false</overrideFile>
						<includes>
							<include>**/*.java</include>
						</includes>
						<ignoreNoFileToScan>true</ignoreNoFileToScan>
					</configuration>
					<executions>
						<execution>
							<id>add-licence</id>
							<phase>process-sources</phase>
							<goals>
								<goal>update-file-header</goal>
								<goal>update-project-license</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-gpg-plugin</artifactId>
					<version>1.6</version>
					<executions>
						<execution>
							<id>sign-artifacts</id>
							<phase>verify</phase>
							<goals>
								<goal>sign</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<!-- Prevent gpg from using pinentry programs -->
						<gpgArguments>
							<arg>--pinentry-mode</arg>
							<arg>loopback</arg>
						</gpgArguments>
					</configuration>
				</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-enforcer-plugin</artifactId>
					<version>3.0.0</version>
					<executions>
						<execution>
							<id>enforce-files-exist</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<rules>
									<requireFilesExist>
										<message>The module-info is not present</message>
										<files>
											<file>${project.basedir}/src/module-info.java</file>
										</files>
									</requireFilesExist>
								</rules>
								<fail>true</fail>
							</configuration>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<profiles>
		<profile>
			<id>JMS</id>
			<activation>
				<file>
					<exists>src/module-info.java</exists>
				</file>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.moditect</groupId>
						<artifactId>moditect-maven-plugin</artifactId>
						<executions>
							<execution>
								<id>add-module-infos</id>
								<phase>package</phase>
								<goals>
									<goal>add-module-info</goal>
								</goals>
								<configuration>
									<jvmVersion>9</jvmVersion>
									<module>
										<moduleInfoFile>src/module-info.java</moduleInfoFile>
									</module>
									<overwriteExistingFiles>true</overwriteExistingFiles>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>deploy</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>javadoc-aggregate</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<version>3.3.0</version>
						<configuration>
							<doclint>html,syntax,accessibility,reference,missing</doclint>
							<failOnError>${javadoc.failed.on.error}</failOnError>
							<notree>true</notree>
							<additionalOptions>-html5</additionalOptions>
							<source>8</source>
							<doctitle>MicroStream API ${api.version}</doctitle>
							<windowtitle>MicroStream API ${api.version}</windowtitle>
							<stylesheetfile>${maven.multiModuleProjectDirectory}/etc/styles/javadoc-stylesheet.css</stylesheetfile>
							<javadocExecutable>${javadoc.executable}</javadocExecutable>
							<excludePackageNames>one.microstream.examples.*</excludePackageNames>
							<archive>
								<manifestEntries>
									<built-by>${project.organization.name}</built-by>
								</manifestEntries>
							</archive>
						</configuration>
						<executions>
							<execution>
								<id>aggregate</id>
								<goals>
									<goal>aggregate</goal>
								</goals>
								<phase>site</phase>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>module-info-check</id>
			<activation>
				<file>
					<exists>src/main/java</exists>
				</file>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-enforcer-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

</project>
