<?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>

	<!-- Spring Boot parent configuration for centralized dependency management -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.2.2</version>

		<relativePath />
	</parent>

	<groupId>dev.all-things.boot</groupId>
	<artifactId>nats-spring-boot</artifactId>
	<version>0.1.0</version>

	<!-- This module will be packaged as POM -->
	<packaging>pom</packaging>

	<name>Spring Boot for NATS</name>
	<description>Spring Boot abstractions for implementing NATS</description>

	<!-- Project details -->
	<url>https://github.com/all-things-dev/nats-spring-boot</url>

	<scm>
		<url>https://github.com/all-things-dev/nats-spring-boot</url>
	</scm>

	<licenses>
		<license>
			<name>Apache License, Version 2.0</name>
			<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
		</license>
	</licenses>

	<organization>
		<name>All Things Dev</name>
		<url>https://github.com/all-things-dev</url>
	</organization>

	<!-- Project modules -->
	<modules>
		<module>nats-spring-core</module>
		<module>nats-spring-boot-starter</module>
	</modules>

	<!-- Project properties -->
	<properties>

		<!-- Communication -->
		<nats.java-client.version>2.17.3</nats.java-client.version>

		<!-- Plugins -->
		<maven.source-plugin.version>3.3.0</maven.source-plugin.version>
		<maven.javadoc-plugin.version>3.6.3</maven.javadoc-plugin.version>
		<maven.nexus-staging-plugin.version>1.6.13</maven.nexus-staging-plugin.version>
		<maven.gpg-plugin.version>3.1.0</maven.gpg-plugin.version>

		<!-- Spring Boot plugin overrides -->
		<maven-source-plugin.version>${maven.source-plugin.version}</maven-source-plugin.version>
		<maven-javadoc-plugin.version>${maven.javadoc-plugin.version}</maven-javadoc-plugin.version>

		<!-- Compiler configuration -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

		<java.version>17</java.version>
		<maven.compiler.source>${java.version}</maven.compiler.source>
		<maven.compiler.target>${java.version}</maven.compiler.target>

	</properties>

	<!-- Build and plugin configuration -->
	<build>

		<!-- Common convention for generated artifacts -->
		<finalName>${project.artifactId}-${project.version}</finalName>

	</build>

	<!-- Module profiles -->
	<profiles>
		<!-- Profile for publishing to Maven Central -->
		<profile>
			<id>release</id>

			<!-- Release build configuration -->
			<build>
				<plugins>

					<!-- Source plugin configuration for publishing sources -->
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-source-plugin</artifactId>
						<executions>
							<execution>
								<id>attach-sources</id>
								<goals>
									<goal>jar-no-fork</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

					<!-- JavaDoc plugin configuration for publishing JavaDocs -->
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<executions>
							<execution>
								<id>attach-javadocs</id>
								<goals>
									<goal>jar</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

					<!-- Nexus staging plugin configuration for staging / releasing artifacts -->
					<plugin>
						<groupId>org.sonatype.plugins</groupId>
						<artifactId>nexus-staging-maven-plugin</artifactId>
						<version>${maven.nexus-staging-plugin.version}</version>

						<!-- Enabling plugin extensions -->
						<extensions>true</extensions>

						<configuration>
							<serverId>ossrh</serverId>
							<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>

							<!-- Disabling automatic publishing to Maven Central -->
							<autoReleaseAfterClose>false</autoReleaseAfterClose>
						</configuration>
					</plugin>

					<!-- GPG plugin configuration for signing published artifacts -->
					<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>
								<configuration>
									<keyname>${gpg.key-name}</keyname>
									<passphraseServerId>${gpg.key-name}</passphraseServerId>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>

			<!-- Staging / Release repository configuration -->
			<distributionManagement>
				<!-- Staging repository configuration for synchronizing with Maven Central -->
				<repository>
					<id>ossrh</id>
					<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
				</repository>

				<!-- Snapshot repository configuration for testing -->
				<snapshotRepository>
					<id>ossrh</id>
					<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
				</snapshotRepository>
			</distributionManagement>
		</profile>
	</profiles>

	<!-- Managed dependency configuration -->
	<dependencyManagement>
		<dependencies>

			<!-- Modules -->

			<dependency>
				<groupId>dev.all-things.boot</groupId>
				<artifactId>nats-spring-core</artifactId>
				<version>${project.version}</version>
			</dependency>

			<!-- Communication -->

			<dependency>
				<groupId>io.nats</groupId>
				<artifactId>jnats</artifactId>
				<version>${nats.java-client.version}</version>
			</dependency>

		</dependencies>
	</dependencyManagement>
</project>