cqengine
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.msaifasif</groupId>
<artifactId>cqengine</artifactId>
<version>1.0.0</version>
</dependency><!--
Copyright 2025 Saif Asif
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
http://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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.msaifasif</groupId>
<artifactId>cqengine</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>CQEngine Next - Maintained Fork</name>
<description>CQEngine Next - A maintained fork of the original CQEngine library by Niall Gallagher. Collection Query Engine: NoSQL indexing and query engine for Java collections with ultra-low latency. Updated for Java 21 with modern dependencies.</description>
<url>https://github.com/MSaifAsif/cqengine-next</url>
<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>
<scm>
<url>https://github.com/MSaifAsif/cqengine-next.git</url>
<connection>scm:git:https://github.com/MSaifAsif/cqengine-next.git</connection>
<developerConnection>scm:git:git@github.com:MSaifAsif/cqengine-next.git</developerConnection>
<tag>HEAD</tag>
</scm>
<developers>
<developer>
<id>msaifasif</id>
<name>Saif Asif</name>
<email>saif.asif@example.com</email>
<url>https://github.com/MSaifAsif</url>
<roles>
<role>maintainer</role>
</roles>
</developer>
<developer>
<id>npgall</id>
<name>Niall Gallagher</name>
<email>niall@npgall.com</email>
<url>http://www.npgall.com</url>
<roles>
<role>original author</role>
</roles>
</developer>
</developers>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>21</source>
<target>21</target>
<release>21</release>
</configuration>
</plugin>
<plugin>
<!-- Add OSGi entries to jar manifest -->
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
<version>6.4.0</version>
<configuration>
<bnd><![CDATA[-exportcontents:com.googlecode.cqengine.*]]></bnd>
</configuration>
<executions>
<execution>
<goals><goal>bnd-process</goal></goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<!-- This is required by bnd-maven-plugin -->
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
<!-- Add Maven descriptors (pom.xml, pom.properties) to META-INF/maven/{groupId}/{artifactId}/ -->
<addMavenDescriptor>true</addMavenDescriptor>
</archive>
</configuration>
</plugin>
<plugin>
<!-- Deploy a "-sources.jar" along with build -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!-- Deploy a "-javadoc.jar" along with build -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<!-- Include generated sources from ANTLR -->
<sourcepath>${project.build.sourceDirectory};${project.build.directory}/generated-sources/antlr4</sourcepath>
<doclint>none</doclint>
<quiet>true</quiet>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>verify</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--
Maven Assembly Plugin - Alternative to shade plugin
Creates a fat jar containing all dependencies without the complexity of relocation.
This avoids the infinite loop issue experienced with maven-shade-plugin on Java 21.
The jar-with-dependencies assembly will:
- Include all runtime dependencies
- Exclude signature files automatically via MetaInf-services handler
- Create a single executable jar
Output: cqengine-1.0.0-SNAPSHOT-jar-with-dependencies.jar
Note: Unlike shade plugin, this does NOT relocate packages, so dependencies
remain in their original packages. This is acceptable for most use cases and
actually preferred for dependency transparency.
-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifestEntries>
<Multi-Release>true</Multi-Release>
</manifestEntries>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.11</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals><goal>prepare-agent</goal></goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals><goal>report</goal></goals>
</execution>
<execution>
<id>default-check</id>
<goals><goal>check</goal></goals>
</execution>
</executions>
<configuration>
<excludes>
<!-- Exclude classes generated by Antlr... -->
<exclude>com/googlecode/cqengine/query/parser/*/grammar/*</exclude>
<!-- Exclude third-party classes... -->
<exclude>com/googlecode/cqengine/query/parser/cqn/support/ApacheSolrDataMathParser.*</exclude>
</excludes>
<rules />
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<argLine>
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.10.1</version>
<executions>
<execution>
<id>antlr</id>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.googlecode.concurrent-trees</groupId>
<artifactId>concurrent-trees</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.30.2-GA</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.45.0.0</version>
</dependency>
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>5.0.0-RC1</version>
</dependency>
<dependency>
<groupId>de.javakaffee</groupId>
<artifactId>kryo-serializers</artifactId>
<version>0.45</version>
<exclusions>
<exclusion>
<groupId>com.esotericsoftware.kryo</groupId>
<artifactId>kryo</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>4.10.1</version>
</dependency>
<dependency>
<groupId>net.jodah</groupId>
<artifactId>typetools</artifactId>
<version>0.6.1</version>
</dependency>
<!-- Test-scope dependencies... -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.27.0</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>hamcrest-core</artifactId>
<groupId>org.hamcrest</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.tngtech.java</groupId>
<artifactId>junit-dataprovider</artifactId>
<version>1.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-testlib</artifactId>
<version>27.1-jre</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>nl.jqno.equalsverifier</groupId>
<artifactId>equalsverifier</artifactId>
<version>3.16.1</version>
<scope>test</scope>
</dependency>
<!-- ByteBuddy with Java 21 support - overrides version in EqualsVerifier -->
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.14.11</version>
<scope>test</scope>
</dependency>
<!-- Testcontainers for Docker-based integration tests -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>2.0.3</version>
<scope>test</scope>
</dependency>
<!-- SLF4J Simple implementation for Testcontainers logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.36</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<!-- This profile should be enabled when deploying a release to Maven central, to:
- validate that open-source license headers are present on all files, and
- GPG-signs the jars
-->
<id>release-sign-artifacts</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>performRelease</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<!--
Plugin to PGP-sign all artifacts automatically when running mvn deploy,
as required for deployment to the Sonatype/Maven Central repo.
This requires GnuPG (aka GPG) to be installed and configured on the machine on which this is run,
and for the public key to be uploaded to key servers (e.g. pool.sks-keyservers.net).
See: https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<!--suppress MavenModelInspection -->
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--
Plugin to check that all source files have the appropriate open source license header.
This will fail the build if any source files don't have the open source license header.
To actually apply the header to new source files, run: mvn license:format
-->
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>4.6</version>
<configuration>
<properties>
<owner>Saif Asif</owner>
<email>saifasifmirza@gmail.com</email>
<year>2025</year>
</properties>
<licenseSets>
<licenseSet>
<header>src/etc/header.txt</header>
<excludes>
<exclude>src/test/resources/**</exclude>
<exclude>src/main/antlr4/imports/**</exclude>
<exclude>**/*.md</exclude>
<exclude>**/NOTICE</exclude>
<exclude>**/LICENSE</exclude>
</excludes>
</licenseSet>
</licenseSets>
<mapping>
<g4>JAVADOC_STYLE</g4>
</mapping>
<strictCheck>true</strictCheck>
<!--
skipExistingHeaders=true means the plugin will only add headers to files
that don't already have one, leaving original author headers intact.
New files created will get Saif Asif as the copyright holder.
-->
<skipExistingHeaders>true</skipExistingHeaders>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--
Nexus Staging Maven Plugin for Maven Central deployment.
This plugin simplifies the process of deploying to Maven Central via OSSRH.
Features:
- Automatic staging repository creation and management
- Automated release after successful deployment
- Better error handling and logging
Usage: mvn clean deploy -P release-sign-artifacts
-->
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.7.0</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>perform</goal>
</goals>
<configuration>
<pomFileName>code/pom.xml</pomFileName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- Prevent JavaDoc warnings from failing the build under Java 8+... -->
<id>doclint-java8-disable</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<doclint>none</doclint>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>