questdb-client
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>org.questdb</groupId>
<artifactId>questdb-client</artifactId>
<version>1.3.8</version>
</dependency><!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ ___ _ ____ ____
~ / _ \ _ _ ___ ___| |_| _ \| __ )
~ | | | | | | |/ _ \/ __| __| | | | _ \
~ | |_| | |_| | __/\__ \ |_| |_| | |_) |
~ \__\_\\__,_|\___||___/\__|____/|____/
~
~ Copyright (c) 2014-2019 Appsicle
~ Copyright (c) 2019-2026 QuestDB
~
~ 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>
<name>QuestDB</name>
<description>QuestDB is high performance SQL time series database</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.javadoc.skip>false</maven.javadoc.skip>
<outputPath>target</outputPath>
<runtime.assembly>none</runtime.assembly>
<javac.target>11</javac.target>
<argLine>-ea -Dfile.encoding=UTF-8 -XX:+UseParallelGC -Dslf4j.provider=ch.qos.logback.classic.spi.LogbackServiceProvider</argLine>
<test.exclude>None</test.exclude>
<test.include>%regex[.*[^o].class]</test.include><!-- exclude module-info.class-->
<jmh.version>1.37</jmh.version>
<!-- JDK-version-specific source root; overridden in the java8 profile -->
<compat.src.dir>src/main/java11</compat.src.dir>
<!-- logback 1.5.x needs Java 11; the java8 profile drops to the 1.3.x line -->
<logback.version>1.5.25</logback.version>
</properties>
<version>1.3.8</version>
<groupId>org.questdb</groupId>
<artifactId>questdb-client</artifactId>
<packaging>jar</packaging>
<url>https://questdb.io/</url>
<licenses>
<license>
<name>Apache 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<name>QuestDB Team</name>
<email>hello@questdb.io</email>
</developer>
</developers>
<scm>
<url>https://github.com/questdb/java-questdb-client</url>
<connection>scm:git:https://github.com/questdb/java-questdb-client.git</connection>
<developerConnection>scm:git:https://github.com/questdb/java-questdb-client.git</developerConnection>
<tag>HEAD</tag>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<compilerArgs>
<arg>${compilerArg1}</arg>
<arg>${compilerArg2}</arg>
<arg>-J-XX:-TieredCompilation</arg>
<arg>-J-XX:TieredStopAtLevel=1</arg>
</compilerArgs>
<fork>true</fork>
<source>${javac.compile.source}</source>
<target>${javac.compile.target}</target>
<testExcludes>
<exclude>${excludePattern1}</exclude>
</testExcludes>
<excludes>
<exclude>${excludeTestPattern1}</exclude>
</excludes>
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifestEntries>
<QuestDB-Client-Build-Commit-Hash>${buildNumber}</QuestDB-Client-Build-Commit-Hash>
<QuestDB-Client-Version>${project.version}</QuestDB-Client-Version>
<!-- JDK 8 release builds cannot compile module-info.java, so the
module name must be pinned here or it degrades to the
filename-derived "questdb.client" (the 1.3.5-1.3.7 regression).
On JDK 11+ builds the real module-info.class takes precedence. -->
<Automatic-Module-Name>io.questdb.client</Automatic-Module-Name>
<Multi-Release>true</Multi-Release>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>3.0.0</version>
</requireMavenVersion>
<requireJavaVersion>
<version>${java.enforce.version}</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!-- disable stock deploy plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.3</version>
<configuration>
<forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory" />
<useModulePath>true</useModulePath>
<includes>
<include>${test.include}</include>
</includes>
<excludes>
<exclude>${test.exclude}</exclude>
<!-- *IT classes need the packaged jar; failsafe runs them after `package` -->
<exclude>**/*IT.class</exclude>
</excludes>
</configuration>
</plugin>
<!-- Packaging integration tests (JarPackagingIT): the sun.misc.FDBigInteger /
module-name regressions in 1.3.5-1.3.7 were invisible to unit tests because
they run against target/classes, where Multi-Release selection never
happens. These ITs inspect and execute the packaged jar itself. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.5.3</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<useModulePath>false</useModulePath>
<systemPropertyVariables>
<questdb.client.jar>${project.build.directory}/${project.build.finalName}.jar</questdb.client.jar>
<questdb.client.test.classes>${project.build.testOutputDirectory}</questdb.client.test.classes>
<questdb.client.java11.src>${project.basedir}/src/main/java11</questdb.client.java11.src>
</systemPropertyVariables>
</configuration>
</plugin>
<!-- Adds the JDK-version-specific source root (src/main/java11 or src/main/java8)
so the FDBigInteger bridge / module-access shim compiles on each JDK. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<id>add-compat-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${compat.src.dir}</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>javadoc</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<doclint>none</doclint>
<source>${javac.compile.source}</source>
<detectJavaApiLink>false</detectJavaApiLink>
<additionalJOptions>
<additionalJOption>${javadocJOption1}</additionalJOption>
<additionalJOption>${javadocJOption2}</additionalJOption>
</additionalJOptions>
<sourceFileExcludes>
<sourceFileExclude>${excludePattern1}</sourceFileExclude>
<sourceFileExclude>module-info.java</sourceFileExclude>
</sourceFileExcludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>platform-windows-x86-64</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
</profile>
<profile>
<id>platform-linux-x86-64</id>
<activation>
<os>
<family>unix</family>
<arch>amd64</arch>
</os>
</activation>
<properties>
<platform.dir.name>linux-x86-64</platform.dir.name>
</properties>
</profile>
<profile>
<id>platform-freebsd-x86-64</id>
<activation>
<os>
<family>FreeBSD</family>
<arch>amd64</arch>
</os>
</activation>
</profile>
<profile>
<id>platform-linux-aarch64</id>
<activation>
<os>
<family>unix</family>
<arch>aarch64</arch>
</os>
</activation>
<properties>
<platform.dir.name>linux-aarch64</platform.dir.name>
</properties>
</profile>
<profile>
<id>platform-osx-x86-64</id>
<activation>
<os>
<family>Mac</family>
<arch>amd64</arch>
</os>
</activation>
<properties>
<platform.dir.name>darwin-x86-64</platform.dir.name>
</properties>
</profile>
<profile>
<id>platform-osx-aarch64</id>
<activation>
<os>
<family>Mac</family>
<arch>aarch64</arch>
</os>
</activation>
<properties>
<platform.dir.name>darwin-aarch64</platform.dir.name>
</properties>
</profile>
<profile>
<id>include-native-artifacts</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>copy-release-native-artifacts</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}/native-libs</directory>
<filtering>false</filtering>
<includes>
<include>io/questdb/client/bin/**</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>release-artifacts</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<doclint>none</doclint>
<source>${javac.compile.source}</source>
<detectJavaApiLink>false</detectJavaApiLink>
<additionalJOptions>
<additionalJOption>${javadocJOption1}</additionalJOption>
<additionalJOption>${javadocJOption2}</additionalJOption>
</additionalJOptions>
<sourceFileExcludes>
<sourceFileExclude>${excludePattern1}</sourceFileExclude>
<sourceFileExclude>module-info.java</sourceFileExclude>
</sourceFileExcludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.7</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>gpg</executable>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>maven-central-publish</id>
<build>
<plugins>
<!-- The shipped artifact must be the JDK 8 build: a JDK 11+ build puts the
jdk.internal.math FdBig bridge and module-info.class into the jar ROOT,
which breaks Java 8 consumers. Refuse to publish from any other JDK. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce-publish-from-jdk8</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[1.8,1.9)</version>
<message>questdb-client must be published from JDK 8; a JDK 11+ build produces a jar that breaks Java 8 consumers.</message>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.9.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<!-- Upload only to a droppable VALIDATED deployment; the release
workflow flips it to PUBLISHED via the Portal API after the
git tag is pushed, so nothing immutable is created until the
release is proven good. -->
<autoPublish>false</autoPublish>
<waitUntil>validated</waitUntil>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>jacoco</id>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>java11+</id>
<properties>
<jdk.version>11</jdk.version>
<java.enforce.version>11</java.enforce.version>
<questdb.artifactid>questdb</questdb.artifactid>
<compilerArg1>--add-exports</compilerArg1>
<compilerArg2>java.base/jdk.internal.math=io.questdb.client</compilerArg2>
<!-- javadoc needs the same module export to resolve jdk.internal.math.FDBigInteger
referenced by the src/main/java11 FdBig bridge. Kept separate from the javac
compilerArgs because javadoc and javac accept different option sets. -->
<javadocJOption1>--add-exports</javadocJOption1>
<javadocJOption2>java.base/jdk.internal.math=io.questdb.client</javadocJOption2>
<excludePattern1>nothing-to-exclude-dummy-value-include-all-java11plus</excludePattern1>
<excludeTestPattern1>nothing-to-exclude-dummy-value-include-all-java11plus</excludeTestPattern1>
<javac.compile.source>${javac.target}</javac.compile.source>
<javac.compile.target>${javac.target}</javac.compile.target>
</properties>
<activation>
<jdk>[11,)</jdk>
</activation>
<dependencies>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>17.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.17</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>java8</id>
<properties>
<jdk.version>8</jdk.version>
<java.enforce.version>[1.8,11)</java.enforce.version>
<questdb.artifactid>questdb</questdb.artifactid>
<!-- JDK8 javac rejects the add-exports flag; use a harmless no-op flag instead -->
<compilerArg1>-Xlint:none</compilerArg1>
<compilerArg2>-Xlint:none</compilerArg2>
<!-- JDK8 javadoc rejects javac's -Xlint and needs no module export (the java8 FdBig
bridge uses the open sun.misc.FDBigInteger). Pass a harmless no-op instead. -->
<javadocJOption1>-quiet</javadocJOption1>
<javadocJOption2>-quiet</javadocJOption2>
<!-- module-info.java cannot be compiled on JDK8; exclude it from both the main
(<excludes> = excludeTestPattern1) and test (<testExcludes> = excludePattern1)
source sets. -->
<excludePattern1>**/module-info.java</excludePattern1>
<excludeTestPattern1>**/module-info.java</excludeTestPattern1>
<compat.src.dir>src/main/java8</compat.src.dir>
<javac.compile.source>1.8</javac.compile.source>
<javac.compile.target>1.8</javac.compile.target>
<!-- logback 1.5.x requires Java 11; the 1.3.x line is the Java 8 compatible branch -->
<logback.version>1.3.15</logback.version>
<!-- JDK used to compile src/main/java11 into META-INF/versions/11 (see the
antrun execution below). Override with -Djava11.home=/path/to/jdk11. -->
<java11.home>${env.JAVA11_HOME}</java11.home>
</properties>
<activation>
<jdk>1.8</jdk>
</activation>
<build>
<plugins>
<!-- JDK 8 javac can only compile the src/main/java8 FdBig bridge
(sun.misc.FDBigInteger), which does not exist on Java 9+. Package the
src/main/java11 bridge (jdk.internal.math.FDBigInteger) into
META-INF/versions/11 so the Multi-Release jar works on every JDK.
Shipping a JDK 8-built jar without this breaks double formatting on
Java 9+ with NoClassDefFoundError (the 1.3.5-1.3.7 regression), hence
a missing JDK 11 fails the build instead of skipping. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>compile-mrjar-versions-11</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<fail message="Packaging on JDK 8 needs a JDK 11+ to compile src/main/java11 into META-INF/versions/11. Set JAVA11_HOME (or -Djava11.home=...) to a JDK 11+ home.">
<condition>
<not>
<or>
<available file="${java11.home}/bin/javac" />
<available file="${java11.home}/bin/javac.exe" />
</or>
</not>
</condition>
</fail>
<mkdir dir="${project.build.outputDirectory}/META-INF/versions/11" />
<!-- whole source root, not an explicit file list: a file
added to src/main/java11 must ship in versions/11 or
the jar is broken on Java 9+ again (JarPackagingIT
cross-checks the packaged jar against the source root) -->
<javac srcdir="${project.basedir}/src/main/java11" destdir="${project.build.outputDirectory}/META-INF/versions/11" classpath="${project.build.outputDirectory}" source="11" target="11" encoding="UTF-8" debug="true" includeantruntime="false" fork="true" executable="${java11.home}/bin/javac" compiler="extJavac">
<compilerarg value="--add-exports" />
<compilerarg value="java.base/jdk.internal.math=ALL-UNNAMED" />
</javac>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>17.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.17</version>
</dependency>
</dependencies>
</profile>
</profiles>
<dependencies>
<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>