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

kerwin pushed a commit to branch task-plugin
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/task-plugin by this push:
     new a288e6c  [Plugin][Task]Task Spi (#6118)
a288e6c is described below

commit a288e6c1604d6e5b7e07ac5e482f91da07663d7c
Author: Kirs <[email protected]>
AuthorDate: Tue Sep 7 17:05:02 2021 +0800

    [Plugin][Task]Task Spi (#6118)
---
 dolphinscheduler-server/pom.xml                    |   5 +
 .../cache/TaskExecutionContextCacheManager.java    |  56 ------
 .../impl/TaskExecutionContextCacheManagerImpl.java |  76 -------
 .../worker/processor/TaskExecuteProcessor.java     |  15 +-
 .../server/worker/processor/TaskKillProcessor.java |  24 +--
 .../server/worker/runner/TaskExecuteThread.java    |   8 +-
 .../server/worker/runner/WorkerManagerThread.java  |  16 +-
 dolphinscheduler-spi/pom.xml                       | 220 ---------------------
 .../dolphinscheduler-task-api/pom.xml              | 220 +++++++++++++++++++++
 .../datasource/AbstractDatasourceProcessor.java    |   4 +-
 .../task/datasource/BaseConnectionParam.java       |  22 +--
 .../task/datasource/BaseDataSourceParamDTO.java    |  20 +-
 .../task/datasource/BaseHdfsConnectionParam.java   |   2 +-
 .../datasource/BaseHdfsDatasourceParamDTO.java     |   2 +-
 .../plugin}/task/datasource/ConnectionParam.java   |   2 +-
 .../task/datasource/DatasourceProcessor.java       |   2 +-
 .../plugin}/task/datasource/DatasourceUtil.java    |  20 +-
 .../plugin}/task/datasource/HiveConfUtils.java     |   2 +-
 .../plugin}/task/datasource/PasswordUtils.java     |   2 +-
 .../clickhouse/ClickHouseDatasourceParamDTO.java   |   4 +-
 .../clickhouse/ClickHouseDatasourceProcessor.java  |  14 +-
 .../clickhouse/ClickhouseConnectionParam.java      |   4 +-
 .../task/datasource/db2/Db2ConnectionParam.java    |   4 +-
 .../task/datasource/db2/Db2DatasourceParamDTO.java |   4 +-
 .../datasource/db2/Db2DatasourceProcessor.java     |  16 +-
 .../task/datasource/hive/HiveConnectionParam.java  |   4 +-
 .../datasource/hive/HiveDataSourceParamDTO.java    |   4 +-
 .../datasource/hive/HiveDatasourceProcessor.java   |  20 +-
 .../datasource/mysql/MysqlConnectionParam.java     |   4 +-
 .../datasource/mysql/MysqlDatasourceParamDTO.java  |   4 +-
 .../datasource/mysql/MysqlDatasourceProcessor.java |  16 +-
 .../datasource/oracle/OracleConnectionParam.java   |   4 +-
 .../oracle/OracleDatasourceParamDTO.java           |   4 +-
 .../oracle/OracleDatasourceProcessor.java          |  16 +-
 .../postgresql/PostgreSqlConnectionParam.java      |   4 +-
 .../postgresql/PostgreSqlDatasourceParamDTO.java   |   4 +-
 .../postgresql/PostgreSqlDatasourceProcessor.java  |  16 +-
 .../datasource/presto/PrestoConnectionParam.java   |   4 +-
 .../presto/PrestoDatasourceParamDTO.java           |   4 +-
 .../presto/PrestoDatasourceProcessor.java          |  16 +-
 .../datasource/spark/SparkConnectionParam.java     |   4 +-
 .../datasource/spark/SparkDatasourceParamDTO.java  |   4 +-
 .../datasource/spark/SparkDatasourceProcessor.java |  18 +-
 .../sqlserver/SqlServerConnectionParam.java        |   4 +-
 .../sqlserver/SqlServerDatasourceParamDTO.java     |   4 +-
 .../sqlserver/SqlServerDatasourceProcessor.java    |  16 +-
 .../plugin/task/util}/CommonUtils.java             |   4 +-
 .../plugin/task/datax/DataxTask.java               |   6 +-
 .../plugin/task/procedure/ProcedureTask.java       |   4 +-
 .../plugin/task/spark/SparkTask.java               |   2 +-
 .../generator/sources/MysqlSourceGenerator.java    |   6 +-
 .../generator/targets/MysqlTargetGenerator.java    |   6 +-
 52 files changed, 414 insertions(+), 552 deletions(-)

diff --git a/dolphinscheduler-server/pom.xml b/dolphinscheduler-server/pom.xml
index 7c59fb6..c3a5069 100644
--- a/dolphinscheduler-server/pom.xml
+++ b/dolphinscheduler-server/pom.xml
@@ -43,6 +43,11 @@
             <artifactId>dolphinscheduler-spi</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.dolphinscheduler</groupId>
+            <artifactId>dolphinscheduler-task-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient</artifactId>
         </dependency>
diff --git 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/cache/TaskExecutionContextCacheManager.java
 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/cache/TaskExecutionContextCacheManager.java
deleted file mode 100644
index 71c795b..0000000
--- 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/cache/TaskExecutionContextCacheManager.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.dolphinscheduler.server.worker.cache;
-
-import org.apache.dolphinscheduler.server.entity.TaskExecutionContext;
-
-/**
- *  TaskExecutionContextCacheManager
- */
-public interface TaskExecutionContextCacheManager {
-
-    /**
-     * get taskInstance by taskInstance id
-     *
-     * @param taskInstanceId taskInstanceId
-     * @return taskInstance
-     */
-    TaskExecutionContext getByTaskInstanceId(Integer taskInstanceId);
-
-    /**
-     * cache taskInstance
-     *
-     * @param taskExecutionContext taskExecutionContext
-     */
-    void cacheTaskExecutionContext(TaskExecutionContext taskExecutionContext);
-
-    /**
-     * remove taskInstance by taskInstanceId
-     *
-     * @param taskInstanceId taskInstanceId
-     */
-    void removeByTaskInstanceId(Integer taskInstanceId);
-
-    /**
-     * If the value for the specified key is present and non-null,then perform 
the update,otherwise it will return false
-     *
-     * @param taskExecutionContext taskExecutionContext
-     * @return status
-     */
-    boolean updateTaskExecutionContext(TaskExecutionContext 
taskExecutionContext);
-}
diff --git 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/cache/impl/TaskExecutionContextCacheManagerImpl.java
 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/cache/impl/TaskExecutionContextCacheManagerImpl.java
