This is an automated email from the ASF dual-hosted git repository.

wanghailin pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new f85eb78b37 [Fix][JDBC] fix jdbc default connection parameter invalid 
(#8185)
f85eb78b37 is described below

commit f85eb78b37738c1467d0dc252b8dc05ca2852708
Author: Carl-Zhou-CN <[email protected]>
AuthorDate: Mon Mar 31 17:46:28 2025 +0800

    [Fix][JDBC] fix jdbc default connection parameter invalid (#8185)
---
 .../apache/seatunnel/api/ImportClassCheckTest.java |   8 ++
 .../connector-cdc/connector-cdc-base/pom.xml       |  17 ++-
 .../connection/JdbcConnectionFactory.java          |   3 +-
 .../connection/JdbcConnectionPoolFactory.java      |   6 +-
 .../relational/connection/JdbcConnectionPools.java |   4 +-
 seatunnel-connectors-v2/connector-jdbc/pom.xml     |  46 +--------
 .../seatunnel/jdbc/sink/ConnectionPoolManager.java |   3 +-
 .../seatunnel/jdbc/sink/JdbcSinkWriter.java        |   4 +-
 .../connectors/seatunnel/jdbc/JdbcMysqlIT.java     | 115 +++++++++++++++++++++
 seatunnel-shade/pom.xml                            |   1 +
 seatunnel-shade/seatunnel-hikari/pom.xml           | 102 ++++++++++++++++++
 11 files changed, 249 insertions(+), 60 deletions(-)

diff --git 
a/seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ImportClassCheckTest.java
 
b/seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ImportClassCheckTest.java
index 5bfe523fe1..97d061022f 100644
--- 
a/seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ImportClassCheckTest.java
+++ 
b/seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ImportClassCheckTest.java
@@ -112,6 +112,14 @@ public class ImportClassCheckTest {
         log.info("check jetty shade successfully");
     }
 
+    @Test
+    public void hikariShadeCheck() {
+        Map<String, List<String>> errorMap =
+                
checkImportClassPrefixWithAll(Collections.singletonList("com.zaxxer.hikari"));
+        Assertions.assertEquals(0, errorMap.size(), shadeErrorMsg("hikari", 
errorMap));
+        log.info("check hikari shade successfully");
+    }
+
     @Test
     public void janinoShadeCheck() {
         Map<String, List<String>> errorMap =
diff --git a/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/pom.xml 
b/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/pom.xml
index 1870c1da62..61aaa48211 100644
--- a/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/pom.xml
+++ b/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/pom.xml
@@ -34,12 +34,6 @@
 
     <dependencyManagement>
         <dependencies>
-            <dependency>
-                <groupId>com.zaxxer</groupId>
-                <artifactId>HikariCP</artifactId>
-                <version>${hikaricp.version}</version>
-            </dependency>
-
             <dependency>
                 <groupId>org.apache.seatunnel</groupId>
                 <artifactId>connector-common</artifactId>
@@ -98,10 +92,6 @@
             <groupId>com.github.luben</groupId>
             <artifactId>zstd-jni</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.zaxxer</groupId>
-            <artifactId>HikariCP</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.seatunnel</groupId>
             <artifactId>connector-common</artifactId>
@@ -116,6 +106,13 @@
             <version>${commons-lang3.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.seatunnel</groupId>
+            <artifactId>seatunnel-hikari</artifactId>
+            <version>${project.version}</version>
+            <classifier>optional</classifier>
+        </dependency>
+
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
diff --git 
a/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionFactory.java
 
b/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionFactory.java
index 349adf37fd..325e3bf831 100644
--- 
a/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionFactory.java
+++ 
b/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionFactory.java
@@ -17,13 +17,14 @@
 
 package org.apache.seatunnel.connectors.cdc.base.relational.connection;
 
+import org.apache.seatunnel.shade.com.zaxxer.hikari.HikariDataSource;
+
 import org.apache.seatunnel.common.utils.SeaTunnelException;
 import org.apache.seatunnel.connectors.cdc.base.config.JdbcSourceConfig;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.zaxxer.hikari.HikariDataSource;
 import io.debezium.jdbc.JdbcConfiguration;
 import io.debezium.jdbc.JdbcConnection;
 
diff --git 
a/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionPoolFactory.java
 
b/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionPoolFactory.java
index 44ca2f9bc5..4c9398a858 100644
--- 
a/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionPoolFactory.java
+++ 
b/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionPoolFactory.java
@@ -17,10 +17,10 @@
 
 package org.apache.seatunnel.connectors.cdc.base.relational.connection;
 
-import org.apache.seatunnel.connectors.cdc.base.config.JdbcSourceConfig;
+import org.apache.seatunnel.shade.com.zaxxer.hikari.HikariConfig;
+import org.apache.seatunnel.shade.com.zaxxer.hikari.HikariDataSource;
 
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
+import org.apache.seatunnel.connectors.cdc.base.config.JdbcSourceConfig;
 
 /** A connection pool factory to create pooled DataSource {@link 
HikariDataSource}. */
 public abstract class JdbcConnectionPoolFactory {
diff --git 
a/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionPools.java
 
b/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionPools.java
index d67e466738..01ab2da444 100644
--- 
a/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionPools.java
+++ 
b/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionPools.java
@@ -17,13 +17,13 @@
 
 package org.apache.seatunnel.connectors.cdc.base.relational.connection;
 
+import org.apache.seatunnel.shade.com.zaxxer.hikari.HikariDataSource;
+
 import org.apache.seatunnel.connectors.cdc.base.config.JdbcSourceConfig;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.zaxxer.hikari.HikariDataSource;
-
 import java.util.HashMap;
 import java.util.Map;
 
diff --git a/seatunnel-connectors-v2/connector-jdbc/pom.xml 
b/seatunnel-connectors-v2/connector-jdbc/pom.xml
index a6205e0bf7..47fd43e6d8 100644
--- a/seatunnel-connectors-v2/connector-jdbc/pom.xml
+++ b/seatunnel-connectors-v2/connector-jdbc/pom.xml
@@ -240,9 +240,10 @@
         </dependency>
 
         <dependency>
-            <groupId>com.zaxxer</groupId>
-            <artifactId>HikariCP</artifactId>
-            <version>${hikari.version}</version>
+            <groupId>org.apache.seatunnel</groupId>
+            <artifactId>seatunnel-hikari</artifactId>
+            <version>${project.version}</version>
+            <classifier>optional</classifier>
         </dependency>
 
         <dependency>
@@ -353,43 +354,4 @@
         </dependency>
     </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <phase>package</phase>
-                        <configuration>
-                            <createSourcesJar>false</createSourcesJar>
-                            <shadeSourcesContent>true</shadeSourcesContent>
-                            
<shadedArtifactAttached>false</shadedArtifactAttached>
-                            
<createDependencyReducedPom>false</createDependencyReducedPom>
-                            <filters>
-                                <filter>
-                                    <artifact>*:*</artifact>
-                                    <excludes>
-                                        <exclude>META-INF/*.SF</exclude>
-                                        <exclude>META-INF/*.DSA</exclude>
-                                        <exclude>META-INF/*.RSA</exclude>
-                                    </excludes>
-                                </filter>
-                            </filters>
-                            <relocations>
-                                <!-- rename hikari to avoid jar conflict from 
spark -->
-                                <relocation>
-                                    <pattern>com.zaxxer.hikari</pattern>
-                                    
<shadedPattern>${seatunnel.shade.package}.com.zaxxer.hikari</shadedPattern>
-                                </relocation>
-                            </relocations>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
 </project>
diff --git 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/ConnectionPoolManager.java
 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/ConnectionPoolManager.java
index e42dff9c9b..67778b945b 100644
--- 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/ConnectionPoolManager.java
+++ 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/ConnectionPoolManager.java
@@ -17,7 +17,8 @@
 
 package org.apache.seatunnel.connectors.seatunnel.jdbc.sink;
 
-import com.zaxxer.hikari.HikariDataSource;
+import org.apache.seatunnel.shade.com.zaxxer.hikari.HikariDataSource;
+
 import lombok.Getter;
 
 import java.sql.Connection;
diff --git 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/JdbcSinkWriter.java
 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/JdbcSinkWriter.java
index d3c9949dc3..a9cea87394 100644
--- 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/JdbcSinkWriter.java
+++ 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/sink/JdbcSinkWriter.java
@@ -17,6 +17,8 @@
 
 package org.apache.seatunnel.connectors.seatunnel.jdbc.sink;
 
+import org.apache.seatunnel.shade.com.zaxxer.hikari.HikariDataSource;
+
 import org.apache.seatunnel.api.sink.MultiTableResourceManager;
 import org.apache.seatunnel.api.table.catalog.TablePath;
 import org.apache.seatunnel.api.table.catalog.TableSchema;
@@ -31,7 +33,6 @@ import 
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.JdbcDiale
 import org.apache.seatunnel.connectors.seatunnel.jdbc.state.JdbcSinkState;
 import org.apache.seatunnel.connectors.seatunnel.jdbc.state.XidInfo;
 
-import com.zaxxer.hikari.HikariDataSource;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.IOException;
@@ -88,6 +89,7 @@ public class JdbcSinkWriter extends 
AbstractJdbcSinkWriter<ConnectionPoolManager
             
ds.setPassword(jdbcSinkConfig.getJdbcConnectionConfig().getPassword().get());
         }
         
ds.setAutoCommit(jdbcSinkConfig.getJdbcConnectionConfig().isAutoCommit());
+        
jdbcSinkConfig.getJdbcConnectionConfig().getProperties().forEach(ds::addDataSourceProperty);
         return new JdbcMultiTableResourceManager(new 
ConnectionPoolManager(ds));
     }
 
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlIT.java
index 1cbc4e8491..371c31c16a 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlIT.java
@@ -19,6 +19,7 @@
 package org.apache.seatunnel.connectors.seatunnel.jdbc;
 
 import org.apache.seatunnel.shade.com.google.common.collect.Lists;
+import org.apache.seatunnel.shade.com.zaxxer.hikari.pool.HikariProxyConnection;
 
 import org.apache.seatunnel.api.configuration.ReadonlyConfig;
 import org.apache.seatunnel.api.table.catalog.CatalogTable;
@@ -33,6 +34,7 @@ import org.apache.seatunnel.common.utils.JdbcUrlUtil;
 import org.apache.seatunnel.common.utils.ReflectionUtils;
 import 
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.mysql.MySqlCatalog;
 import 
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.connection.JdbcConnectionProvider;
+import 
org.apache.seatunnel.connectors.seatunnel.jdbc.sink.JdbcMultiTableResourceManager;
 import org.apache.seatunnel.connectors.seatunnel.jdbc.sink.JdbcSink;
 import org.apache.seatunnel.connectors.seatunnel.jdbc.sink.JdbcSinkFactory;
 import org.apache.seatunnel.connectors.seatunnel.jdbc.sink.JdbcSinkWriter;
@@ -459,6 +461,7 @@ public class JdbcMysqlIT extends AbstractJdbcIT {
     public void parametersTest() throws Exception {
         defaultSinkParametersTest();
         defaultSourceParametersTest();
+        defaultMultiSinkParametersTest();
     }
 
     void defaultSinkParametersTest() throws IOException, SQLException, 
ClassNotFoundException {
@@ -546,6 +549,118 @@ public class JdbcMysqlIT extends AbstractJdbcIT {
         
Assertions.assertEquals(connectionProperties4.get("rewriteBatchedStatements"), 
"false");
     }
 
+    void defaultMultiSinkParametersTest() throws IOException, SQLException, 
ClassNotFoundException {
+        TableSchema tableSchema =
+                TableSchema.builder()
+                        .column(
+                                PhysicalColumn.of(
+                                        "c_bigint",
+                                        BasicType.LONG_TYPE,
+                                        22,
+                                        false,
+                                        null,
+                                        "c_bigint"))
+                        .build();
+        CatalogTable catalogTable =
+                CatalogTable.of(
+                        TableIdentifier.of("test_catalog", "seatunnel", 
"source"),
+                        tableSchema,
+                        new HashMap<>(),
+                        new ArrayList<>(),
+                        "User table");
+
+        // case1 url not contains parameters and properties not contains 
parameters
+        Map<String, Object> map1 = getDefaultConfigMap();
+        map1.put("url", getUrl());
+        ReadonlyConfig config1 = ReadonlyConfig.fromMap(map1);
+        TableSinkFactoryContext context1 =
+                TableSinkFactoryContext.replacePlaceholderAndCreate(
+                        catalogTable,
+                        config1,
+                        Thread.currentThread().getContextClassLoader(),
+                        Collections.emptyList());
+        JdbcSink jdbcSink1 = (JdbcSink) new 
JdbcSinkFactory().createSink(context1).createSink();
+        JdbcMultiTableResourceManager multiTableResourceManager1 =
+                (JdbcMultiTableResourceManager)
+                        
jdbcSink1.createWriter(null).initMultiTableResourceManager(1, 1);
+        Properties connectionProperties1 = 
getMultiSinkProperties(multiTableResourceManager1);
+        
Assertions.assertEquals(connectionProperties1.get("rewriteBatchedStatements"), 
"true");
+
+        // case2 url contains parameters and properties not contains parameters
+        Map<String, Object> map2 = getDefaultConfigMap();
+        map2.put("url", getUrl() + "?rewriteBatchedStatements=false");
+        ReadonlyConfig config2 = ReadonlyConfig.fromMap(map2);
+        TableSinkFactoryContext context2 =
+                TableSinkFactoryContext.replacePlaceholderAndCreate(
+                        catalogTable,
+                        config2,
+                        Thread.currentThread().getContextClassLoader(),
+                        Collections.emptyList());
+        JdbcSink jdbcSink2 = (JdbcSink) new 
JdbcSinkFactory().createSink(context2).createSink();
+        JdbcMultiTableResourceManager multiTableResourceManager2 =
+                (JdbcMultiTableResourceManager)
+                        
jdbcSink2.createWriter(null).initMultiTableResourceManager(1, 1);
+        Properties connectionProperties2 = 
getMultiSinkProperties(multiTableResourceManager2);
+        
Assertions.assertEquals(connectionProperties2.get("rewriteBatchedStatements"), 
"false");
+
+        // case3 url not contains parameters and properties not contains 
parameters
+        Map<String, Object> map3 = getDefaultConfigMap();
+        Map<String, String> properties3 = new HashMap<>();
+        properties3.put("rewriteBatchedStatements", "false");
+        map3.put("properties", properties3);
+        map3.put("url", getUrl());
+        ReadonlyConfig config3 = ReadonlyConfig.fromMap(map3);
+        TableSinkFactoryContext context3 =
+                TableSinkFactoryContext.replacePlaceholderAndCreate(
+                        catalogTable,
+                        config3,
+                        Thread.currentThread().getContextClassLoader(),
+                        Collections.emptyList());
+        JdbcSink jdbcSink3 = (JdbcSink) new 
JdbcSinkFactory().createSink(context3).createSink();
+        JdbcMultiTableResourceManager multiTableResourceManager3 =
+                (JdbcMultiTableResourceManager)
+                        
jdbcSink3.createWriter(null).initMultiTableResourceManager(1, 1);
+        Properties connectionProperties3 = 
getMultiSinkProperties(multiTableResourceManager3);
+        
Assertions.assertEquals(connectionProperties3.get("rewriteBatchedStatements"), 
"false");
+
+        // case4 url contains parameters and properties contains parameters
+        Map<String, Object> map4 = getDefaultConfigMap();
+        Map<String, String> properties4 = new HashMap<>();
+        properties4.put("useSSL", "true");
+        properties4.put("rewriteBatchedStatements", "false");
+        map4.put("properties", properties4);
+        map4.put("url", getUrl() + 
"?useSSL=false&rewriteBatchedStatements=true");
+        ReadonlyConfig config4 = ReadonlyConfig.fromMap(map4);
+        TableSinkFactoryContext context4 =
+                TableSinkFactoryContext.replacePlaceholderAndCreate(
+                        catalogTable,
+                        config4,
+                        Thread.currentThread().getContextClassLoader(),
+                        Collections.emptyList());
+        JdbcSink jdbcSink4 = (JdbcSink) new 
JdbcSinkFactory().createSink(context4).createSink();
+        JdbcMultiTableResourceManager multiTableResourceManager4 =
+                (JdbcMultiTableResourceManager)
+                        
jdbcSink4.createWriter(null).initMultiTableResourceManager(1, 1);
+        Properties connectionProperties4 = 
getMultiSinkProperties(multiTableResourceManager4);
+        Assertions.assertEquals(connectionProperties4.get("useSSL"), "true");
+        
Assertions.assertEquals(connectionProperties4.get("rewriteBatchedStatements"), 
"false");
+    }
+
+    private Properties getMultiSinkProperties(
+            JdbcMultiTableResourceManager multiTableResourceManager) throws 
SQLException {
+        HikariProxyConnection hikariProxyConnection =
+                (HikariProxyConnection)
+                        multiTableResourceManager
+                                .getSharedResource()
+                                .get()
+                                .getConnectionPool()
+                                .getConnection();
+        Properties connectionProperties =
+                ((ConnectionImpl) 
ReflectionUtils.getField(hikariProxyConnection, "delegate").get())
+                        .getProperties();
+        return connectionProperties;
+    }
+
     void defaultSourceParametersTest() throws Exception {
         // case1 url not contains parameters and properties not contains 
parameters
         Map<String, Object> map1 = getDefaultConfigMap();
diff --git a/seatunnel-shade/pom.xml b/seatunnel-shade/pom.xml
index 0011f6b37d..590f8d3b46 100644
--- a/seatunnel-shade/pom.xml
+++ b/seatunnel-shade/pom.xml
@@ -36,6 +36,7 @@
         <module>seatunnel-jetty9-9.4.56</module>
         <module>seatunnel-hadoop-aws</module>
         <module>seatunnel-arrow</module>
+        <module>seatunnel-hikari</module>
     </modules>
 
     <build>
diff --git a/seatunnel-shade/seatunnel-hikari/pom.xml 
b/seatunnel-shade/seatunnel-hikari/pom.xml
new file mode 100644
index 0000000000..0b662d09cd
--- /dev/null
+++ b/seatunnel-shade/seatunnel-hikari/pom.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.seatunnel</groupId>
+        <artifactId>seatunnel-shade</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>seatunnel-hikari</artifactId>
+    <name>SeaTunnel : Shade : Hikari</name>
+
+    <properties>
+        <hikari.version>4.0.3</hikari.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.zaxxer</groupId>
+            <artifactId>HikariCP</artifactId>
+            <version>${hikari.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                            <finalName>seatunnel-hikari</finalName>
+                            
<createSourcesJar>${enableSourceJarCreation}</createSourcesJar>
+                            <shadeSourcesContent>true</shadeSourcesContent>
+                            
<shadedArtifactAttached>false</shadedArtifactAttached>
+                            
<createDependencyReducedPom>false</createDependencyReducedPom>
+                            <filters>
+                                <filter>
+                                    <artifact>*:*</artifact>
+                                    <excludes>
+                                        <exclude>META-INF/*.SF</exclude>
+                                        <exclude>META-INF/*.DSA</exclude>
+                                        <exclude>META-INF/*.RSA</exclude>
+                                    </excludes>
+                                </filter>
+                            </filters>
+                            <relocations>
+                                <!-- rename hikari to avoid jar conflict from 
spark -->
+                                <relocation>
+                                    <pattern>com.zaxxer.hikari</pattern>
+                                    
<shadedPattern>${seatunnel.shade.package}.com.zaxxer.hikari</shadedPattern>
+                                </relocation>
+                            </relocations>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    
<file>${basedir}/target/seatunnel-hikari.jar</file>
+                                    <type>jar</type>
+                                    <classifier>optional</classifier>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Reply via email to