kinetica-jdbc
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.kinetica</groupId>
<artifactId>kinetica-jdbc</artifactId>
<version>7.2.3.25</version>
</dependency><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>com.kinetica</groupId>
<artifactId>kinetica-jdbc</artifactId>
<version>7.2.3.25</version>
<packaging>jar</packaging>
<properties>
<!-- Build System Replaceable -->
<kinetica.dep-jar-suffix>jar-with-dependencies</kinetica.dep-jar-suffix>
<kinetica.sql>kisql</kinetica.sql>
<!-- Dependency Versions -->
<gpudb-api.version>7.2.3.24</gpudb-api.version>
<jsap.version>2.1</jsap.version>
<commons-configuration.version>1.9</commons-configuration.version>
<!-- Maven Plug-In Versions -->
<maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
<maven-jar-plugin.version>2.6</maven-jar-plugin.version>
<maven-shade-plugin.version>3.5.1</maven-shade-plugin.version>
<launch4j-maven-plugin.version>2.1.2</launch4j-maven-plugin.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<skip.parity.check>false</skip.parity.check> <!-- skip the pom.xml/build.gradle parity check -->
<launch4jPhase>none</launch4jPhase> <!-- skips launch4j building MSW exe on non-x86 -->
<target.build.dir>target</target.build.dir> <!-- override on cmd-line -->
</properties>
<name>kinetica-jdbc-driver</name>
<description>JDBC driver for connecting to and managing a Kinetica database</description>
<url>https://github.com/kineticadb/kinetica-connector-jdbc</url>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/license/mit</url>
</license>
</licenses>
<developers>
<developer>
<name>Andy Jacobs</name>
<email>ajacobs@kinetica.com</email>
<organization>Kinetica DB Inc.</organization>
<organizationUrl>https://www.kinetica.com/</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/kineticadb/kinetica-client-jdbc.git</connection>
<developerConnection>scm:git:https://github.com/kineticadb/kinetica-client-jdbc.git</developerConnection>
<url>https://github.com/kineticadb/kinetica-client-jdbc</url>
</scm>
<profiles>
<profile>
<id>ConfigureTargetBuildDir</id>
<activation>
<property>
<name>target.build.dir</name>
</property>
</activation>
<build>
<directory>${target.build.dir}</directory>
</build>
</profile>
<profile>
<id>profile-x86</id> <!-- $ mvn help:active-profiles shows current profile -->
<activation>
<os>
<arch>amd64</arch> <!-- $ mvn enforcer:display-info shows arch; 'amd64' not 'x86_84' or 'x64' -->
</os>
</activation>
<properties>
<launch4jPhase>package</launch4jPhase> <!-- build it -->
</properties>
</profile>
<profile>
<id>compile-java9andup-bytecode-compatibility-java8</id>
<activation>
<jdk>[9,)</jdk>
</activation>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/messages.properties</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>logback.fullshaded.xml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/kinetica-jdbc-build.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
</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-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
<addExtensions>false</addExtensions>
</manifest>
</archive>
<forceCreation>true</forceCreation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
<configuration>
<descriptorRefs>
<descriptorRef>${kinetica.dep-jar-suffix}</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.kinetica.kisql</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${maven-shade-plugin.version}</version>
<executions>
<execution>
<id>sources</id>
<phase>deploy</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<includes>
<include>sources.txt</include>
</includes>
</filter>
</filters>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>sources</shadedClassifierName>
</configuration>
</execution>
<execution>
<id>javadoc</id>
<phase>deploy</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<includes>
<include>javadoc.txt</include>
</includes>
</filter>
</filters>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>javadoc</shadedClassifierName>
</configuration>
</execution>
<execution>
<id>shaded</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>logback.fullshaded.xml</resource>
</transformer>
<!-- JLine's provider registry is NOT a standard META-INF/services file, so
ServicesResourceTransformer does not rewrite it. TerminalProvider.load()
reads META-INF/jline/providers/{name} and loadClass()es its contents
verbatim; left alone it names org.jline.* classes that relocation
renamed, and KiSQL degrades to a dumb terminal. Drop JLine's copies,
inject ours naming the relocated classes. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
<file>${basedir}/src/main/shade/jline-provider-exec</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
<file>${basedir}/src/main/shade/jline-provider-dumb</file>
</transformer>
<!-- Relocates META-INF/services entry names AND their contents. Shade
relocates classes by default but leaves service files naming the
pre-relocation packages, so ServiceLoader silently finds nothing.
Must stay AFTER any DontIncludeResourceTransformer above, which
claims (and drops) the entries this build deliberately omits. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>module-info.class</exclude> <!-- Silence warning from avro: "Discovered module-info.class. Shading will break its strong encapsulation" -->
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>sources.txt</exclude>
<exclude>javadoc.txt</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>com.fasterxml</pattern>
<shadedPattern>com.gpudb.fasterxml</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache</pattern>
<shadedPattern>com.gpudb.apache</shadedPattern>
</relocation>
<relocation>
<pattern>org.jline</pattern>
<shadedPattern>com.gpudb.jline</shadedPattern>
</relocation>
<relocation>
<pattern>org.json</pattern>
<shadedPattern>com.gpudb.json</shadedPattern>
</relocation>
</relocations>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>shaded</shadedClassifierName>
</configuration>
</execution>
<execution>
<!--
To use the fullshaded JAR as a dependency, exclude all transitive dependencies:
<dependency>
<groupId>com.kinetica</groupId>
<artifactId>kinetica-jdbc</artifactId>
<version>[7.1.8.0,7.2.0.0-SNAPSHOT)</version>
<classifier>fullshaded</classifier>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
-->
<id>fullshaded</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<artifactSet>
<excludes>
<exclude>org.xerial.snappy:snappy-java</exclude>
</excludes>
</artifactSet>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>logback.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>logback.xml</resource>
<file>${basedir}/src/main/resources/logback.fullshaded.xml</file>
</transformer>
<!-- Relocates META-INF/services entry names AND their contents. Required
because SLF4J 2.x binds via ServiceLoader
(META-INF/services/org.slf4j.spi.SLF4JServiceProvider) rather than
the 1.x StaticLoggerBinder class; without this the relocated SLF4J
finds no provider and every log call becomes a no-op. Deliberately
NOT applied to fullshaded-noauto, which excludes that service file
on purpose to stay out of the host application's logging. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<!-- JLine's provider registry is NOT a standard META-INF/services file, so
ServicesResourceTransformer does not rewrite it. TerminalProvider.load()
reads META-INF/jline/providers/{name} and loadClass()es its contents
verbatim; left alone it names org.jline.* classes that relocation
renamed, and KiSQL degrades to a dumb terminal. Drop JLine's copies,
inject ours naming the relocated classes. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
<file>${basedir}/src/main/shade/jline-provider-exec</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
<file>${basedir}/src/main/shade/jline-provider-dumb</file>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>sources.txt</exclude>
<exclude>javadoc.txt</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>ch.qos.logback</pattern>
<shadedPattern>com.gpudb.logback</shadedPattern>
</relocation>
<relocation>
<pattern>com.fasterxml</pattern>
<shadedPattern>com.gpudb.fasterxml</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache</pattern>
<shadedPattern>com.gpudb.apache</shadedPattern>
</relocation>
<relocation>
<pattern>org.jline</pattern>
<shadedPattern>com.gpudb.jline</shadedPattern>
</relocation>
<relocation>
<pattern>org.json</pattern>
<shadedPattern>com.gpudb.json</shadedPattern>
</relocation>
<relocation>
<pattern>org.slf4j</pattern>
<shadedPattern>com.gpudb.slf4j</shadedPattern>
</relocation>
</relocations>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>fullshaded</shadedClassifierName>
</configuration>
</execution>
<execution>
<!--
Use this JAR for Java 21+ environments with SSL-enabled Kafka/S3
to avoid JDK-8329013 class initialization race condition.
Load driver manually with: Class.forName("com.kinetica.jdbc.Driver");
-->
<id>shaded-noauto</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>logback.fullshaded.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/services/java.sql.Driver</resource>
</transformer>
<!-- JLine's provider registry is NOT a standard META-INF/services file, so
ServicesResourceTransformer does not rewrite it. TerminalProvider.load()
reads META-INF/jline/providers/{name} and loadClass()es its contents
verbatim; left alone it names org.jline.* classes that relocation
renamed, and KiSQL degrades to a dumb terminal. Drop JLine's copies,
inject ours naming the relocated classes. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
<file>${basedir}/src/main/shade/jline-provider-exec</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
<file>${basedir}/src/main/shade/jline-provider-dumb</file>
</transformer>
<!-- Relocates META-INF/services entry names AND their contents. Shade
relocates classes by default but leaves service files naming the
pre-relocation packages, so ServiceLoader silently finds nothing.
Must stay AFTER any DontIncludeResourceTransformer above, which
claims (and drops) the entries this build deliberately omits. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>module-info.class</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/services/java.sql.Driver</exclude>
<exclude>sources.txt</exclude>
<exclude>javadoc.txt</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>com.fasterxml</pattern>
<shadedPattern>com.gpudb.fasterxml</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache</pattern>
<shadedPattern>com.gpudb.apache</shadedPattern>
</relocation>
<relocation>
<pattern>org.jline</pattern>
<shadedPattern>com.gpudb.jline</shadedPattern>
</relocation>
<relocation>
<pattern>org.json</pattern>
<shadedPattern>com.gpudb.json</shadedPattern>
</relocation>
</relocations>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>shaded-noauto</shadedClassifierName>
</configuration>
</execution>
<execution>
<!--
Use this JAR for Java 21+ environments with SSL-enabled Kafka/S3
to avoid JDK-8329013 class initialization race condition.
Load driver manually with: Class.forName("com.kinetica.jdbc.Driver");
-->
<id>shaded-nologging-noauto</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>logback.fullshaded.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/services/java.sql.Driver</resource>
</transformer>
<!-- JLine's provider registry is NOT a standard META-INF/services file, so
ServicesResourceTransformer does not rewrite it. TerminalProvider.load()
reads META-INF/jline/providers/{name} and loadClass()es its contents
verbatim; left alone it names org.jline.* classes that relocation
renamed, and KiSQL degrades to a dumb terminal. Drop JLine's copies,
inject ours naming the relocated classes. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
<file>${basedir}/src/main/shade/jline-provider-exec</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
<file>${basedir}/src/main/shade/jline-provider-dumb</file>
</transformer>
<!-- Relocates META-INF/services entry names AND their contents. Shade
relocates classes by default but leaves service files naming the
pre-relocation packages, so ServiceLoader silently finds nothing.
Must stay AFTER any DontIncludeResourceTransformer above, which
claims (and drops) the entries this build deliberately omits. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>module-info.class</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/services/java.sql.Driver</exclude>
<!-- No logging backend: the host application supplies one
(log4j2, jul, ...) and binds it to the unrelocated SLF4J
API. Logback's classes, its config and its SLF4J
service entry all have to go, including the copies
inside gpudb-api-shaded. -->
<exclude>ch/qos/logback/**</exclude>
<exclude>logback.xml</exclude>
<exclude>logback.fullshaded.xml</exclude>
<exclude>META-INF/services/org.slf4j.spi.SLF4JServiceProvider</exclude>
<exclude>META-INF/services/javax.servlet.ServletContainerInitializer</exclude>
<exclude>sources.txt</exclude>
<exclude>javadoc.txt</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>com.fasterxml</pattern>
<shadedPattern>com.gpudb.fasterxml</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache</pattern>
<shadedPattern>com.gpudb.apache</shadedPattern>
</relocation>
<relocation>
<pattern>org.jline</pattern>
<shadedPattern>com.gpudb.jline</shadedPattern>
</relocation>
<relocation>
<pattern>org.json</pattern>
<shadedPattern>com.gpudb.json</shadedPattern>
</relocation>
</relocations>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>shaded-nologging-noauto</shadedClassifierName>
</configuration>
</execution>
<execution>
<!--
Use this JAR for Java 21+ environments with SSL-enabled Kafka/S3
to avoid JDK-8329013 class initialization race condition.
Load driver manually with: Class.forName("com.kinetica.jdbc.Driver");
This variant also relocates SLF4J/Logback to prevent conflicts with
application logging frameworks (addresses customer ticket #17011).
-->
<id>fullshaded-noauto</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<artifactSet>
<excludes>
<exclude>org.xerial.snappy:snappy-java</exclude>
</excludes>
</artifactSet>
<transformers>
<!-- Exclude the default logback.xml, use the fullshaded version instead -->
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>logback.xml</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>logback.xml</resource>
<file>logback.fullshaded.xml</file>
</transformer>
<!-- Exclude JDBC ServiceLoader auto-registration -->
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/services/java.sql.Driver</resource>
</transformer>
<!-- Exclude SLF4J ServiceLoader to prevent hijacking app's logging -->
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/services/org.slf4j.spi.SLF4JServiceProvider</resource>
</transformer>
<!-- JLine's provider registry is NOT a standard META-INF/services file, so
ServicesResourceTransformer does not rewrite it. TerminalProvider.load()
reads META-INF/jline/providers/{name} and loadClass()es its contents
verbatim; left alone it names org.jline.* classes that relocation
renamed, and KiSQL degrades to a dumb terminal. Drop JLine's copies,
inject ours naming the relocated classes. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/exec</resource>
<file>${basedir}/src/main/shade/jline-provider-exec</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/jline/providers/dumb</resource>
<file>${basedir}/src/main/shade/jline-provider-dumb</file>
</transformer>
<!-- Relocates META-INF/services entry names AND their contents. Shade
relocates classes by default but leaves service files naming the
pre-relocation packages, so ServiceLoader silently finds nothing.
Must stay AFTER any DontIncludeResourceTransformer above, which
claims (and drops) the entries this build deliberately omits. -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/services/java.sql.Driver</exclude>
<exclude>META-INF/services/org.slf4j.spi.SLF4JServiceProvider</exclude>
<exclude>sources.txt</exclude>
<exclude>javadoc.txt</exclude>
</excludes>
</filter>
</filters>
<relocations>
<!-- Relocate logging frameworks to isolated packages -->
<relocation>
<pattern>ch.qos.logback</pattern>
<shadedPattern>com.gpudb.logback</shadedPattern>
</relocation>
<relocation>
<pattern>org.slf4j</pattern>
<shadedPattern>com.gpudb.slf4j</shadedPattern>
</relocation>
<!-- Standard relocations -->
<relocation>
<pattern>com.fasterxml</pattern>
<shadedPattern>com.gpudb.fasterxml</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache</pattern>
<shadedPattern>com.gpudb.apache</shadedPattern>
</relocation>
<relocation>
<pattern>org.jline</pattern>
<shadedPattern>com.gpudb.jline</shadedPattern>
</relocation>
<relocation>
<pattern>org.json</pattern>
<shadedPattern>com.gpudb.json</shadedPattern>
</relocation>
</relocations>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>fullshaded-noauto</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.code54.mojo</groupId>
<artifactId>buildversion-plugin</artifactId>
<version>1.0.3</version>
<executions>
<execution>
<goals>
<goal>set-properties</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.akathist.maven.plugins.launch4j</groupId>
<artifactId>launch4j-maven-plugin</artifactId>
<version>${launch4j-maven-plugin.version}</version>
<executions>
<execution>
<id>l4j-${kinetica.sql}</id>
<phase>${launch4jPhase}</phase> <!-- Do not build MSWin package on non-x86, see profile above -->
<goals><goal>launch4j</goal></goals>
<configuration>
<headerType>console</headerType>
<outfile>${target.build.dir}/${kinetica.sql}.exe</outfile>
<jar>${target.build.dir}/${project.artifactId}-${project.version}-${kinetica.dep-jar-suffix}.jar</jar>
<errTitle>${kinetica.sql}</errTitle>
<classPath>
<mainClass>com.kinetica.kisql</mainClass>
</classPath>
<jre>
<minVersion>1.7</minVersion>
</jre>
<versionInfo>
<fileVersion>${project.version}</fileVersion>
<txtFileVersion>${project.version}</txtFileVersion>
<fileDescription>Simple client for running SQL on any Kinetica database</fileDescription>
<copyright>Kinetica DB, Inc.</copyright>
<productVersion>${project.version}</productVersion>
<txtProductVersion>${project.version}</txtProductVersion>
<productName>Kinetica SQL Client</productName>
<internalName>${kinetica.sql}</internalName>
<originalFilename>${kinetica.sql}.exe</originalFilename>
</versionInfo>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>deploy</phase>
<goals>
<goal>sign</goal>
</goals>
</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>
</configuration>
</plugin>
<!-- Check if version already exists on Maven Central before deploying -->
<!-- This prevents duplicate publishing from Maven and Gradle -->
<!-- Only runs during deploy phase, skip with: mvn deploy -Dskip.central.check=true -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<!-- Both builds are shipped and both declare the same shading rules,
dependencies and artifact variants; nothing else checks that they
agree. Reads both files as text; it never invokes Gradle and
needs no wrapper. Warns only: a plain `mvn` run is not the place
to block on drift that may be mid-change. make-dist.sh runs the
same script in strict mode so a release does fail on it. -->
<id>check-build-parity</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<exec executable="bash" osfamily="unix" failonerror="false">
<arg value="${basedir}/tools/check-build-parity.sh"/>
<arg value="--repo-root"/>
<arg value="${basedir}"/>
</exec>
</target>
<skip>${skip.parity.check}</skip>
</configuration>
</execution>
<execution>
<id>check-maven-central-version</id>
<phase>deploy</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<property name="artifact.url" value="https://repo1.maven.org/maven2/com/kinetica/kinetica-jdbc/${project.version}/kinetica-jdbc-${project.version}.pom"/>
<echo message=""/>
<echo message="=========================================================="/>
<echo message="Checking if version ${project.version} exists on Maven Central..."/>
<echo message="URL: ${artifact.url}"/>
<echo message="=========================================================="/>
<!-- Try to get the artifact; if it exists, fail the build -->
<condition property="version.exists">
<http url="${artifact.url}"/>
</condition>
<fail if="version.exists">
==========================================================
ERROR: Version ${project.version} already exists on Maven Central!
==========================================================
This version may have been published using Gradle or a previous Maven deploy.
Options:
1. Bump the version in pom.xml before deploying
2. If this is intentional, skip with: mvn deploy -Dskip.central.check=true
Maven Central URL: ${artifact.url}
==========================================================
</fail>
<echo message="Version ${project.version} not found on Maven Central. Safe to deploy."/>
<echo message=""/>
</target>
<skip>${skip.central.check}</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<!-- JUnit Jupiter API and Engine -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>24.0.1</version> <!-- or the latest -->
</dependency>
<dependency>
<groupId>com.gpudb</groupId>
<artifactId>gpudb-api</artifactId>
<version>${gpudb-api.version}</version>
</dependency>
<dependency>
<groupId>org.jline</groupId>
<artifactId>jline-reader</artifactId>
<version>3.30.16</version>
</dependency>
</dependencies>
</project>