<?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>com.github.berkesa</groupId>
	<artifactId>datatree-adapters</artifactId>
	<version>2.0.0</version>
	<packaging>jar</packaging>

	<name>DataTree Adapters</name>
	<description>Text and binary adapters for DataTree API.</description>
	<url>https://berkesa.github.io/datatree-adapters/</url>
	<inceptionYear>2017</inceptionYear>

	<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>DataTree</name>
		<url>https://berkesa.github.io/datatree/</url>
	</organization>

	<developers>
		<developer>
			<id>berkesa</id>
			<name>Andras Berkes</name>
			<email>andras.berkes@programmer.net</email>
		</developer>
	</developers>

	<scm>
		<url>https://github.com/berkesa/datatree-adapters</url>
		<connection>scm:git:https://github.com/berkesa/datatree-adapters.git</connection>
		<developerConnection>scm:git:git://github.com/berkesa/datatree-adapters.git</developerConnection>
	</scm>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<maven.compiler.release>11</maven.compiler.release>

		<!-- Inter-project dependency (lockstep 2.0.0) -->
		<datatree-core.version>2.0.0</datatree-core.version>

		<!-- Shared dependency versions (kept in sync across the workspace) -->
		<slf4j.version>2.0.18</slf4j.version>
		<bson.version>5.8.0</bson.version>
		<jackson.version>2.19.0</jackson.version>
		<junit.version>5.14.4</junit.version>

		<!-- Format library versions -->
		<gson.version>2.14.0</gson.version>
		<genson.version>1.6</genson.version>
		<json-io.version>4.56.0</json-io.version>
		<json-smart.version>2.5.2</json-smart.version>
		<nanojson.version>1.10</nanojson.version>
		<dsl-json.version>2.0.2</dsl-json.version>
		<johnzon.version>2.1.0</johnzon.version>
		<jakarta-json.version>2.1.3</jakarta-json.version>
		<jodd-json.version>6.0.3</jodd-json.version>
		<snakeyaml.version>2.4</snakeyaml.version>
		<opencsv.version>5.10</opencsv.version>
		<xstream.version>1.4.21</xstream.version>
		<toml4j.version>0.7.2</toml4j.version>
		<jtoml.version>2.0.0</jtoml.version>
		<bson4jackson.version>2.18.0</bson4jackson.version>
		<msgpack.version>0.9.9</msgpack.version>
		<ion-java.version>1.11.10</ion-java.version>
		<kryo.version>5.6.2</kryo.version>

		<!-- Build plugin versions -->
		<maven-compiler-plugin.version>3.15.0</maven-compiler-plugin.version>
		<maven-surefire-plugin.version>3.5.4</maven-surefire-plugin.version>
		<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
		<maven-javadoc-plugin.version>3.11.2</maven-javadoc-plugin.version>
		<maven-gpg-plugin.version>3.2.7</maven-gpg-plugin.version>
		<central-publishing-plugin.version>0.9.0</central-publishing-plugin.version>
	</properties>

	<dependencyManagement>
		<dependencies>

			<!-- Unify every com.fasterxml.jackson.* module on one version -->
			<dependency>
				<groupId>com.fasterxml.jackson</groupId>
				<artifactId>jackson-bom</artifactId>
				<version>${jackson.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<!-- Align all org.junit.* artifacts -->
			<dependency>
				<groupId>org.junit</groupId>
				<artifactId>junit-bom</artifactId>
				<version>${junit.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

		</dependencies>
	</dependencyManagement>

	<dependencies>

		<!-- ====================== DATATREE CORE ====================== -->

		<dependency>
			<groupId>com.github.berkesa</groupId>
			<artifactId>datatree-core</artifactId>
			<version>${datatree-core.version}</version>
		</dependency>

		<!-- ====================== LOGGING ====================== -->

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

		<!-- ====================== MONGODB / BSON TYPES ====================== -->

		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>bson</artifactId>
			<version>${bson.version}</version>
		</dependency>

		<!-- ====================== JSON ====================== -->

		<!-- Jackson (JsonJackson + base classes) -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
		</dependency>

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

		<!-- Genson (JsonGenson) -->
		<dependency>
			<groupId>com.owlike</groupId>
			<artifactId>genson</artifactId>
			<version>${genson.version}</version>
		</dependency>

		<!-- json-io (JsonJsonIO) -->
		<dependency>
			<groupId>com.cedarsoftware</groupId>
			<artifactId>json-io</artifactId>
			<version>${json-io.version}</version>
		</dependency>

		<!-- json-smart (JsonSmart) -->
		<dependency>
			<groupId>net.minidev</groupId>
			<artifactId>json-smart</artifactId>
			<version>${json-smart.version}</version>
		</dependency>

		<!-- nanojson (JsonNano) -->
		<dependency>
			<groupId>com.grack</groupId>
			<artifactId>nanojson</artifactId>
			<version>${nanojson.version}</version>
		</dependency>

		<!-- DSL-JSON (JsonDSL) -->
		<dependency>
			<groupId>com.dslplatform</groupId>
			<artifactId>dsl-json</artifactId>
			<version>${dsl-json.version}</version>
		</dependency>

		<!-- Apache Johnzon + Jakarta JSON-P API (JsonJohnzon) -->
		<dependency>
			<groupId>org.apache.johnzon</groupId>
			<artifactId>johnzon-mapper</artifactId>
			<version>${johnzon.version}</version>
		</dependency>
		<dependency>
			<groupId>jakarta.json</groupId>
			<artifactId>jakarta.json-api</artifactId>
			<version>${jakarta-json.version}</version>
		</dependency>

		<!-- Jodd JSON (JsonJodd) -->
		<dependency>
			<groupId>org.jodd</groupId>
			<artifactId>jodd-json</artifactId>
			<version>${jodd-json.version}</version>
		</dependency>

		<!-- ====================== YAML ====================== -->

		<!-- SnakeYAML (YamlSnakeYaml) -->
		<dependency>
			<groupId>org.yaml</groupId>
			<artifactId>snakeyaml</artifactId>
			<version>${snakeyaml.version}</version>
		</dependency>

		<!-- Jackson YAML (YamlJackson) -->
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-yaml</artifactId>
		</dependency>

		<!-- ====================== CSV ====================== -->

		<!-- OpenCSV (CsvOpenCSV, TsvOpenCSV) -->
		<dependency>
			<groupId>com.opencsv</groupId>
			<artifactId>opencsv</artifactId>
			<version>${opencsv.version}</version>
		</dependency>

		<!-- ====================== PROPERTIES ====================== -->

		<!-- Jackson Properties (PropertiesJackson) -->
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-properties</artifactId>
		</dependency>

		<!-- ====================== XML ====================== -->

		<!-- Jackson XML (XmlJackson) -->
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-xml</artifactId>
		</dependency>

		<!-- XStream (XmlXStream) -->
		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>${xstream.version}</version>
		</dependency>

		<!-- ====================== TOML ====================== -->

		<!-- Toml4j (TomlToml4j) -->
		<dependency>
			<groupId>com.moandjiezana.toml</groupId>
			<artifactId>toml4j</artifactId>
			<version>${toml4j.version}</version>
		</dependency>

		<!-- JToml io.ous (TomlJtoml2) -->
		<dependency>
			<groupId>io.ous</groupId>
			<artifactId>jtoml</artifactId>
			<version>${jtoml.version}</version>
		</dependency>

		<!-- ====================== SMILE (BINARY) ====================== -->

		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-smile</artifactId>
		</dependency>

		<!-- ====================== CBOR (BINARY) ====================== -->

		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-cbor</artifactId>
		</dependency>

		<!-- ====================== BSON (BINARY) ====================== -->

		<!-- bson4jackson (BsonJackson) -->
		<dependency>
			<groupId>de.undercouch</groupId>
			<artifactId>bson4jackson</artifactId>
			<version>${bson4jackson.version}</version>
		</dependency>

		<!-- ====================== MESSAGEPACK (BINARY) ====================== -->

		<!-- jackson-dataformat-msgpack (MsgPackJackson); pulls msgpack-core transitively -->
		<dependency>
			<groupId>org.msgpack</groupId>
			<artifactId>jackson-dataformat-msgpack</artifactId>
			<version>${msgpack.version}</version>
		</dependency>

		<!-- ====================== ION (BINARY) ====================== -->

		<!-- Amazon Ion (IonIon, JsonIon) -->
		<dependency>
			<groupId>com.amazon.ion</groupId>
			<artifactId>ion-java</artifactId>
			<version>${ion-java.version}</version>
		</dependency>

		<!-- ====================== KRYO (BINARY) ====================== -->

		<dependency>
			<groupId>com.esotericsoftware</groupId>
			<artifactId>kryo</artifactId>
			<version>${kryo.version}</version>
		</dependency>

		<!-- ====================== TESTS (JUNIT 5 / JUPITER) ====================== -->

		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-suite</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<build>
		<plugins>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>${maven-compiler-plugin.version}</version>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>${maven-surefire-plugin.version}</version>
				<configuration>
					<!-- The per-adapter tests are named TreeTestWith* (they do not
					     match Surefire's default *Test naming), so include them
					     explicitly alongside the standard patterns. -->
					<includes>
						<include>**/*Test.java</include>
						<include>**/*Tests.java</include>
						<include>**/TreeTestWith*.java</include>
					</includes>
					<!-- Abstract base, JUnit Platform suite, and micro-benchmarks
					     are not correctness tests: keep them excluded from the run
					     (mirrors the old Gradle 'test { exclude ... }' list). -->
					<excludes>
						<exclude>**/ExtendedTreeTest*</exclude>
						<exclude>**/TreeTestSuite*</exclude>
						<exclude>**/Performance*</exclude>
					</excludes>
				</configuration>
			</plugin>

		</plugins>
	</build>

	<profiles>

		<!-- Release profile: sources + javadoc + GPG signing + Central Portal publishing -->
		<profile>
			<id>release</id>
			<build>
				<plugins>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-source-plugin</artifactId>
						<version>${maven-source-plugin.version}</version>
						<executions>
							<execution>
								<id>attach-sources</id>
								<goals>
									<goal>jar-no-fork</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<version>${maven-javadoc-plugin.version}</version>
						<executions>
							<execution>
								<id>attach-javadocs</id>
								<goals>
									<goal>jar</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<doclint>none</doclint>
						</configuration>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>${maven-gpg-plugin.version}</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

					<plugin>
						<groupId>org.sonatype.central</groupId>
						<artifactId>central-publishing-maven-plugin</artifactId>
						<version>${central-publishing-plugin.version}</version>
						<extensions>true</extensions>
						<configuration>
							<publishingServerId>central</publishingServerId>
						</configuration>
					</plugin>

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

	</profiles>

</project>