deleted file mode 100644
index 5c3f990..0000000
--- 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/cache/impl/TaskExecutionContextCacheManagerImpl.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.dolphinscheduler.server.worker.cache.impl;
-
-import org.apache.dolphinscheduler.server.entity.TaskExecutionContext;
-import 
org.apache.dolphinscheduler.server.worker.cache.TaskExecutionContextCacheManager;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.springframework.stereotype.Service;
-
-/**
- * TaskExecutionContextCache
- */
-@Service
-public class TaskExecutionContextCacheManagerImpl implements 
TaskExecutionContextCacheManager {
-
-
-    /**
-     * taskInstance cache
-     */
-    private Map<Integer, TaskExecutionContext> taskExecutionContextCache = new 
ConcurrentHashMap<>();
-
-    /**
-     * get taskInstance by taskInstance id
-     *
-     * @param taskInstanceId taskInstanceId
-     * @return taskInstance
-     */
-    @Override
-    public TaskExecutionContext getByTaskInstanceId(Integer taskInstanceId) {
-        return taskExecutionContextCache.get(taskInstanceId);
-    }
-
-    /**
-     * cache taskInstance
-     *
-     * @param taskExecutionContext taskExecutionContext
-     */
-    @Override
-    public void cacheTaskExecutionContext(TaskExecutionContext 
taskExecutionContext) {
-        
taskExecutionContextCache.put(taskExecutionContext.getTaskInstanceId(), 
taskExecutionContext);
-    }
-
-    /**
-     * remove taskInstance by taskInstanceId
-     *
-     * @param taskInstanceId taskInstanceId
-     */
-    @Override
-    public void removeByTaskInstanceId(Integer taskInstanceId) {
-        taskExecutionContextCache.remove(taskInstanceId);
-    }
-
-    @Override
-    public boolean updateTaskExecutionContext(TaskExecutionContext 
taskExecutionContext) {
-        
taskExecutionContextCache.computeIfPresent(taskExecutionContext.getTaskInstanceId(),
 (k, v) -> taskExecutionContext);
-        return 
taskExecutionContextCache.containsKey(taskExecutionContext.getTaskInstanceId());
-    }
-}
diff --git 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskExecuteProcessor.java
 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskExecuteProcessor.java
index 877a694..dbf5c1a 100644
--- 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskExecuteProcessor.java
+++ 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskExecuteProcessor.java
@@ -28,6 +28,7 @@ import org.apache.dolphinscheduler.common.utils.LoggerUtils;
 import org.apache.dolphinscheduler.common.utils.NetUtils;
 import org.apache.dolphinscheduler.common.utils.OSUtils;
 import org.apache.dolphinscheduler.common.utils.Preconditions;
+import 
org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContextCacheManager;
 import org.apache.dolphinscheduler.remote.command.Command;
 import org.apache.dolphinscheduler.remote.command.CommandType;
 import org.apache.dolphinscheduler.remote.command.TaskExecuteAckCommand;
@@ -36,14 +37,13 @@ import 
org.apache.dolphinscheduler.remote.processor.NettyRequestProcessor;
 import org.apache.dolphinscheduler.server.entity.TaskExecutionContext;
 import org.apache.dolphinscheduler.server.utils.LogUtils;
 import org.apache.dolphinscheduler.server.worker.cache.ResponceCache;
-import 
org.apache.dolphinscheduler.server.worker.cache.TaskExecutionContextCacheManager;
-import 
org.apache.dolphinscheduler.server.worker.cache.impl.TaskExecutionContextCacheManagerImpl;
 import org.apache.dolphinscheduler.server.worker.config.WorkerConfig;
 import org.apache.dolphinscheduler.server.worker.plugin.TaskPluginManager;
 import org.apache.dolphinscheduler.server.worker.runner.TaskExecuteThread;
 import org.apache.dolphinscheduler.server.worker.runner.WorkerManagerThread;
 import org.apache.dolphinscheduler.service.alert.AlertClientService;
 import org.apache.dolphinscheduler.service.bean.SpringApplicationContext;
+import org.apache.dolphinscheduler.spi.task.request.TaskRequest;
 
 import java.util.Date;
 import java.util.Optional;
