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

    Sliceworkz Event Modeling - an opinionated Event Modeling framework in Java
    Copyright © 2025-2026 Sliceworkz / XTi (info@sliceworkz.org)

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

-->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.sliceworkz</groupId>
	<artifactId>sliceworkz-eventmodeling</artifactId>
	<version>0.6.4</version>
	
	<name>${project.artifactId}</name>
	<description>An opinionated Event Modeling framework in Java</description>
	<url>https://sliceworkz.github.io/eventmodeling</url>
	
	<packaging>pom</packaging>


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

		<sliceworkz.eventstore.version>0.9.1</sliceworkz.eventstore.version>
		
		<maven.minimal-version>3.6.3</maven.minimal-version>
		
		<maven.maven-pgp-plugin.version>3.2.8</maven.maven-pgp-plugin.version>
		<maven.maven-versions-plugin.version>2.21.0</maven.maven-versions-plugin.version>
		<maven.maven-enforcer-plugin.version>3.6.3</maven.maven-enforcer-plugin.version>
		<maven.mycila-license-plugin.version>5.0.0</maven.mycila-license-plugin.version>
		<maven.maven-central-publishing-plugin.version>0.10.0</maven.maven-central-publishing-plugin.version>
		
		<maven.compiler.release>21</maven.compiler.release>
	</properties>
	
	<modules>
		<module>sliceworkz-eventmodeling-bom</module>
		<module>sliceworkz-eventmodeling-parent-pom</module>
		<module>sliceworkz-eventmodeling-api</module>
		<module>sliceworkz-eventmodeling-impl</module>
		<module>sliceworkz-eventmodeling-testing</module>
		<module>sliceworkz-eventmodeling-tests-inmem</module>
		<module>sliceworkz-eventmodeling-tests-postgres</module>
		<module>sliceworkz-eventmodeling-benchmark</module>
		<module>sliceworkz-eventmodeling-examples</module>
	</modules>
	
	<build>
		<plugins>
			<plugin>
			    <groupId>org.codehaus.mojo</groupId>
			    <artifactId>versions-maven-plugin</artifactId>
			    <version>${maven.maven-versions-plugin.version}</version>
			    
			    <!-- make sure we get the right suggestions from 
			    		mvn versions:display-dependency-updates
			    	 and
			    		mvn versions:display-plugin-updates
			     -->
			    <configuration>
					<ruleSet>
			            <ignoreVersions>
							<!-- Don't depend on snapshots' -->
							<ignoreVersion>
								<type>regex</type>
								<version>(.+-SNAPSHOT|.+-M\d)</version>
							</ignoreVersion>
							<!-- Don't depend on alpha or beta versions' -->
							<ignoreVersion>
								<type>regex</type>
								<version>.+-(alpha|beta).+</version>
							</ignoreVersion>
							<!-- Don't depend on release candidates -->
							<ignoreVersion>
								<type>regex</type>
								<version>(?i).+-rc[-.]?\d+</version>
							</ignoreVersion>
			            </ignoreVersions>
			    	</ruleSet>
				</configuration>
			</plugin>
			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<version>${maven.maven-enforcer-plugin.version}</version>
				<executions>
					<execution>
						<id>enforce-maven</id>
						<goals>
							<goal>enforce</goal>
						</goals>
						<configuration>
							<rules>
								<requireMavenVersion>
									<version>${maven.minimal-version}</version>
								</requireMavenVersion>
							</rules>    
						</configuration>
					</execution>
				</executions>
			</plugin>
					        					
			<plugin>
			    <groupId>org.sonatype.central</groupId>
			    <artifactId>central-publishing-maven-plugin</artifactId>
			    <version>${maven.maven-central-publishing-plugin.version}</version>
			    <extensions>true</extensions>
			    <configuration>
				<publishingServerId>central</publishingServerId>
				<deploymentName>eventmodeling-${project.version}</deploymentName>				
			    </configuration>
			</plugin>
      		
			<plugin>
			    <groupId>com.mycila</groupId>
			    <artifactId>license-maven-plugin</artifactId>
			    <version>${maven.mycila-license-plugin.version}</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>check</goal>
						</goals>
					</execution>
				</executions>
			    <configuration>
					<properties>
						<project.name>Sliceworkz Event Modeling</project.name>
						<project.description>an opinionated Event Modeling framework in Java</project.description>
					    <owner>Sliceworkz / XTi</owner>
					    <email>info@sliceworkz.org</email>
					    <year>2025-2026</year>
					</properties>
					<licenseSets>
						<licenseSet>
							<header>com/mycila/maven/plugin/license/templates/LGPL-3.txt</header>
							<includes>
							    <include>**/*.java</include>
							    <include>**/*.sql</include>
							    <include>**/*.xml</include>
							    <include>**/*.properties</include>
							</includes>
							<excludes>
							    <exclude>**/target/**</exclude>
							</excludes>
						</licenseSet>
					</licenseSets>
			    </configuration>
			</plugin>
		</plugins>
	</build>
	
	<profiles>
		<profile>
			<id>gpg-ci</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>${maven.maven-pgp-plugin.version}</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>install</phase>
								<goals>
									<goal>sign</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<gpgArguments>
								<arg>--pinentry-mode</arg>
								<arg>loopback</arg>
							</gpgArguments>
							<passphrase>${env.GPG_PASSPHRASE}</passphrase>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		  <profile>
			<id>snapshots</id>	
			<repositories>
				<repository>
					<name>Central Portal Snapshots</name>
					<id>central-portal-snapshots</id>
					<url>https://central.sonatype.com/repository/maven-snapshots/</url>
					<releases>
						<enabled>false</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</repository>
			</repositories>
		  </profile>

	</profiles>
	
	<licenses>
		<license>
			<name>LGPL License</name>
			<url>https://opensource.org/license/lgpl-3-0</url>
		</license>
	</licenses>

	<developers>
		<developer>
			<name>Günther Van Roey</name>
			<email>gunther.vanroey@xt-i.com</email>
		</developer>
	</developers>
	
	<scm>
		<connection>https://github.com/sliceworkz/eventmodeling.git</connection>
		<developerConnection>scm:git:git://github.com/sliceworkz/eventmodeling.git</developerConnection>
		<url>https://github.com/sliceworkz/eventmodeling</url>
	</scm>
	
</project>
