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

    Copyright (c) 2019-2025 "Neo4j,"
    Neo4j Sweden AB [https://neo4j.com]

    This file is part of Neo4j.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        https://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->
<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>org.neo4j</groupId>
	<artifactId>neo4j-cypher-dsl-parent</artifactId>
	<version>2025.2.2</version>
	<packaging>pom</packaging>

	<name>Neo4j Cypher DSL</name>
	<description>A DSL for generating Cypher statements for Neo4j</description>
	<url>https://neo4j.github.io/cypher-dsl</url>

	<inceptionYear>2011</inceptionYear>
	<organization>
		<name>Neo4j, Neo4j Sweden AB</name>
		<url>https://neo4j.com</url>
	</organization>
	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<developers>
		<developer>
			<id>gmeier</id>
			<name>Gerrit Meier</name>
			<email>gerrit.meier at neo4j.com</email>
			<organization>Neo Technology</organization>
			<organizationUrl>https://neo4j.com</organizationUrl>
			<roles>
				<role>Developer</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
		<developer>
			<id>mhunger</id>
			<name>Michael Hunger</name>
			<email>michael.hunger at neo4j.com</email>
			<organization>Neo Technology</organization>
			<organizationUrl>https://neo4j.com</organizationUrl>
			<roles>
				<role>Developer</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
		<developer>
			<id>msimons</id>
			<name>Michael Simons</name>
			<email>michael.simons at neo4j.com</email>
			<organization>Neo Technology</organization>
			<organizationUrl>https://neo4j.com</organizationUrl>
			<roles>
				<role>Project Lead</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
		<developer>
			<id>fbiville</id>
			<name>Florent Biville</name>
			<email>florent.biville at neo4j.com</email>
			<organization>Neo Technology</organization>
			<organizationUrl>https://neo4j.com</organizationUrl>
			<roles>
				<role>developer</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
		<developer>
			<id>Andy2003</id>
			<name>Andreas Berger</name>
			<email>andreas at berger-ecommerce.com</email>
			<roles>
				<role>Developer</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
		<developer>
			<id>aince</id>
			<name>Ali Ince</name>
			<email>ali.ince at neo4j.com</email>
			<organization>Neo Technology</organization>
			<organizationUrl>https://neo4j.com</organizationUrl>
			<roles>
				<role>developer</role>
			</roles>
			<timezone>0</timezone>
		</developer>
	</developers>

	<modules>
		<module>neo4j-cypher-dsl-bom</module>
		<module>neo4j-cypher-dsl-schema-name-support</module>
		<module>neo4j-cypher-dsl-build</module>
		<module>neo4j-cypher-dsl</module>
		<module>neo4j-cypher-dsl-codegen</module>
		<module>neo4j-cypher-dsl-parser</module>
		<module>neo4j-cypher-dsl-native-tests</module>
		<module>neo4j-cypher-dsl-examples</module>
		<module>neo4j-cypher-dsl-test-results</module>
	</modules>

	<scm>
		<connection>scm:git:git@github.com:neo4j/cypher-dsl.git</connection>
		<developerConnection>scm:git:git@github.com:neo4j/cypher-dsl.git</developerConnection>
		<tag>HEAD</tag>
		<url>https://github.com/neo4j/cypher-dsl</url>
	</scm>

	<properties>
		<aggregate.report.dir>neo4j-cypher-dsl-test-results/target/site/jacoco-aggregate/jacoco.xml</aggregate.report.dir>
		<apiguardian.version>1.1.2</apiguardian.version>
		<archunit.version>1.4.1</archunit.version>
		<asciidoctor-maven-plugin.version>3.2.0</asciidoctor-maven-plugin.version>
		<asciidoctorj-diagram.version>3.1.0</asciidoctorj-diagram.version>
		<asciidoctorj.version>3.0.1</asciidoctorj.version>
		<asm.version>9.9</asm.version>
		<assertj.version>3.27.6</assertj.version>
		<auto-common.version>1.2.2</auto-common.version>
		<cglib.version>3.3.0</cglib.version>
		<changelist>-SNAPSHOT</changelist>
		<checker-qual.version>3.52.1</checker-qual.version>
		<checkstyle.version>12.2.0</checkstyle.version>
		<compile-testing.version>0.23.0</compile-testing.version>
		<covered-ratio-complexity>0.75</covered-ratio-complexity>
		<covered-ratio-instructions>0.75</covered-ratio-instructions>
		<cypher-dsl.version.next/>
		<cypher-dsl.version.old>2022.7.3</cypher-dsl.version.old>
		<error_prone_annotations.version>2.23.0</error_prone_annotations.version>
		<exec-maven-plugin.version>3.6.2</exec-maven-plugin.version>
		<flatten-maven-plugin.version>1.7.3</flatten-maven-plugin.version>
		<guava.version>33.5.0-jre</guava.version>
		<jackson.version>2.20.1</jackson.version>
		<jacoco-maven-plugin.version>0.8.14</jacoco-maven-plugin.version>
		<japicmp-maven-plugin.version>0.25.0</japicmp-maven-plugin.version>
		<java-module-name/>
		<java.version>17</java.version>
		<javapoet.version>1.13.0</javapoet.version>
		<javax.annotation-api.version>1.3.2</javax.annotation-api.version>
		<jaxb.version>2.3.1</jaxb.version>
		<joda-time.version>2.14.0</joda-time.version>
		<jreleaser-maven-plugin.version>1.21.0</jreleaser-maven-plugin.version>
		<jsr305.version>3.0.2</jsr305.version>
		<junit-jupiter.version>6.0.1</junit-jupiter.version>
		<license-maven-plugin.version>5.0.0</license-maven-plugin.version>
		<maven-checkstyle-plugin.version>3.6.0</maven-checkstyle-plugin.version>
		<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
		<maven-deploy-plugin.version>3.1.4</maven-deploy-plugin.version>
		<maven-enforcer-plugin.version>3.6.2</maven-enforcer-plugin.version>
		<maven-failsafe-plugin.version>3.5.4</maven-failsafe-plugin.version>
		<maven-install-plugin.version>3.1.4</maven-install-plugin.version>
		<maven-jar-plugin.version>3.5.0</maven-jar-plugin.version>
		<maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
		<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
		<maven-scm-plugin.version>1.12.0</maven-scm-plugin.version>
		<maven-shade-plugin.version>3.6.1</maven-shade-plugin.version>
		<maven-site-plugin.version>3.21.0</maven-site-plugin.version>
		<maven-source-plugin.version>3.4.0</maven-source-plugin.version>
		<maven-surefire-plugin.version>3.5.4</maven-surefire-plugin.version>
		<maven.compiler.debug>true</maven.compiler.debug>
		<maven.compiler.parameters>true</maven.compiler.parameters>
		<maven.compiler.release>${java.version}</maven.compiler.release>
		<maven.version>3.8.4</maven.version>
		<mockito.version>5.20.0</mockito.version>
		<moditect-maven-plugin.version>1.3.0.Final</moditect-maven-plugin.version>
		<neo4j-java-driver.version>6.0.2</neo4j-java-driver.version>
		<neo4j-ogm-quarkus.version>4.2.1</neo4j-ogm-quarkus.version>
		<neo4j-ogm.version>5.0.1</neo4j-ogm.version>
		<neo4j.version>5.26.18</neo4j.version>
		<opencsv.version>5.12.0</opencsv.version>
		<project.build.docs>${project.build.directory}/docs</project.build.docs>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<quarkus.platform.version>3.30.2</quarkus.platform.version>
		<querydsl.version>5.1.0</querydsl.version>
		<revision>9999</revision>
		<sha1/>
		<slf4j.version>1.7.36</slf4j.version>
		<sonar-maven-plugin.version>5.5.0.6356</sonar-maven-plugin.version>
		<sortpom-maven-plugin.version>4.0.0</sortpom-maven-plugin.version>
		<spring-data-neo4j.version>8.0.0</spring-data-neo4j.version>
		<spring-javaformat.version>0.0.47</spring-javaformat.version>
		<testcontainers.version>2.0.2</testcontainers.version>
		<use-latest-version-for-docs>0</use-latest-version-for-docs>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.fasterxml.jackson</groupId>
				<artifactId>jackson-bom</artifactId>
				<version>${jackson.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.junit</groupId>
				<artifactId>junit-bom</artifactId>
				<version>${junit-jupiter.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.testcontainers</groupId>
				<artifactId>testcontainers-bom</artifactId>
				<version>${testcontainers.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<!-- Testing depends on this directly, which clashes with auto-value's dependencies -->
				<groupId>com.google.auto</groupId>
				<artifactId>auto-common</artifactId>
				<version>${auto-common.version}</version>
			</dependency>
			<dependency>
				<!-- Only added to avoid dependency convergence errors -->
				<groupId>com.google.code.findbugs</groupId>
				<artifactId>jsr305</artifactId>
				<version>${jsr305.version}</version>
			</dependency>
			<dependency>
				<groupId>com.querydsl</groupId>
				<artifactId>querydsl-core</artifactId>
				<version>${querydsl.version}</version>
			</dependency>
			<dependency>
				<groupId>com.squareup</groupId>
				<artifactId>javapoet</artifactId>
				<version>${javapoet.version}</version>
			</dependency>
			<dependency>
				<groupId>com.tngtech.archunit</groupId>
				<artifactId>archunit</artifactId>
				<version>${archunit.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.xml.bind</groupId>
				<artifactId>jaxb-api</artifactId>
				<version>${jaxb.version}</version>
			</dependency>
			<dependency>
				<!-- Coming in test scope via AsciiDoctor in different versions -->
				<groupId>joda-time</groupId>
				<artifactId>joda-time</artifactId>
				<version>${joda-time.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apiguardian</groupId>
				<artifactId>apiguardian-api</artifactId>
				<version>${apiguardian.version}</version>
			</dependency>
			<dependency>
				<groupId>org.asciidoctor</groupId>
				<artifactId>asciidoctorj</artifactId>
				<version>${asciidoctorj.version}</version>
				<exclusions>
					<exclusion>
						<groupId>rubygems</groupId>
						<!-- Not needed -->
						<artifactId>test-unit</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.neo4j</groupId>
				<artifactId>neo4j-cypher-javacc-parser</artifactId>
				<version>${neo4j.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.scala-lang</groupId>
						<artifactId>scala-reflect</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.neo4j</groupId>
				<artifactId>neo4j-ogm-core</artifactId>
				<version>${neo4j-ogm.version}</version>
			</dependency>
			<dependency>
				<groupId>org.neo4j</groupId>
				<artifactId>neo4j-ogm-quarkus</artifactId>
				<version>${neo4j-ogm-quarkus.version}</version>
			</dependency>
			<dependency>
				<groupId>org.neo4j.driver</groupId>
				<artifactId>neo4j-java-driver</artifactId>
				<version>${neo4j-java-driver.version}</version>
			</dependency>
			<dependency>
				<groupId>org.ow2.asm</groupId>
				<artifactId>asm</artifactId>
				<version>${asm.version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-simple</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.data</groupId>
				<artifactId>spring-data-neo4j</artifactId>
				<version>${spring-data-neo4j.version}</version>
			</dependency>
			<dependency>
				<groupId>cglib</groupId>
				<artifactId>cglib</artifactId>
				<version>${cglib.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>com.google.errorprone</groupId>
				<artifactId>error_prone_annotations</artifactId>
				<version>${error_prone_annotations.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>${guava.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>com.google.testing.compile</groupId>
				<artifactId>compile-testing</artifactId>
				<version>${compile-testing.version}</version>
				<scope>test</scope>
				<exclusions>
					<exclusion>
						<groupId>junit</groupId>
						<artifactId>junit</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.assertj</groupId>
				<artifactId>assertj-core</artifactId>
				<version>${assertj.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.checkerframework</groupId>
				<artifactId>checker-qual</artifactId>
				<version>${checker-qual.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.mockito</groupId>
				<artifactId>mockito-core</artifactId>
				<version>${mockito.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.mockito</groupId>
				<artifactId>mockito-junit-jupiter</artifactId>
				<version>${mockito.version}</version>
				<scope>test</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.sonarsource.scanner.maven</groupId>
					<artifactId>sonar-maven-plugin</artifactId>
					<version>${sonar-maven-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.moditect</groupId>
					<artifactId>moditect-maven-plugin</artifactId>
					<version>${moditect-maven-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>${jacoco-maven-plugin.version}</version>
					<configuration>
						<includes>
							<include>**/*</include>
						</includes>
					</configuration>
					<executions>
						<execution>
							<id>pre-unit-test</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
							<configuration>
								<append>true</append>
							</configuration>
						</execution>
						<execution>
							<id>pre-integration-test</id>
							<goals>
								<goal>prepare-agent-integration</goal>
							</goals>
							<configuration>
								<append>true</append>
								<destFile>${project.build.directory}/jacoco.exec</destFile>
							</configuration>
						</execution>
						<execution>
							<id>report-and-check</id>
							<goals>
								<goal>report</goal>
								<goal>check</goal>
							</goals>
							<phase>post-integration-test</phase>
							<configuration>
								<rules>
									<rule>
										<element>BUNDLE</element>
										<limits>
											<limit>
												<counter>INSTRUCTION</counter>
												<value>COVEREDRATIO</value>
												<minimum>${covered-ratio-instructions}</minimum>
											</limit>
											<limit>
												<counter>COMPLEXITY</counter>
												<value>COVEREDRATIO</value>
												<minimum>${covered-ratio-complexity}</minimum>
											</limit>
										</limits>
									</rule>
								</rules>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-shade-plugin</artifactId>
					<version>${maven-shade-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-install-plugin</artifactId>
					<version>${maven-install-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>${maven-deploy-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>${maven-compiler-plugin.version}</version>
					<configuration>
						<parameters>true</parameters>
						<forceJavacCompilerUse>true</forceJavacCompilerUse>
						<showWarnings>true</showWarnings>
						<compilerArgs>
							<arg>-Xlint:all,-options,-path,-processing,-exports</arg>
							<arg>-Werror</arg>
						</compilerArgs>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>${maven-javadoc-plugin.version}</version>
					<configuration>
						<quiet>true</quiet>
						<detectOfflineLinks>false</detectOfflineLinks>
						<detectJavaApiLink>true</detectJavaApiLink>
						<release>${java.version}</release>
						<tags>
							<tag>
								<name>neo4j.version</name>
								<placement>a</placement>
								<head>Neo4j version required</head>
							</tag>
						</tags>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jar-plugin</artifactId>
					<version>${maven-jar-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>io.spring.javaformat</groupId>
					<artifactId>spring-javaformat-maven-plugin</artifactId>
					<version>${spring-javaformat.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-checkstyle-plugin</artifactId>
					<version>${maven-checkstyle-plugin.version}</version>
					<configuration>
						<excludes>**/module-info.java</excludes>
						<includeTestSourceDirectory>true</includeTestSourceDirectory>
						<configLocation>etc/checkstyle/config.xml</configLocation>
						<suppressionsLocation>etc/checkstyle/suppressions.xml</suppressionsLocation>
						<inputEncoding>${project.build.sourceEncoding}</inputEncoding>
						<consoleOutput>true</consoleOutput>
						<failsOnError>true</failsOnError>
						<includeTestSourceDirectory>true</includeTestSourceDirectory>
					</configuration>
					<dependencies>
						<dependency>
							<groupId>com.puppycrawl.tools</groupId>
							<artifactId>checkstyle</artifactId>
							<version>${checkstyle.version}</version>
						</dependency>
						<dependency>
							<groupId>io.spring.javaformat</groupId>
							<artifactId>spring-javaformat-checkstyle</artifactId>
							<version>${spring-javaformat.version}</version>
						</dependency>
					</dependencies>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>${maven-surefire-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-failsafe-plugin</artifactId>
					<version>${maven-failsafe-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-resources-plugin</artifactId>
					<version>${maven-resources-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-site-plugin</artifactId>
					<version>${maven-site-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>com.github.ekryd.sortpom</groupId>
					<artifactId>sortpom-maven-plugin</artifactId>
					<version>${sortpom-maven-plugin.version}</version>
					<configuration>
						<encoding>${project.build.sourceEncoding}</encoding>
						<keepBlankLines>true</keepBlankLines>
						<nrOfIndentSpace>-1</nrOfIndentSpace>
						<sortProperties>true</sortProperties>
						<sortDependencies>scope,groupId,artifactId</sortDependencies>
						<sortDependencyExclusions>groupId,artifactId</sortDependencyExclusions>
						<createBackupFile>false</createBackupFile>
						<expandEmptyElements>false</expandEmptyElements>
					</configuration>
				</plugin>
				<plugin>
					<groupId>com.github.siom79.japicmp</groupId>
					<artifactId>japicmp-maven-plugin</artifactId>
					<version>${japicmp-maven-plugin.version}</version>
					<configuration>
						<oldVersion>
							<dependency>
								<groupId>${project.groupId}</groupId>
								<artifactId>${project.artifactId}</artifactId>
								<version>${cypher-dsl.version.old}</version>
								<type>jar</type>
							</dependency>
						</oldVersion>
						<newVersion>
							<file>
								<path>${project.build.directory}/${project.artifactId}-${project.version}.${project.packaging}</path>
							</file>
						</newVersion>
						<parameter>
							<ignoreNonResolvableArtifacts>true</ignoreNonResolvableArtifacts>
							<breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
							<!--
							 | See this helpful discussion: https://github.com/siom79/japicmp/issues/201
							 | The interfaces we have are generally not be implemented by our users, but are just part
							 | of the DSL contract. So it rather safe to assume compatibility.
							 | Further reading:
							 | https://docs.oracle.com/javase/specs/jls/se11/html/jls-13.html#jls-13.5.3
							 -->
							<overrideCompatibilityChangeParameters>
								<overrideCompatibilityChangeParameter>
									<compatibilityChange>METHOD_NEW_DEFAULT</compatibilityChange>
									<binaryCompatible>true</binaryCompatible>
									<sourceCompatible>true</sourceCompatible>
									<!-- To make it tick with METHOD_DEFAULT_ADDED_IN_IMPLEMENTED_INTERFACE below, we must wind this down from MAJOR to MINOR. -->
									<semanticVersionLevel>MINOR</semanticVersionLevel>
								</overrideCompatibilityChangeParameter>
								<overrideCompatibilityChangeParameter>
									<compatibilityChange>METHOD_DEFAULT_ADDED_IN_IMPLEMENTED_INTERFACE</compatibilityChange>
									<binaryCompatible>true</binaryCompatible>
									<sourceCompatible>true</sourceCompatible>
								</overrideCompatibilityChangeParameter>
							</overrideCompatibilityChangeParameters>
							<excludes>
								<!-- Internal packages, protected by Java Module system on module path. -->
								<exclude>org.neo4j.cypherdsl.core.internal</exclude>
								<!-- 2023.1.0, changed for #553. It's safely marked as internal -->
								<exclude>org.neo4j.cypherdsl.core.ast.TypedSubtree</exclude>
								<!-- Not exported either, but let's be a more lenient. -->
								<exclude>org.neo4j.cypherdsl.core.utils.Strings#isValidJavaIdentifierPartAt(int,int)</exclude>
								<exclude>org.neo4j.cypherdsl.core.utils.Strings#isIdentifier(java.lang.CharSequence)</exclude>
								<!-- Those are shaded classes from Neo4j, and we work around their changes. -->
								<exclude>org.neo4j.cypherdsl.parser.internal</exclude>
								<!-- 2023.0.4 and higher, this should have been package private to begin with -->
								<exclude>org.neo4j.cypherdsl.parser.NodeAtom</exclude>
								<!-- 2023.1.0 and higher, this is internal API -->
								<exclude>org.neo4j.cypherdsl.core.StatementContext</exclude>
								<!-- 2023.2.0 and higher, removed internal API -->
								<exclude>org.neo4j.cypherdsl.core.Unwind#getVariable()</exclude>
								<!-- 2023.2.0 and higher, made Asterisk identifiable proper -->
								<exclude>org.neo4j.cypherdsl.core.ExposesWith#with(org.neo4j.cypherdsl.core.Asterisk)</exclude>
								<!-- 2023.2.0 and higher, internal API being polished -->
								<exclude>org.neo4j.cypherdsl.core.DefaultStatementBuilder$DefaultStatementWithWithBuilder</exclude>
								<!-- 2023.5.0 and higher, move up an interface, not to be implemented, has not been removed -->
								<exclude>org.neo4j.cypherdsl.core.StatementBuilder$ExposesSetAndRemove#set(org.neo4j.cypherdsl.core.Node,java.util.Collection)</exclude>
								<exclude>org.neo4j.cypherdsl.core.StatementBuilder$ExposesSetAndRemove#set(org.neo4j.cypherdsl.core.Node,java.lang.String[])</exclude>
								<!-- 2023.9.7 and higher, changed to a broader return type, only we implement that interface -->
								<exclude>org.neo4j.cypherdsl.core.ExposesSubqueryCall#call(org.neo4j.cypherdsl.core.Statement)</exclude>
								<exclude>org.neo4j.cypherdsl.core.ExposesSubqueryCall#call(org.neo4j.cypherdsl.core.Statement,java.lang.String[])</exclude>
								<exclude>org.neo4j.cypherdsl.core.ExposesSubqueryCall#call(org.neo4j.cypherdsl.core.Statement,org.neo4j.cypherdsl.core.IdentifiableElement[])</exclude>
								<!-- 2023.9.8 and higher, internal API -->
								<exclude>org.neo4j.cypherdsl.core.StatementBuilder$OngoingUpdate</exclude>
							</excludes>
							<ignoreMissingClassesByRegularExpressions>
								<ignoreMissingClassesByRegularExpression>org.neo4j.cypherdsl.parser.internal.*</ignoreMissingClassesByRegularExpression>
							</ignoreMissingClassesByRegularExpressions>
						</parameter>
					</configuration>
					<executions>
						<!--
						Release will always set a -Drevision=XXXX and use `deploy` phase, which in turn will depend
						on verify, regardless if tests are skipped or not.
						-->
						<execution>
							<goals>
								<goal>cmp</goal>
							</goals>
							<phase>verify</phase>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>com.mycila</groupId>
					<artifactId>license-maven-plugin</artifactId>
					<version>${license-maven-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.jreleaser</groupId>
					<artifactId>jreleaser-maven-plugin</artifactId>
					<version>${jreleaser-maven-plugin.version}</version>
				</plugin>
			</plugins>
		</pluginManagement>

		<plugins>
			<plugin>
				<groupId>com.mycila</groupId>
				<artifactId>license-maven-plugin</artifactId>
				<configuration>

					<strictCheck>true</strictCheck>
					<mapping>
						<factories>SCRIPT_STYLE</factories>
					</mapping>
					<properties>
						<year>2025</year>
					</properties>
					<licenseSets>
						<licenseSet>
							<header>etc/license.tpl</header>
							<includes>
								<include>**</include>
							</includes>
							<excludes>
								<exclude>**/*.adoc</exclude>
								<exclude>**/*.csv</exclude>
								<exclude>**/*.cypher</exclude>
								<exclude>**/*.sh</exclude>
								<exclude>**/*.tpl</exclude>
								<exclude>**/*.txt</exclude>
								<exclude>**/*.yaml</exclude>
								<exclude>**/.flattened-pom.xml</exclude>
								<exclude>**/org.mockito.plugins.MockMaker</exclude>
								<exclude>bin/runtests.java</exclude>
								<exclude>**/src/test/resources/**/*_.java</exclude>
							</excludes>
						</licenseSet>
					</licenseSets>
					<dependencyEnforce>true</dependencyEnforce>
					<dependencyExceptionMessage>One or more dependencies are licensed under a non-approved license.</dependencyExceptionMessage>
					<dependencyPolicies>
						<!-- Apache 2 -->
						<dependencyPolicy>
							<type>LICENSE_URL</type>
							<rule>APPROVE</rule>
							<value>https://www.apache.org/licenses/LICENSE-2.0</value>
						</dependencyPolicy>
						<dependencyPolicy>
							<type>LICENSE_NAME</type>
							<rule>APPROVE</rule>
							<value>Apache License, Version 2</value>
						</dependencyPolicy>
						<dependencyPolicy>
							<type>LICENSE_NAME</type>
							<rule>APPROVE</rule>
							<value>Apache License, Version 2.0</value>
						</dependencyPolicy>
						<dependencyPolicy>
							<type>LICENSE_NAME</type>
							<rule>APPROVE</rule>
							<value>The Apache Software License, Version 2.0</value>
						</dependencyPolicy>
						<dependencyPolicy>
							<type>LICENSE_NAME</type>
							<rule>APPROVE</rule>
							<value>The Apache License, Version 2.0</value>
						</dependencyPolicy>
						<dependencyPolicy>
							<type>LICENSE_NAME</type>
							<rule>APPROVE</rule>
							<value>Apache 2.0</value>
						</dependencyPolicy>
						<dependencyPolicy>
							<type>LICENSE_NAME</type>
							<rule>APPROVE</rule>
							<value>Apache-2.0</value>
						</dependencyPolicy>
						<!-- MIT -->
						<dependencyPolicy>
							<type>LICENSE_NAME</type>
							<rule>APPROVE</rule>
							<value>MIT License</value>
						</dependencyPolicy>
					</dependencyPolicies>
				</configuration>
				<executions>
					<execution>
						<id>validate</id>
						<goals>
							<goal>check</goal>
						</goals>
						<phase>validate</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>exec-maven-plugin</artifactId>
				<version>${exec-maven-plugin.version}</version>
				<inherited>false</inherited>
				<executions>
					<execution>
						<id>prepare-release</id>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<executable>bin/prepare-release.sh</executable>
							<arguments>
								<argument>2025.2.2</argument>
								<argument>${cypher-dsl.version.next}</argument>
							</arguments>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>com.github.ekryd.sortpom</groupId>
				<artifactId>sortpom-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>sort</id>
						<goals>
							<goal>sort</goal>
						</goals>
						<phase>verify</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<version>${maven-enforcer-plugin.version}</version>
				<executions>
					<execution>
						<id>enforce</id>
						<goals>
							<goal>enforce</goal>
						</goals>
						<phase>validate</phase>
						<configuration>
							<rules>
								<requireJavaVersion>
									<version>${java.version}</version>
								</requireJavaVersion>
								<requireMavenVersion>
									<version>${maven.version}</version>
								</requireMavenVersion>
								<DependencyConvergence/>
							</rules>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>io.spring.javaformat</groupId>
				<artifactId>spring-javaformat-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>validate</goal>
						</goals>
						<phase>validate</phase>
						<inherited>true</inherited>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
				<executions>
					<execution>
						<id>validate</id>
						<goals>
							<goal>check</goal>
						</goals>
						<phase>validate</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>integration-test</goal>
							<goal>verify</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<addDefaultEntries>true</addDefaultEntries>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
							<addBuildEnvironmentEntries>true</addBuildEnvironmentEntries>
						</manifest>
					</archive>
				</configuration>
			</plugin>
			<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>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>flatten-maven-plugin</artifactId>
				<version>${flatten-maven-plugin.version}</version>
				<configuration>
					<updatePomFile>true</updatePomFile>
					<flattenMode>resolveCiFriendliesOnly</flattenMode>
				</configuration>
				<executions>
					<execution>
						<id>flatten</id>
						<goals>
							<goal>flatten</goal>
						</goals>
						<phase>package</phase>
					</execution>
					<execution>
						<id>flatten.clean</id>
						<goals>
							<goal>clean</goal>
						</goals>
						<phase>clean</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.asciidoctor</groupId>
				<artifactId>asciidoctor-maven-plugin</artifactId>
				<version>${asciidoctor-maven-plugin.version}</version>
				<inherited>false</inherited>
				<configuration>
					<backend>html</backend>
					<doctype>book</doctype>
					<sourceDirectory>${basedir}/docs</sourceDirectory>
					<sourceDocumentName>index.adoc</sourceDocumentName>
					<attributes>
						<icons>font</icons>
						<toc>left</toc>
						<setanchors/>
						<idprefix/>
						<idseparator/>
						<imagesdir>img</imagesdir>
						<neo4j-version>${neo4j.version}</neo4j-version>
						<source-highlighter>coderay</source-highlighter>
						<use-latest-version-for-docs>${use-latest-version-for-docs}</use-latest-version-for-docs>
					</attributes>
					<requires>
						<require>asciidoctor-diagram</require>
					</requires>
					<outputDirectory>${project.build.docs}</outputDirectory>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.asciidoctor</groupId>
						<artifactId>asciidoctorj-diagram</artifactId>
						<version>${asciidoctorj-diagram.version}</version>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<id>generate-docs</id>
						<goals>
							<goal>process-asciidoc</goal>
						</goals>
						<phase>prepare-package</phase>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>${maven-javadoc-plugin.version}</version>
				<reportSets>
					<reportSet>
						<id>default</id>
						<reports>
							<report>javadoc</report>
						</reports>
					</reportSet>
					<reportSet>
						<id>aggregate</id>
						<reports>
							<report>aggregate</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
				<reportSets>
					<reportSet>
						<reports>
							<report>checkstyle</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>
		</plugins>
	</reporting>

	<profiles>
		<profile>
			<id>fast</id>
			<activation>
				<property>
					<name>fast</name>
				</property>
			</activation>
			<properties>
				<asciidoctor.skip>true</asciidoctor.skip>
				<checkstyle.skip>true</checkstyle.skip>
				<jacoco.skip>true</jacoco.skip>
				<maven.javadoc.skip>true</maven.javadoc.skip>
				<skipITs>true</skipITs>
				<skipNativeBuild>true</skipNativeBuild>
				<skipTests>true</skipTests>
				<spring-javaformat.skip>true</spring-javaformat.skip>
			</properties>
		</profile>

		<profile>
			<id>sonar</id>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
			<properties>
				<sonar.host.url>https://sonarcloud.io</sonar.host.url>
				<sonar.moduleKey>${project.groupId}:${project.artifactId}</sonar.moduleKey>
				<sonar.organization>michael-simons-github</sonar.organization>
				<sonar.projectKey>org.neo4j:neo4j-cypher-dsl-parent</sonar.projectKey>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>org.sonarsource.scanner.maven</groupId>
						<artifactId>sonar-maven-plugin</artifactId>
						<executions>
							<execution>
								<id>sonar</id>
								<goals>
									<goal>sonar</goal>
								</goals>
								<phase>verify</phase>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>jreleaser</id>
			<activation>
				<property>
					<name>jreleaser</name>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.jreleaser</groupId>
						<artifactId>jreleaser-maven-plugin</artifactId>
						<configuration>
							<jreleaser>
								<project>
									<name>neo4j-cypher-dsl</name>
								</project>
								<release>
									<github>
										<owner>neo4j</owner>
										<tagName>{{projectVersion}}</tagName>
										<releaseName>{{projectVersion}}</releaseName>
									</github>
								</release>
								<announce>
									<webhooks>
										<slack>
											<active>ALWAYS</active>
											<structuredMessage>true</structuredMessage>
										</slack>
									</webhooks>
								</announce>
							</jreleaser>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