@@ -77,11 +77,6 @@ public class TaskExecuteProcessor implements 
NettyRequestProcessor {
 
     private TaskPluginManager taskPluginManager;
 
-    /**
-     * taskExecutionContextCacheManager
-     */
-    private final TaskExecutionContextCacheManager 
taskExecutionContextCacheManager;
-
     /*
      * task execute manager
      */
@@ -90,7 +85,6 @@ public class TaskExecuteProcessor implements 
NettyRequestProcessor {
     public TaskExecuteProcessor() {
         this.taskCallbackService = 
SpringApplicationContext.getBean(TaskCallbackService.class);
         this.workerConfig = 
SpringApplicationContext.getBean(WorkerConfig.class);
-        this.taskExecutionContextCacheManager = 
SpringApplicationContext.getBean(TaskExecutionContextCacheManagerImpl.class);
         this.workerManager = 
SpringApplicationContext.getBean(WorkerManagerThread.class);
     }
 
@@ -102,7 +96,8 @@ public class TaskExecuteProcessor implements 
NettyRequestProcessor {
     private void setTaskCache(TaskExecutionContext taskExecutionContext) {
         TaskExecutionContext preTaskCache = new TaskExecutionContext();
         
preTaskCache.setTaskInstanceId(taskExecutionContext.getTaskInstanceId());
-        
taskExecutionContextCacheManager.cacheTaskExecutionContext(preTaskCache);
+        TaskRequest taskRequest = 
JSONUtils.parseObject(JSONUtils.toJsonString(taskExecutionContext), 
TaskRequest.class);
+        
TaskExecutionContextCacheManager.cacheTaskExecutionContext(taskRequest);
     }
 
     public TaskExecuteProcessor(AlertClientService alertClientService, 
TaskPluginManager taskPluginManager) {
@@ -153,7 +148,7 @@ public class TaskExecuteProcessor implements 
NettyRequestProcessor {
         } catch (Throwable ex) {
             String errorLog = String.format("create execLocalPath : %s", 
execLocalPath);
             LoggerUtils.logError(Optional.of(logger), errorLog, ex);
-            
taskExecutionContextCacheManager.removeByTaskInstanceId(taskExecutionContext.getTaskInstanceId());
+            
TaskExecutionContextCacheManager.removeByTaskInstanceId(taskExecutionContext.getTaskInstanceId());
         }
         FileUtils.taskLoggerThreadLocal.remove();
 
diff --git 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskKillProcessor.java
 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskKillProcessor.java
index b4713a9..07154b8 100644
--- 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskKillProcessor.java
+++ 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskKillProcessor.java
@@ -24,6 +24,7 @@ import org.apache.dolphinscheduler.common.utils.LoggerUtils;
 import org.apache.dolphinscheduler.common.utils.OSUtils;
 import org.apache.dolphinscheduler.common.utils.Preconditions;
 import org.apache.dolphinscheduler.common.utils.StringUtils;
+import 
org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContextCacheManager;
 import org.apache.dolphinscheduler.remote.command.Command;
 import org.apache.dolphinscheduler.remote.command.CommandType;
 import org.apache.dolphinscheduler.remote.command.TaskKillRequestCommand;
@@ -33,12 +34,11 @@ import org.apache.dolphinscheduler.remote.utils.Host;
 import org.apache.dolphinscheduler.remote.utils.Pair;
 import org.apache.dolphinscheduler.server.entity.TaskExecutionContext;
 import org.apache.dolphinscheduler.server.utils.ProcessUtils;
-import 
org.apache.dolphinscheduler.server.worker.cache.TaskExecutionContextCacheManager;
-import 
org.apache.dolphinscheduler.server.worker.cache.impl.TaskExecutionContextCacheManagerImpl;
 import org.apache.dolphinscheduler.server.worker.config.WorkerConfig;
 import org.apache.dolphinscheduler.server.worker.runner.WorkerManagerThread;
 import org.apache.dolphinscheduler.service.bean.SpringApplicationContext;
 import org.apache.dolphinscheduler.service.log.LogClientService;
+import org.apache.dolphinscheduler.spi.task.request.TaskRequest;
 
 import java.util.Collections;
 import java.util.List;
@@ -65,11 +65,6 @@ public class TaskKillProcessor implements 
NettyRequestProcessor {
      */
     private final TaskCallbackService taskCallbackService;
 
-    /**
-     * taskExecutionContextCacheManager
-     */
-    private TaskExecutionContextCacheManager taskExecutionContextCacheManager;
-
     /*
      * task execute manager
      */
@@ -78,7 +73,6 @@ public class TaskKillProcessor implements 
NettyRequestProcessor {
     public TaskKillProcessor() {
         this.taskCallbackService = 
SpringApplicationContext.getBean(TaskCallbackService.class);
         this.workerConfig = 
SpringApplicationContext.getBean(WorkerConfig.class);
-        this.taskExecutionContextCacheManager = 
SpringApplicationContext.getBean(TaskExecutionContextCacheManagerImpl.class);
         this.workerManager = 
SpringApplicationContext.getBean(WorkerManagerThread.class);
     }
 
@@ -101,7 +95,7 @@ public class TaskKillProcessor implements 
NettyRequestProcessor {
 
         TaskKillResponseCommand taskKillResponseCommand = 
buildKillTaskResponseCommand(killCommand, result);
         
taskCallbackService.sendResult(taskKillResponseCommand.getTaskInstanceId(), 
taskKillResponseCommand.convert2Command());
-        
taskExecutionContextCacheManager.removeByTaskInstanceId(taskKillResponseCommand.getTaskInstanceId());
+        
TaskExecutionContextCacheManager.removeByTaskInstanceId(taskKillResponseCommand.getTaskInstanceId());
     }
 
     /**
@@ -113,12 +107,14 @@ public class TaskKillProcessor implements 
NettyRequestProcessor {
         boolean processFlag = true;
         List<String> appIds = Collections.emptyList();
         int taskInstanceId = killCommand.getTaskInstanceId();
-        TaskExecutionContext taskExecutionContext = 
taskExecutionContextCacheManager.getByTaskInstanceId(taskInstanceId);
+        TaskRequest taskRequest = 
TaskExecutionContextCacheManager.getByTaskInstanceId(taskInstanceId);
+        TaskExecutionContext taskExecutionContext 
=JSONUtils.parseObject(JSONUtils.toJsonString(taskRequest), 
TaskExecutionContext.class);
+
         try {
             Integer processId = taskExecutionContext.getProcessId();
             if (processId.equals(0)) {
                 
workerManager.killTaskBeforeExecuteByInstanceId(taskInstanceId);
-                
taskExecutionContextCacheManager.removeByTaskInstanceId(taskInstanceId);
+                
TaskExecutionContextCacheManager.removeByTaskInstanceId(taskInstanceId);
                 logger.info("the task has not been executed and has been 
cancelled, task id:{}", taskInstanceId);
                 return Pair.of(true, appIds);
             }
@@ -155,7 +151,11 @@ public class TaskKillProcessor implements 
NettyRequestProcessor {
         TaskKillResponseCommand taskKillResponseCommand = new 
TaskKillResponseCommand();
         taskKillResponseCommand.setStatus(result.getLeft() ? 
ExecutionStatus.SUCCESS.getCode() : ExecutionStatus.FAILURE.getCode());
         taskKillResponseCommand.setAppIds(result.getRight());
-        TaskExecutionContext taskExecutionContext = 
taskExecutionContextCacheManager.getByTaskInstanceId(killCommand.getTaskInstanceId());
+        TaskRequest taskRequest = 
TaskExecutionContextCacheManager.getByTaskInstanceId(killCommand.getTaskInstanceId());
+        if (taskRequest == null) {
+            return taskKillResponseCommand;
+        }
+        TaskExecutionContext taskExecutionContext 
=JSONUtils.parseObject(JSONUtils.toJsonString(taskRequest), 
TaskExecutionContext.class);
         if (taskExecutionContext != null) {
             
taskKillResponseCommand.setTaskInstanceId(taskExecutionContext.getTaskInstanceId());
             taskKillResponseCommand.setHost(taskExecutionContext.getHost());
diff --git 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java
 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java
index 5674473..ca6ef7f 100644
--- 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java
+++ 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java
@@ -28,17 +28,15 @@ import org.apache.dolphinscheduler.common.utils.JSONUtils;
 import org.apache.dolphinscheduler.common.utils.OSUtils;
 import org.apache.dolphinscheduler.common.utils.RetryerUtils;
 import org.apache.dolphinscheduler.common.utils.StringUtils;
+import 
org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContextCacheManager;
 import org.apache.dolphinscheduler.remote.command.Command;
 import org.apache.dolphinscheduler.remote.command.TaskExecuteAckCommand;
 import org.apache.dolphinscheduler.remote.command.TaskExecuteResponseCommand;
 import org.apache.dolphinscheduler.server.entity.TaskExecutionContext;
 import org.apache.dolphinscheduler.server.worker.cache.ResponceCache;
-import 
org.apache.dolphinscheduler.server.worker.cache.TaskExecutionContextCacheManager;
-import 
org.apache.dolphinscheduler.server.worker.cache.impl.TaskExecutionContextCacheManagerImpl;
 import org.apache.dolphinscheduler.server.worker.plugin.TaskPluginManager;
 import org.apache.dolphinscheduler.server.worker.processor.TaskCallbackService;
 import org.apache.dolphinscheduler.service.alert.AlertClientService;
-import org.apache.dolphinscheduler.service.bean.SpringApplicationContext;
 import org.apache.dolphinscheduler.spi.task.AbstractTask;
 import org.apache.dolphinscheduler.spi.task.TaskChannel;
 import org.apache.dolphinscheduler.spi.task.request.TaskRequest;
@@ -114,7 +112,6 @@ public class TaskExecuteThread implements Runnable, Delayed 
{
                              AlertClientService alertClientService) {
         this.taskExecutionContext = taskExecutionContext;
         this.taskCallbackService = taskCallbackService;
-        this.taskExecutionContextCacheManager = 
SpringApplicationContext.getBean(TaskExecutionContextCacheManagerImpl.class);
         this.alertClientService = alertClientService;
     }
 
@@ -124,7 +121,6 @@ public class TaskExecuteThread implements Runnable, Delayed 
{
                              TaskPluginManager taskPluginManager) {
         this.taskExecutionContext = taskExecutionContext;
         this.taskCallbackService = taskCallbackService;
-        this.taskExecutionContextCacheManager = 
SpringApplicationContext.getBean(TaskExecutionContextCacheManagerImpl.class);
         this.alertClientService = alertClientService;
         this.taskPluginManager = taskPluginManager;
     }
@@ -195,7 +191,7 @@ public class TaskExecuteThread implements Runnable, Delayed 
{
             responseCommand.setProcessId(task.getProcessId());
             responseCommand.setAppIds(task.getAppIds());
         } finally {
-            
taskExecutionContextCacheManager.removeByTaskInstanceId(taskExecutionContext.getTaskInstanceId());
+            
TaskExecutionContextCacheManager.removeByTaskInstanceId(taskExecutionContext.getTaskInstanceId());
             
ResponceCache.get().cache(taskExecutionContext.getTaskInstanceId(), 
responseCommand.convert2Command(), Event.RESULT);
             
taskCallbackService.sendResult(taskExecutionContext.getTaskInstanceId(), 
responseCommand.convert2Command());
             clearTaskExecPath();
diff --git 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerManagerThread.java
 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerManagerThread.java
index 5467b44..839b461 100644
--- 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerManagerThread.java
+++ 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/runner/WorkerManagerThread.java
@@ -21,14 +21,15 @@ import org.apache.dolphinscheduler.common.enums.Event;
 import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
 import org.apache.dolphinscheduler.common.thread.Stopper;
 import org.apache.dolphinscheduler.common.thread.ThreadUtils;
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
+import 
org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContextCacheManager;
 import org.apache.dolphinscheduler.remote.command.TaskExecuteResponseCommand;
 import org.apache.dolphinscheduler.server.entity.TaskExecutionContext;
 import org.apache.dolphinscheduler.server.worker.cache.ResponceCache;
-import 
org.apache.dolphinscheduler.server.worker.cache.TaskExecutionContextCacheManager;
-import 
org.apache.dolphinscheduler.server.worker.cache.impl.TaskExecutionContextCacheManagerImpl;
 import org.apache.dolphinscheduler.server.worker.config.WorkerConfig;
 import org.apache.dolphinscheduler.server.worker.processor.TaskCallbackService;
 import org.apache.dolphinscheduler.service.bean.SpringApplicationContext;
+import org.apache.dolphinscheduler.spi.task.request.TaskRequest;
 
 import java.util.concurrent.DelayQueue;
 import java.util.concurrent.ExecutorService;
@@ -61,18 +62,12 @@ public class WorkerManagerThread implements Runnable {
     private final ExecutorService workerExecService;
 
     /**
-     * taskExecutionContextCacheManager
-     */
-    private TaskExecutionContextCacheManager taskExecutionContextCacheManager;
-
-    /**
      * task callback service
      */
     private final TaskCallbackService taskCallbackService;
 
     public WorkerManagerThread() {
         this.workerConfig = 
SpringApplicationContext.getBean(WorkerConfig.class);
-        this.taskExecutionContextCacheManager = 
SpringApplicationContext.getBean(TaskExecutionContextCacheManagerImpl.class);
         this.workerExecService = 
ThreadUtils.newDaemonFixedThreadExecutor("Worker-Execute-Thread", 
this.workerConfig.getWorkerExecThreads());
         this.taskCallbackService = 
SpringApplicationContext.getBean(TaskCallbackService.class);
     }
@@ -101,10 +96,11 @@ public class WorkerManagerThread implements Runnable {
      * kill task before execute , like delay task
      */
     private void sendTaskKillResponse(Integer taskInstanceId) {
-        TaskExecutionContext taskExecutionContext = 
taskExecutionContextCacheManager.getByTaskInstanceId(taskInstanceId);
-        if (taskExecutionContext == null) {
+        TaskRequest taskRequest = 
TaskExecutionContextCacheManager.getByTaskInstanceId(taskInstanceId);
+        if (taskRequest == null) {
             return;
         }
+        TaskExecutionContext taskExecutionContext 
=JSONUtils.parseObject(JSONUtils.toJsonString(taskRequest), 
TaskExecutionContext.class);
         TaskExecuteResponseCommand responseCommand = new 
TaskExecuteResponseCommand(taskExecutionContext.getTaskInstanceId());
         responseCommand.setStatus(ExecutionStatus.KILL.getCode());
         ResponceCache.get().cache(taskExecutionContext.getTaskInstanceId(), 
responseCommand.convert2Command(), Event.RESULT);
diff --git a/dolphinscheduler-spi/pom.xml b/dolphinscheduler-spi/pom.xml
index b96161e..b364cb7 100644
--- a/dolphinscheduler-spi/pom.xml
+++ b/dolphinscheduler-spi/pom.xml
@@ -98,226 +98,6 @@
             <artifactId>resolver</artifactId>
             <scope>provided</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.apache.hive</groupId>
-            <artifactId>hive-jdbc</artifactId>
-            <scope>provided</scope>
-            <exclusions>
-                <exclusion>
-                    <artifactId>slf4j-log4j12</artifactId>
-                    <groupId>org.slf4j</groupId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.eclipse.jetty.aggregate</groupId>
-                    <artifactId>jetty-all</artifactId>
-                </exclusion>
-
-                <exclusion>
-                    <groupId>org.apache.ant</groupId>
-                    <artifactId>ant</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>io.dropwizard.metrics</groupId>
-                    <artifactId>metrics-json</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>io.dropwizard.metrics</groupId>
-                    <artifactId>metrics-jvm</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.github.joshelser</groupId>
-                    
<artifactId>dropwizard-metrics-hadoop-metrics2-reporter</artifactId>
-                </exclusion>
-
-                <exclusion>
-                    <groupId>io.netty</groupId>
-                    <artifactId>netty-all</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.google.code.gson</groupId>
-                    <artifactId>gson</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.google.code.findbugs</groupId>
-                    <artifactId>jsr305</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>io.dropwizard.metrics</groupId>
-                    <artifactId>metrics-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>servlet-api</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.avro</groupId>
-                    <artifactId>avro</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.commons</groupId>
-                    <artifactId>commons-compress</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.curator</groupId>
-                    <artifactId>curator-client</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.hadoop</groupId>
-                    <artifactId>hadoop-auth</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.hadoop</groupId>
-                    <artifactId>hadoop-mapreduce-client-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.hadoop</groupId>
-                    <artifactId>hadoop-yarn-api</artifactId>
-                </exclusion>
-
-                <exclusion>
-                    <groupId>org.apache.zookeeper</groupId>
-                    <artifactId>zookeeper</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.codehaus.jackson</groupId>
-                    <artifactId>jackson-jaxrs</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.codehaus.jackson</groupId>
-                    <artifactId>jackson-xc</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.google.protobuf</groupId>
-                    <artifactId>protobuf-java</artifactId>
-                </exclusion>
-
-                <exclusion>
-                    <groupId>org.json</groupId>
-                    <artifactId>json</artifactId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>log4j-slf4j-impl</artifactId>
-                    <groupId>org.apache.logging.log4j</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>javax.servlet</artifactId>
-                    <groupId>org.eclipse.jetty.orbit</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>servlet-api-2.5</artifactId>
-                    <groupId>org.mortbay.jetty</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jasper-runtime</artifactId>
-                    <groupId>tomcat</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>slider-core</artifactId>
-                    <groupId>org.apache.slider</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hbase-server</artifactId>
-                    <groupId>org.apache.hbase</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jersey-client</artifactId>
-                    <groupId>com.sun.jersey</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jersey-core</artifactId>
-                    <groupId>com.sun.jersey</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jersey-json</artifactId>
-                    <groupId>com.sun.jersey</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jersey-server</artifactId>
-                    <groupId>com.sun.jersey</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jersey-guice</artifactId>
-                    <groupId>com.sun.jersey.contribs</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hbase-common</artifactId>
-                    <groupId>org.apache.hbase</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hbase-hadoop2-compat</artifactId>
-                    <groupId>org.apache.hbase</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hbase-client</artifactId>
-                    <groupId>org.apache.hbase</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hbase-hadoop-compat</artifactId>
-                    <groupId>org.apache.hbase</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>tephra-hbase-compat-1.0</artifactId>
-                    <groupId>co.cask.tephra</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jaxb-api</artifactId>
-                    <groupId>javax.xml.bind</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hive-llap-client</artifactId>
-                    <groupId>org.apache.hive</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hive-llap-common</artifactId>
-                    <groupId>org.apache.hive</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hive-llap-server</artifactId>
-                    <groupId>org.apache.hive</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>tephra-core</artifactId>
-                    <groupId>co.cask.tephra</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>ant</artifactId>
-                    <groupId>ant</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>stringtemplate</artifactId>
-                    <groupId>org.antlr</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>antlr-runtime</artifactId>
-                    <groupId>org.antlr</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>hive-shims</artifactId>
-                    <groupId>org.apache.hive</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jsp-api</artifactId>
-                    <groupId>javax.servlet</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>log4j-api</artifactId>
-                    <groupId>org.apache.logging.log4j</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>log4j-core</artifactId>
-                    <groupId>org.apache.logging.log4j</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>log4j-web</artifactId>
-                    <groupId>org.apache.logging.log4j</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>jasper-compiler</artifactId>
-                    <groupId>tomcat</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/pom.xml 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/pom.xml
index 7e864fa..5868976 100644
--- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/pom.xml
+++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/pom.xml
@@ -51,6 +51,226 @@
             <artifactId>slf4j-api</artifactId>
             <scope>provided</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.hive</groupId>
+            <artifactId>hive-jdbc</artifactId>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <artifactId>slf4j-log4j12</artifactId>
+                    <groupId>org.slf4j</groupId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.eclipse.jetty.aggregate</groupId>
+                    <artifactId>jetty-all</artifactId>
+                </exclusion>
+
+                <exclusion>
+                    <groupId>org.apache.ant</groupId>
+                    <artifactId>ant</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.dropwizard.metrics</groupId>
+                    <artifactId>metrics-json</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.dropwizard.metrics</groupId>
+                    <artifactId>metrics-jvm</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.github.joshelser</groupId>
+                    
<artifactId>dropwizard-metrics-hadoop-metrics2-reporter</artifactId>
+                </exclusion>
+
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty-all</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.google.code.gson</groupId>
+                    <artifactId>gson</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.google.code.findbugs</groupId>
+                    <artifactId>jsr305</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.dropwizard.metrics</groupId>
+                    <artifactId>metrics-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.avro</groupId>
+                    <artifactId>avro</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.commons</groupId>
+                    <artifactId>commons-compress</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.curator</groupId>
+                    <artifactId>curator-client</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.hadoop</groupId>
+                    <artifactId>hadoop-auth</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.hadoop</groupId>
+                    <artifactId>hadoop-mapreduce-client-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.hadoop</groupId>
+                    <artifactId>hadoop-yarn-api</artifactId>
+                </exclusion>
+
+                <exclusion>
+                    <groupId>org.apache.zookeeper</groupId>
+                    <artifactId>zookeeper</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.jackson</groupId>
+                    <artifactId>jackson-jaxrs</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.jackson</groupId>
+                    <artifactId>jackson-xc</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.google.protobuf</groupId>
+                    <artifactId>protobuf-java</artifactId>
+                </exclusion>
+
+                <exclusion>
+                    <groupId>org.json</groupId>
+                    <artifactId>json</artifactId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>log4j-slf4j-impl</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>javax.servlet</artifactId>
+                    <groupId>org.eclipse.jetty.orbit</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>servlet-api-2.5</artifactId>
+                    <groupId>org.mortbay.jetty</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jasper-runtime</artifactId>
+                    <groupId>tomcat</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>slider-core</artifactId>
+                    <groupId>org.apache.slider</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hbase-server</artifactId>
+                    <groupId>org.apache.hbase</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jersey-client</artifactId>
+                    <groupId>com.sun.jersey</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jersey-core</artifactId>
+                    <groupId>com.sun.jersey</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jersey-json</artifactId>
+                    <groupId>com.sun.jersey</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jersey-server</artifactId>
+                    <groupId>com.sun.jersey</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jersey-guice</artifactId>
+                    <groupId>com.sun.jersey.contribs</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hbase-common</artifactId>
+                    <groupId>org.apache.hbase</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hbase-hadoop2-compat</artifactId>
+                    <groupId>org.apache.hbase</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hbase-client</artifactId>
+                    <groupId>org.apache.hbase</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hbase-hadoop-compat</artifactId>
+                    <groupId>org.apache.hbase</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>tephra-hbase-compat-1.0</artifactId>
+                    <groupId>co.cask.tephra</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jaxb-api</artifactId>
+                    <groupId>javax.xml.bind</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hive-llap-client</artifactId>
+                    <groupId>org.apache.hive</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hive-llap-common</artifactId>
+                    <groupId>org.apache.hive</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hive-llap-server</artifactId>
+                    <groupId>org.apache.hive</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>tephra-core</artifactId>
+                    <groupId>co.cask.tephra</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>ant</artifactId>
+                    <groupId>ant</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>stringtemplate</artifactId>
+                    <groupId>org.antlr</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>antlr-runtime</artifactId>
+                    <groupId>org.antlr</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>hive-shims</artifactId>
+                    <groupId>org.apache.hive</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jsp-api</artifactId>
+                    <groupId>javax.servlet</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>log4j-api</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>log4j-core</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>log4j-web</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jasper-compiler</artifactId>
+                    <groupId>tomcat</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
     </dependencies>
     <build>
         <finalName>dolphinscheduler-task-api-${project.version}</finalName>
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/AbstractDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/AbstractDatasourceProcessor.java
similarity index 96%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/AbstractDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/AbstractDatasourceProcessor.java
index 2e5fa2e..19d88e1 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/AbstractDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/AbstractDatasourceProcessor.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.util.Map;
 import java.util.regex.Pattern;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseConnectionParam.java
similarity index 73%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseConnectionParam.java
index 087c200..44a5962 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseConnectionParam.java
@@ -15,17 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
-
-import 
org.apache.dolphinscheduler.spi.task.datasource.clickhouse.ClickhouseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.db2.Db2ConnectionParam;
-import 
org.apache.dolphinscheduler.spi.task.datasource.hive.HiveConnectionParam;
-import 
org.apache.dolphinscheduler.spi.task.datasource.mysql.MysqlConnectionParam;
-import 
org.apache.dolphinscheduler.spi.task.datasource.oracle.OracleConnectionParam;
-import 
org.apache.dolphinscheduler.spi.task.datasource.postgresql.PostgreSqlConnectionParam;
-import 
org.apache.dolphinscheduler.spi.task.datasource.presto.PrestoConnectionParam;
-import 
org.apache.dolphinscheduler.spi.task.datasource.spark.SparkConnectionParam;
-import 
org.apache.dolphinscheduler.spi.task.datasource.sqlserver.SqlServerConnectionParam;
+package org.apache.dolphinscheduler.plugin.task.datasource;
+
+import 
org.apache.dolphinscheduler.plugin.task.datasource.clickhouse.ClickhouseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.db2.Db2ConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.hive.HiveConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.mysql.MysqlConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.oracle.OracleConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.postgresql.PostgreSqlConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.presto.PrestoConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.spark.SparkConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.sqlserver.SqlServerConnectionParam;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseDataSourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseDataSourceParamDTO.java
similarity index 81%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseDataSourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseDataSourceParamDTO.java
index c9ced44..ac46dc2 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseDataSourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseDataSourceParamDTO.java
@@ -15,18 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.clickhouse.ClickHouseDatasourceParamDTO;
-import 
org.apache.dolphinscheduler.spi.task.datasource.db2.Db2DatasourceParamDTO;
-import 
org.apache.dolphinscheduler.spi.task.datasource.hive.HiveDataSourceParamDTO;
-import 
org.apache.dolphinscheduler.spi.task.datasource.mysql.MysqlDatasourceParamDTO;
-import 
org.apache.dolphinscheduler.spi.task.datasource.oracle.OracleDatasourceParamDTO;
-import 
org.apache.dolphinscheduler.spi.task.datasource.postgresql.PostgreSqlDatasourceParamDTO;
-import 
org.apache.dolphinscheduler.spi.task.datasource.presto.PrestoDatasourceParamDTO;
-import 
org.apache.dolphinscheduler.spi.task.datasource.spark.SparkDatasourceParamDTO;
-import 
org.apache.dolphinscheduler.spi.task.datasource.sqlserver.SqlServerDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.clickhouse.ClickHouseDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.db2.Db2DatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.hive.HiveDataSourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.mysql.MysqlDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.oracle.OracleDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.postgresql.PostgreSqlDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.presto.PrestoDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.spark.SparkDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.sqlserver.SqlServerDatasourceParamDTO;
 
 import java.io.Serializable;
 import java.util.Map;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseHdfsConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseHdfsConnectionParam.java
similarity index 96%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseHdfsConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseHdfsConnectionParam.java
index e3f8eb9..ab24027 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseHdfsConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseHdfsConnectionParam.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
 public class BaseHdfsConnectionParam extends BaseConnectionParam {
     protected String principal;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseHdfsDatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseHdfsDatasourceParamDTO.java
similarity index 96%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseHdfsDatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseHdfsDatasourceParamDTO.java
index 5e03ceb..0cfa3cb 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/BaseHdfsDatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/BaseHdfsDatasourceParamDTO.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
 public abstract class BaseHdfsDatasourceParamDTO extends 
BaseDataSourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/ConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/ConnectionParam.java
similarity index 94%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/ConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/ConnectionParam.java
index 403ebe2..46bd979 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/ConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/ConnectionParam.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
 import java.io.Serializable;
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/DatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/DatasourceProcessor.java
similarity index 97%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/DatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/DatasourceProcessor.java
index fe88818..b0243a4 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/DatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/DatasourceProcessor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/DatasourceUtil.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/DatasourceUtil.java
similarity index 83%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/DatasourceUtil.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/DatasourceUtil.java
index c5c4754..b959a3b 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/DatasourceUtil.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/DatasourceUtil.java
@@ -15,18 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.clickhouse.ClickHouseDatasourceProcessor;
-import 
org.apache.dolphinscheduler.spi.task.datasource.db2.Db2DatasourceProcessor;
-import 
org.apache.dolphinscheduler.spi.task.datasource.hive.HiveDatasourceProcessor;
-import 
org.apache.dolphinscheduler.spi.task.datasource.mysql.MysqlDatasourceProcessor;
-import 
org.apache.dolphinscheduler.spi.task.datasource.oracle.OracleDatasourceProcessor;
-import 
org.apache.dolphinscheduler.spi.task.datasource.postgresql.PostgreSqlDatasourceProcessor;
-import 
org.apache.dolphinscheduler.spi.task.datasource.presto.PrestoDatasourceProcessor;
-import 
org.apache.dolphinscheduler.spi.task.datasource.spark.SparkDatasourceProcessor;
-import 
org.apache.dolphinscheduler.spi.task.datasource.sqlserver.SqlServerDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.clickhouse.ClickHouseDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.db2.Db2DatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.hive.HiveDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.mysql.MysqlDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.oracle.OracleDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.postgresql.PostgreSqlDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.presto.PrestoDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.spark.SparkDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.sqlserver.SqlServerDatasourceProcessor;
 
 import java.sql.Connection;
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/HiveConfUtils.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/HiveConfUtils.java
similarity index 97%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/HiveConfUtils.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/HiveConfUtils.java
index 96485b2..0985b74 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/HiveConfUtils.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/HiveConfUtils.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/PasswordUtils.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/PasswordUtils.java
similarity index 98%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/PasswordUtils.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/PasswordUtils.java
index a20cd33..d71b7d0 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/PasswordUtils.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/PasswordUtils.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource;
+package org.apache.dolphinscheduler.plugin.task.datasource;
 
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.DATASOURCE_ENCRYPTION_ENABLE;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.DATASOURCE_ENCRYPTION_SALT;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickHouseDatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickHouseDatasourceParamDTO.java
similarity index 90%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickHouseDatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickHouseDatasourceParamDTO.java
index 750552b..8630d92 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickHouseDatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickHouseDatasourceParamDTO.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.clickhouse;
+package org.apache.dolphinscheduler.plugin.task.datasource.clickhouse;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
 
 public class ClickHouseDatasourceParamDTO extends BaseDataSourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickHouseDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickHouseDatasourceProcessor.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickHouseDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickHouseDatasourceProcessor.java
index fcc3bc7..337f4e0 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickHouseDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickHouseDatasourceProcessor.java
@@ -15,24 +15,24 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.clickhouse;
+package org.apache.dolphinscheduler.plugin.task.datasource.clickhouse;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.COM_CLICKHOUSE_JDBC_DRIVER;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_CLICKHOUSE;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickhouseConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickhouseConnectionParam.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickhouseConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickhouseConnectionParam.java
index 38f51f4..c01d000 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/clickhouse/ClickhouseConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/clickhouse/ClickhouseConnectionParam.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.clickhouse;
+package org.apache.dolphinscheduler.plugin.task.datasource.clickhouse;
 
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
 
 public class ClickhouseConnectionParam extends BaseConnectionParam {
     @Override
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2ConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2ConnectionParam.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2ConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2ConnectionParam.java
index 1460ed7..ba66c5e 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2ConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2ConnectionParam.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.db2;
+package org.apache.dolphinscheduler.plugin.task.datasource.db2;
 
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
 
 public class Db2ConnectionParam extends BaseConnectionParam {
     @Override
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2DatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2DatasourceParamDTO.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2DatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2DatasourceParamDTO.java
index d186e75..dba7bb0 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2DatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2DatasourceParamDTO.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.db2;
+package org.apache.dolphinscheduler.plugin.task.datasource.db2;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
 
 public class Db2DatasourceParamDTO extends BaseDataSourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2DatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2DatasourceProcessor.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2DatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2DatasourceProcessor.java
index 2452870..18ba719 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/db2/Db2DatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/db2/Db2DatasourceProcessor.java
@@ -15,25 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.db2;
+package org.apache.dolphinscheduler.plugin.task.datasource.db2;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.COM_DB2_JDBC_DRIVER;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_DB2;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveConnectionParam.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveConnectionParam.java
index e77d362..006f129 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveConnectionParam.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.hive;
+package org.apache.dolphinscheduler.plugin.task.datasource.hive;
 
-import org.apache.dolphinscheduler.spi.task.datasource.BaseHdfsConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseHdfsConnectionParam;
 
 public class HiveConnectionParam extends BaseHdfsConnectionParam {
     @Override
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveDataSourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveDataSourceParamDTO.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveDataSourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveDataSourceParamDTO.java
index db96788..a61e966 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveDataSourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveDataSourceParamDTO.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.hive;
+package org.apache.dolphinscheduler.plugin.task.datasource.hive;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.BaseHdfsDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseHdfsDatasourceParamDTO;
 
 public class HiveDataSourceParamDTO extends BaseHdfsDatasourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveDatasourceProcessor.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveDatasourceProcessor.java
index e4360e4..2a95d1b 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/hive/HiveDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/hive/HiveDatasourceProcessor.java
@@ -15,27 +15,27 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.hive;
+package org.apache.dolphinscheduler.plugin.task.datasource.hive;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_HIVE_2;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.ORG_APACHE_HIVE_JDBC_HIVE_DRIVER;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.HiveConfUtils;
-import org.apache.dolphinscheduler.spi.utils.CommonUtils;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.HiveConfUtils;
+import org.apache.dolphinscheduler.plugin.task.util.CommonUtils;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.io.IOException;
 import java.sql.Connection;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlConnectionParam.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlConnectionParam.java
index 8f3e65b..ea7a574 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlConnectionParam.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.mysql;
+package org.apache.dolphinscheduler.plugin.task.datasource.mysql;
 
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
 
 public class MysqlConnectionParam extends BaseConnectionParam {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlDatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlDatasourceParamDTO.java
similarity index 90%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlDatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlDatasourceParamDTO.java
index 48d7aa9..5f1389a 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlDatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlDatasourceParamDTO.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.mysql;
+package org.apache.dolphinscheduler.plugin.task.datasource.mysql;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
 
 public class MysqlDatasourceParamDTO extends BaseDataSourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlDatasourceProcessor.java
similarity index 92%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlDatasourceProcessor.java
index 0ba9671..86c1549 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/mysql/MysqlDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/mysql/MysqlDatasourceProcessor.java
@@ -15,25 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.mysql;
+package org.apache.dolphinscheduler.plugin.task.datasource.mysql;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.COM_MYSQL_JDBC_DRIVER;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_MYSQL;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleConnectionParam.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleConnectionParam.java
index 03bf74d..06e4e17 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleConnectionParam.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.oracle;
+package org.apache.dolphinscheduler.plugin.task.datasource.oracle;
 
 import org.apache.dolphinscheduler.spi.enums.DbConnectType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
 
 public class OracleConnectionParam extends BaseConnectionParam {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleDatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleDatasourceParamDTO.java
similarity index 92%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleDatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleDatasourceParamDTO.java
index 07cb8da..99530d9 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleDatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleDatasourceParamDTO.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.oracle;
+package org.apache.dolphinscheduler.plugin.task.datasource.oracle;
 
 import org.apache.dolphinscheduler.spi.enums.DbConnectType;
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
 
 public class OracleDatasourceParamDTO extends BaseDataSourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleDatasourceProcessor.java
similarity index 90%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleDatasourceProcessor.java
index 7c456a8..5e3497e 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/oracle/OracleDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/oracle/OracleDatasourceProcessor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.oracle;
+package org.apache.dolphinscheduler.plugin.task.datasource.oracle;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.AT_SIGN;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
@@ -24,19 +24,19 @@ import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.COM_ORACLE_JDBC
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_ORACLE_SERVICE_NAME;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_ORACLE_SID;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbConnectType;
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlConnectionParam.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlConnectionParam.java
index c63096d..1d459ca 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlConnectionParam.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.postgresql;
+package org.apache.dolphinscheduler.plugin.task.datasource.postgresql;
 
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
 
 public class PostgreSqlConnectionParam extends BaseConnectionParam {
     @Override
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlDatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlDatasourceParamDTO.java
similarity index 90%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlDatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlDatasourceParamDTO.java
index 14c4aaa..b6299c5 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlDatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlDatasourceParamDTO.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.postgresql;
+package org.apache.dolphinscheduler.plugin.task.datasource.postgresql;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
 
 public class PostgreSqlDatasourceParamDTO extends BaseDataSourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlDatasourceProcessor.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlDatasourceProcessor.java
index 337809e..9f7b1ed 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/postgresql/PostgreSqlDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/postgresql/PostgreSqlDatasourceProcessor.java
@@ -15,25 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.postgresql;
+package org.apache.dolphinscheduler.plugin.task.datasource.postgresql;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_POSTGRESQL;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.ORG_POSTGRESQL_DRIVER;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoConnectionParam.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoConnectionParam.java
index ac142b6..b6a226d 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoConnectionParam.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.presto;
+package org.apache.dolphinscheduler.plugin.task.datasource.presto;
 
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
 
 public class PrestoConnectionParam extends BaseConnectionParam {
     @Override
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoDatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoDatasourceParamDTO.java
similarity index 90%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoDatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoDatasourceParamDTO.java
index 689d673..b43326a 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoDatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoDatasourceParamDTO.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.presto;
+package org.apache.dolphinscheduler.plugin.task.datasource.presto;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
 
 public class PrestoDatasourceParamDTO extends BaseDataSourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoDatasourceProcessor.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoDatasourceProcessor.java
index 55eef13..1e45f7c 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/presto/PrestoDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/presto/PrestoDatasourceProcessor.java
@@ -15,25 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.presto;
+package org.apache.dolphinscheduler.plugin.task.datasource.presto;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.COM_PRESTO_JDBC_DRIVER;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_PRESTO;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkConnectionParam.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkConnectionParam.java
index ff226a2..fad385e 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkConnectionParam.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.spark;
+package org.apache.dolphinscheduler.plugin.task.datasource.spark;
 
-import org.apache.dolphinscheduler.spi.task.datasource.BaseHdfsConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseHdfsConnectionParam;
 
 public class SparkConnectionParam extends BaseHdfsConnectionParam {
     @Override
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkDatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkDatasourceParamDTO.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkDatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkDatasourceParamDTO.java
index afe2047..b12844e 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkDatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkDatasourceParamDTO.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.spark;
+package org.apache.dolphinscheduler.plugin.task.datasource.spark;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.BaseHdfsDatasourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseHdfsDatasourceParamDTO;
 
 public class SparkDatasourceParamDTO extends BaseHdfsDatasourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkDatasourceProcessor.java
similarity index 91%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkDatasourceProcessor.java
index 53b4fd9..7735120 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/spark/SparkDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/spark/SparkDatasourceProcessor.java
@@ -15,26 +15,26 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.spark;
+package org.apache.dolphinscheduler.plugin.task.datasource.spark;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_HIVE_2;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.ORG_APACHE_HIVE_JDBC_HIVE_DRIVER;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
-import org.apache.dolphinscheduler.spi.utils.CommonUtils;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.util.CommonUtils;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.io.IOException;
 import java.sql.Connection;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerConnectionParam.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerConnectionParam.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerConnectionParam.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerConnectionParam.java
index 8091cd8..5ef72fd 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerConnectionParam.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerConnectionParam.java
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.sqlserver;
+package org.apache.dolphinscheduler.plugin.task.datasource.sqlserver;
 
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
 
 public class SqlServerConnectionParam extends BaseConnectionParam {
     @Override
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerDatasourceParamDTO.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerDatasourceParamDTO.java
similarity index 90%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerDatasourceParamDTO.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerDatasourceParamDTO.java
index c6024c8..9af1449 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerDatasourceParamDTO.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerDatasourceParamDTO.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.sqlserver;
+package org.apache.dolphinscheduler.plugin.task.datasource.sqlserver;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
 
 public class SqlServerDatasourceParamDTO extends BaseDataSourceParamDTO {
 
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerDatasourceProcessor.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerDatasourceProcessor.java
similarity index 89%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerDatasourceProcessor.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerDatasourceProcessor.java
index 6b76a6b..4393ca4 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/datasource/sqlserver/SqlServerDatasourceProcessor.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/datasource/sqlserver/SqlServerDatasourceProcessor.java
@@ -15,25 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.task.datasource.sqlserver;
+package org.apache.dolphinscheduler.plugin.task.datasource.sqlserver;
 
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COLON;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.COM_SQLSERVER_JDBC_DRIVER;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_SLASH;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.JDBC_SQLSERVER;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.encodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.encodePassword;
 
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import 
org.apache.dolphinscheduler.spi.task.datasource.AbstractDatasourceProcessor;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseDataSourceParamDTO;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.AbstractDatasourceProcessor;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import 
org.apache.dolphinscheduler.plugin.task.datasource.BaseDataSourceParamDTO;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
-import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections.MapUtils;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/CommonUtils.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/util/CommonUtils.java
similarity index 96%
rename from 
dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/CommonUtils.java
rename to 
dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/util/CommonUtils.java
index 9017655..0ce90ad 100644
--- 
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/CommonUtils.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/util/CommonUtils.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.spi.utils;
+package org.apache.dolphinscheduler.plugin.task.util;
 
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.HADOOP_SECURITY_AUTHENTICATION;
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE;
@@ -27,6 +27,8 @@ import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.LOGIN_USER_KEY_
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.RESOURCE_STORAGE_TYPE;
 
 import org.apache.dolphinscheduler.spi.enums.ResUploadType;
+import org.apache.dolphinscheduler.spi.utils.PropertyUtils;
+import org.apache.dolphinscheduler.spi.utils.StringUtils;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.UserGroupInformation;
diff --git 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-datax/src/main/java/org/apache/dolphinscheduler/plugin/task/datax/DataxTask.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-datax/src/main/java/org/apache/dolphinscheduler/plugin/task/datax/DataxTask.java
index b48d5e8..60b90ec 100644
--- 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-datax/src/main/java/org/apache/dolphinscheduler/plugin/task/datax/DataxTask.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-datax/src/main/java/org/apache/dolphinscheduler/plugin/task/datax/DataxTask.java
@@ -19,7 +19,7 @@ package org.apache.dolphinscheduler.plugin.task.datax;
 
 import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.EXIT_CODE_FAILURE;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.RWXR_XR_X;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
 
 import org.apache.dolphinscheduler.plugin.task.api.AbstractTaskExecutor;
 import org.apache.dolphinscheduler.plugin.task.api.ShellCommandExecutor;
@@ -29,8 +29,8 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
 import org.apache.dolphinscheduler.spi.enums.Flag;
 import org.apache.dolphinscheduler.spi.task.AbstractParameters;
 import org.apache.dolphinscheduler.spi.task.Property;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.DatasourceUtil;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.DatasourceUtil;
 import org.apache.dolphinscheduler.spi.task.paramparser.ParamUtils;
 import org.apache.dolphinscheduler.spi.task.paramparser.ParameterUtils;
 import org.apache.dolphinscheduler.spi.task.request.DataxTaskRequest;
diff --git 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-procedure/src/main/java/org/apache/dolphinscheduler/plugin/task/procedure/ProcedureTask.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-procedure/src/main/java/org/apache/dolphinscheduler/plugin/task/procedure/ProcedureTask.java
index ef84036..96e700a 100644
--- 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-procedure/src/main/java/org/apache/dolphinscheduler/plugin/task/procedure/ProcedureTask.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-procedure/src/main/java/org/apache/dolphinscheduler/plugin/task/procedure/ProcedureTask.java
@@ -28,8 +28,8 @@ import 
org.apache.dolphinscheduler.spi.enums.TaskTimeoutStrategy;
 import org.apache.dolphinscheduler.spi.task.AbstractParameters;
 import org.apache.dolphinscheduler.spi.task.Direct;
 import org.apache.dolphinscheduler.spi.task.Property;
-import org.apache.dolphinscheduler.spi.task.datasource.ConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.DatasourceUtil;
+import org.apache.dolphinscheduler.plugin.task.datasource.ConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.DatasourceUtil;
 import org.apache.dolphinscheduler.spi.task.paramparser.ParamUtils;
 import org.apache.dolphinscheduler.spi.task.paramparser.ParameterUtils;
 import org.apache.dolphinscheduler.spi.task.request.ProcedureTaskRequest;
diff --git 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-spark/src/main/java/org/apache/dolphinscheduler/plugin/task/spark/SparkTask.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-spark/src/main/java/org/apache/dolphinscheduler/plugin/task/spark/SparkTask.java
index 887a12f..4cb3f67 100644
--- 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-spark/src/main/java/org/apache/dolphinscheduler/plugin/task/spark/SparkTask.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-spark/src/main/java/org/apache/dolphinscheduler/plugin/task/spark/SparkTask.java
@@ -127,7 +127,7 @@ public class SparkTask extends AbstractYarnTask {
         if (resourceId == 0) {
             resourceName = mainJar.getRes();
         } else {
-            //when update resource maybe has error ,也许也可以交给上层去做控制 
需要看资源是否可以抽象为共性 目前来讲我认为是可以的
+            //when update resource maybe has error
             resourceName = mainJar.getResourceName().replaceFirst("/", "");
         }
         mainJar.setRes(resourceName);
diff --git 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop/src/main/java/org/apache/dolphinscheduler/plugin/task/sqoop/generator/sources/MysqlSourceGenerator.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop/src/main/java/org/apache/dolphinscheduler/plugin/task/sqoop/generator/sources/MysqlSourceGenerator.java
index 5c7fb05..ddc2765 100644
--- 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop/src/main/java/org/apache/dolphinscheduler/plugin/task/sqoop/generator/sources/MysqlSourceGenerator.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop/src/main/java/org/apache/dolphinscheduler/plugin/task/sqoop/generator/sources/MysqlSourceGenerator.java
@@ -32,7 +32,7 @@ import static 
org.apache.dolphinscheduler.spi.task.TaskConstants.COMMA;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_QUOTES;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.EQUAL_SIGN;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.SPACE;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
 
 import org.apache.dolphinscheduler.plugin.task.sqoop.SqoopQueryType;
 import 
org.apache.dolphinscheduler.plugin.task.sqoop.generator.ISourceGenerator;
@@ -40,8 +40,8 @@ import 
org.apache.dolphinscheduler.plugin.task.sqoop.parameter.SqoopParameters;
 import 
org.apache.dolphinscheduler.plugin.task.sqoop.parameter.sources.SourceMysqlParameter;
 import org.apache.dolphinscheduler.spi.enums.DbType;
 import org.apache.dolphinscheduler.spi.task.Property;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.DatasourceUtil;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.DatasourceUtil;
 import org.apache.dolphinscheduler.spi.task.request.SqoopTaskRequest;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;
diff --git 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop/src/main/java/org/apache/dolphinscheduler/plugin/task/sqoop/generator/targets/MysqlTargetGenerator.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop/src/main/java/org/apache/dolphinscheduler/plugin/task/sqoop/generator/targets/MysqlTargetGenerator.java
index a79360f..f5e1c94 100644
--- 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop/src/main/java/org/apache/dolphinscheduler/plugin/task/sqoop/generator/targets/MysqlTargetGenerator.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-sqoop/src/main/java/org/apache/dolphinscheduler/plugin/task/sqoop/generator/targets/MysqlTargetGenerator.java
@@ -29,14 +29,14 @@ import static 
org.apache.dolphinscheduler.plugin.task.sqoop.SqoopConstants.UPDAT
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.DOUBLE_QUOTES;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.SINGLE_QUOTES;
 import static org.apache.dolphinscheduler.spi.task.TaskConstants.SPACE;
-import static 
org.apache.dolphinscheduler.spi.task.datasource.PasswordUtils.decodePassword;
+import static 
org.apache.dolphinscheduler.plugin.task.datasource.PasswordUtils.decodePassword;
 
 import 
org.apache.dolphinscheduler.plugin.task.sqoop.generator.ITargetGenerator;
 import org.apache.dolphinscheduler.plugin.task.sqoop.parameter.SqoopParameters;
 import 
org.apache.dolphinscheduler.plugin.task.sqoop.parameter.targets.TargetMysqlParameter;
 import org.apache.dolphinscheduler.spi.enums.DbType;
-import org.apache.dolphinscheduler.spi.task.datasource.BaseConnectionParam;
-import org.apache.dolphinscheduler.spi.task.datasource.DatasourceUtil;
+import org.apache.dolphinscheduler.plugin.task.datasource.BaseConnectionParam;
+import org.apache.dolphinscheduler.plugin.task.datasource.DatasourceUtil;
 import org.apache.dolphinscheduler.spi.task.request.SqoopTaskRequest;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 import org.apache.dolphinscheduler.spi.utils.StringUtils;

Reply via email to