You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/02/08 08:43:29 UTC

[kylin] branch kylin5 updated: Add rat plugin conf

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

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/kylin5 by this push:
     new 976f40431f Add rat plugin conf
976f40431f is described below

commit 976f40431f3283620a2846b88af686273a3bae47
Author: XiaoxiangYu <xx...@apache.org>
AuthorDate: Fri Feb 3 16:39:59 2023 +0800

    Add rat plugin conf
---
 build/conf/kylin-guardian-log4j.xml                |  16 +
 build/conf/kylin-server-log4j.xml                  |  16 +
 build/conf/kylin-tools-diag-log4j.xml              |  16 +
 build/conf/kylin-tools-log4j.xml                   |  16 +
 build/conf/spark-appmaster-log4j.xml               |  16 +
 build/conf/spark-driver-log4j.xml                  |  16 +
 build/conf/spark-executor-cloud-log4j.xml          |  16 +
 build/conf/spark-executor-log4j.xml                |  16 +
 build/conf/spark-streaming-driver-log4j.xml        |  16 +
 build/conf/spark-streaming-executor-log4j.xml      |  16 +
 .../runConfigurations/BootstrapServer_local.xml    |  16 +
 .../BootstrapServer_local_community.xml            |  16 +
 dev-support/sandbox/conf/kylin.properties          |   4 +-
 .../BootstrapServer_docker_sandbox_.xml            |  16 +
 .../BootstrapServer_docker_sandbox_ultimate.xml    |  16 +
 kystudio/e2e/.npmrc                                |   2 -
 .../\344\273\252\350\241\250\347\233\230.xmind"    | Bin 26500 -> 0 bytes
 .../e2e/e2eCase/\344\273\273\345\212\241.xmind"    | Bin 85260 -> 0 bytes
 ...0\357\274\210\347\224\250ssb\357\274\211.xmind" | Bin 104924 -> 0 bytes
 .../e2e/e2eCase/\346\250\241\345\235\227.xmind"    | Bin 83346 -> 0 bytes
 .../e2e/e2eCase/\346\250\241\345\236\213.xmind"    | Bin 184809 -> 0 bytes
 .../e2e/e2eCase/\347\224\250\346\210\267.xmind"    | Bin 97269 -> 0 bytes
 .../\347\224\250\346\210\267\347\273\204.xmind"    | Bin 43118 -> 0 bytes
 .../e2e/e2eCase/\347\231\273\345\275\225.xmind"    | Bin 49682 -> 0 bytes
 ...\242\345\274\225\345\220\216\357\274\211.xmind" | Bin 23182 -> 0 bytes
 .../e2e/e2eCase/\350\256\276\347\275\256.xmind"    | Bin 119553 -> 0 bytes
 .../e2e/e2eCase/\351\241\271\347\233\256.xmind"    | Bin 141003 -> 0 bytes
 kystudio/e2e/package.json                          |  25 --
 kystudio/e2e/specs/clear/index.spec.js             |  97 -----
 kystudio/e2e/specs/e2e.env                         |  37 --
 kystudio/e2e/specs/index.js                        |  26 --
 .../specs/projectAdmin/happy_path/index.spec.js    |  39 --
 .../projectManagement/happy_path/index.spec.js     |  39 --
 .../projectOperation/happy_path/index.spec.js      |  39 --
 .../specs/projectQuery/happy_path/index.spec.js    |  39 --
 .../e2e/specs/systemAdmin/happy_path/index.spec.js | 415 ---------------------
 kystudio/e2e/specs/systemAdmin/login/login.spec.js | 126 -------
 .../e2e/specs/systemAdmin/logout/logout.spec.js    |  50 ---
 kystudio/e2e/specs/utils/businessHelper.js         | 216 -----------
 kystudio/e2e/specs/utils/domHelper.js              | 306 ---------------
 kystudio/e2e/specs/utils/index.js                  |   2 -
 pom.xml                                            | 314 +++++++++++++++-
 src/assembly/pom.xml                               |   2 +-
 src/common-booter/pom.xml                          |  18 +-
 src/common-booter/src/main/resources/assembly.xml  |  16 +
 src/common-booter/src/main/resources/log4j2.xml    |  16 +
 src/common-server/pom.xml                          |  18 +-
 src/common-service/pom.xml                         |   2 +-
 src/core-common/pom.xml                            |   2 +-
 .../java/org/apache/kylin/common/KapConfig.java    |   2 +-
 src/core-job/pom.xml                               |   2 +-
 src/core-metadata/pom.xml                          |   2 +-
 .../metadata/query/QueryHistoryProjectInfo.java    |  17 +
 src/core-metrics/pom.xml                           |  18 +-
 src/core-storage/pom.xml                           |   2 +-
 src/data-loading-booter/pom.xml                    |  18 +-
 .../src/main/resources/assembly.xml                |  16 +
 .../src/main/resources/log4j2.xml                  |  16 +
 src/data-loading-server/pom.xml                    |  18 +-
 src/data-loading-service/pom.xml                   |   2 +-
 src/datasource-sdk/pom.xml                         |  18 +-
 .../src/main/resources/datasource/mssql.xml        |  15 +
 .../src/main/resources/datasource/snowflake.xml    |  15 +
 .../src/main/resources/datasource/sqldw.xml        |  15 +
 src/datasource-service/pom.xml                     |   2 +-
 src/distributed-lock-ext/pom.xml                   |  18 +-
 src/docker/all_in_one/scripts/install_mysql.sh     |  17 +
 .../test_case_data/sandbox/kylin.properties        |   4 +-
 src/integration-service/pom.xml                    |  18 +-
 src/jdbc/pom.xml                                   |  20 +-
 src/job-service/pom.xml                            |  18 +-
 src/kylin-it/pom.xml                               |  18 +-
 src/metadata-server/pom.xml                        |  18 +-
 src/modeling-service/pom.xml                       |   2 +-
 src/query-booter/pom.xml                           |  18 +-
 src/query-booter/src/main/resources/assembly.xml   |  16 +
 src/query-booter/src/main/resources/log4j2.xml     |  16 +
 src/query-common/pom.xml                           |  18 +-
 src/query-server/pom.xml                           |  18 +-
 src/query-service/pom.xml                          |   2 +-
 src/query/pom.xml                                  |   2 +-
 src/second-storage/clickhouse-it/pom.xml           |  18 +-
 src/second-storage/clickhouse/pom.xml              |  18 +-
 src/second-storage/core-ui/pom.xml                 |  18 +-
 src/second-storage/core/pom.xml                    |  18 +-
 src/server/pom.xml                                 |   2 +-
 src/server/src/main/resources/log4j2.xml           |  16 +
 src/source-hive/pom.xml                            |   2 +-
 src/spark-project/engine-build-sdk/pom.xml         |   2 +-
 src/spark-project/engine-spark/pom.xml             |   2 +-
 .../kylin-soft-affinity-cache/pom.xml              |   2 +-
 src/spark-project/source-jdbc/pom.xml              |   2 +-
 src/spark-project/sparder/pom.xml                  |   2 +-
 src/spark-project/spark-common/pom.xml             |   2 +-
 .../datasources/v2/pushdown/PushQuery.scala        |  17 +
 .../v2/pushdown/sql/PushDownAggUtils.scala         |  17 +
 .../datasources/v2/pushdown/sql/SQLBuilder.scala   |  17 +
 .../v2/pushdown/sql/SingleSQLStatement.scala       |  17 +
 .../jdbc/v2/ShardJDBCWithoutShardSuite.scala       |  17 +
 src/spark-project/spark-ddl-plugin/pom.xml         |  18 +-
 src/spark-project/spark-it/pom.xml                 |   2 +-
 src/streaming-sdk/pom.xml                          |   2 +-
 src/streaming-service/pom.xml                      |  18 +-
 src/streaming/pom.xml                              |   2 +-
 src/systools/pom.xml                               |   2 +-
 src/tool/pom.xml                                   |   2 +-
 .../bisync/tds/tableau.connector.template.xml      |  16 +
 .../org/apache/kylin/tool/MetadataToolTest.java    |   2 +
 108 files changed, 1216 insertions(+), 1512 deletions(-)

diff --git a/build/conf/kylin-guardian-log4j.xml b/build/conf/kylin-guardian-log4j.xml
index 23f80a95eb..d488226bfb 100644
--- a/build/conf/kylin-guardian-log4j.xml
+++ b/build/conf/kylin-guardian-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <RollingFile name="file" fileName="${env:KYLIN_HOME}/logs/guardian.log" append="true"
diff --git a/build/conf/kylin-server-log4j.xml b/build/conf/kylin-server-log4j.xml
index 64632fe7b2..701e8071fc 100644
--- a/build/conf/kylin-server-log4j.xml
+++ b/build/conf/kylin-server-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <RollingRandomAccessFile name="server" fileName="${env:KYLIN_HOME}/logs/kylin.log" append="true"
diff --git a/build/conf/kylin-tools-diag-log4j.xml b/build/conf/kylin-tools-diag-log4j.xml
index 06b179fd9b..11ab7976ec 100644
--- a/build/conf/kylin-tools-diag-log4j.xml
+++ b/build/conf/kylin-tools-diag-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <RollingFile name="file" fileName="${env:KYLIN_HOME}/logs/diag.log" append="true"
diff --git a/build/conf/kylin-tools-log4j.xml b/build/conf/kylin-tools-log4j.xml
index 7148525108..5f605b7da5 100644
--- a/build/conf/kylin-tools-log4j.xml
+++ b/build/conf/kylin-tools-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_ERR">
diff --git a/build/conf/spark-appmaster-log4j.xml b/build/conf/spark-appmaster-log4j.xml
index 8879c7c673..bd64793e07 100644
--- a/build/conf/spark-appmaster-log4j.xml
+++ b/build/conf/spark-appmaster-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_OUT" layout="org.apache.spark.log4j.SensitivePatternLayout">
diff --git a/build/conf/spark-driver-log4j.xml b/build/conf/spark-driver-log4j.xml
index 73a51209dc..04a771ae1f 100644
--- a/build/conf/spark-driver-log4j.xml
+++ b/build/conf/spark-driver-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <DriverHdfsAppender name="hdfs"
diff --git a/build/conf/spark-executor-cloud-log4j.xml b/build/conf/spark-executor-cloud-log4j.xml
index 7745172c9d..f48a06ff14 100644
--- a/build/conf/spark-executor-cloud-log4j.xml
+++ b/build/conf/spark-executor-cloud-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_OUT">
diff --git a/build/conf/spark-executor-log4j.xml b/build/conf/spark-executor-log4j.xml
index 75aa012406..dbf67e411d 100644
--- a/build/conf/spark-executor-log4j.xml
+++ b/build/conf/spark-executor-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_OUT">
diff --git a/build/conf/spark-streaming-driver-log4j.xml b/build/conf/spark-streaming-driver-log4j.xml
index f335e821f7..ab9e0d744c 100644
--- a/build/conf/spark-streaming-driver-log4j.xml
+++ b/build/conf/spark-streaming-driver-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <DriverHdfsRollingAppender name="hdfs"
diff --git a/build/conf/spark-streaming-executor-log4j.xml b/build/conf/spark-streaming-executor-log4j.xml
index 33bbf0b5e2..aaa8b51bd6 100644
--- a/build/conf/spark-streaming-executor-log4j.xml
+++ b/build/conf/spark-streaming-executor-log4j.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stderr" target="SYSTEM_OUT">
diff --git a/dev-support/local/runConfigurations/BootstrapServer_local.xml b/dev-support/local/runConfigurations/BootstrapServer_local.xml
index e0407591f7..b9d77829e1 100644
--- a/dev-support/local/runConfigurations/BootstrapServer_local.xml
+++ b/dev-support/local/runConfigurations/BootstrapServer_local.xml
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <component name="ProjectRunConfigurationManager">
   <configuration name="BootstrapServer[Local]" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
     <module name="kylin-server" />
diff --git a/dev-support/local/runConfigurations/BootstrapServer_local_community.xml b/dev-support/local/runConfigurations/BootstrapServer_local_community.xml
index ea711f31be..4b1109292b 100644
--- a/dev-support/local/runConfigurations/BootstrapServer_local_community.xml
+++ b/dev-support/local/runConfigurations/BootstrapServer_local_community.xml
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <component name="ProjectRunConfigurationManager">
   <configuration name="BootstrapServer[Local]" type="Application" factoryName="Application">
     <module name="kylin-server" />
diff --git a/dev-support/sandbox/conf/kylin.properties b/dev-support/sandbox/conf/kylin.properties
index 7ca8e1ee4f..179af52036 100644
--- a/dev-support/sandbox/conf/kylin.properties
+++ b/dev-support/sandbox/conf/kylin.properties
@@ -82,7 +82,7 @@ kylin.engine.spark-conf.spark.executor.cores=1
 kylin.engine.spark-conf.spark.executor.instances=1
 kylin.engine.spark-conf.spark.sql.autoBroadcastJoinThreshold=-1
 
-kylin.engine.spark.job-jar=../assembly/target/kylin-assembly-5.0.0-SNAPSHOT-job.jar
+kylin.engine.spark.job-jar=../assembly/target/kylin-assembly-5.0.0-alpha-SNAPSHOT-job.jar
 
 
 
@@ -198,7 +198,7 @@ kylin.smart.conf.propose-runner-type=in-memory
 
 #streaming
 kylin.streaming.spark-conf.spark.sql.hive.metastore.jars=${KYLIN_HOME}/build/spark/hive_1_2_2/*
-kylin.streaming.spark.job-jar=../assembly/target/kylin-assembly-5.0.0-SNAPSHOT-job.jar
+kylin.streaming.spark.job-jar=../assembly/target/kylin-assembly-5.0.0-alpha-SNAPSHOT-job.jar
 
 kylin.query.escape-default-keyword=true
 kylin.monitor.enabled=false
diff --git a/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_.xml b/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_.xml
index 26ab445159..c361f984f0 100644
--- a/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_.xml
+++ b/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_.xml
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <component name="ProjectRunConfigurationManager">
   <configuration default="false" name="BootstrapServer[docker-sandbox]" type="Application" factoryName="Application">
     <envs>
diff --git a/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_ultimate.xml b/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_ultimate.xml
index 5032f1101f..98f6f8d883 100644
--- a/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_ultimate.xml
+++ b/dev-support/sandbox/runConfigurations/BootstrapServer_docker_sandbox_ultimate.xml
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <component name="ProjectRunConfigurationManager">
   <configuration default="false" name="BootstrapServer[docker-sandbox]" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
     <module name="kylin-server" />
diff --git a/kystudio/e2e/.npmrc b/kystudio/e2e/.npmrc
deleted file mode 100644
index b24216ceba..0000000000
--- a/kystudio/e2e/.npmrc
+++ /dev/null
@@ -1,2 +0,0 @@
-chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver
-geckodriver_cdnurl=https://npm.taobao.org/mirrors/geckodriver
\ No newline at end of file
diff --git "a/kystudio/e2e/e2eCase/\344\273\252\350\241\250\347\233\230.xmind" "b/kystudio/e2e/e2eCase/\344\273\252\350\241\250\347\233\230.xmind"
deleted file mode 100644
index 6859ae1695..0000000000
Binary files "a/kystudio/e2e/e2eCase/\344\273\252\350\241\250\347\233\230.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\344\273\273\345\212\241.xmind" "b/kystudio/e2e/e2eCase/\344\273\273\345\212\241.xmind"
deleted file mode 100644
index 866d9f6a86..0000000000
Binary files "a/kystudio/e2e/e2eCase/\344\273\273\345\212\241.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\346\225\260\346\215\256\346\272\220\357\274\210\347\224\250ssb\357\274\211.xmind" "b/kystudio/e2e/e2eCase/\346\225\260\346\215\256\346\272\220\357\274\210\347\224\250ssb\357\274\211.xmind"
deleted file mode 100644
index a5bc55cd0b..0000000000
Binary files "a/kystudio/e2e/e2eCase/\346\225\260\346\215\256\346\272\220\357\274\210\347\224\250ssb\357\274\211.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\346\250\241\345\235\227.xmind" "b/kystudio/e2e/e2eCase/\346\250\241\345\235\227.xmind"
deleted file mode 100644
index 2b7ebdbb1a..0000000000
Binary files "a/kystudio/e2e/e2eCase/\346\250\241\345\235\227.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\346\250\241\345\236\213.xmind" "b/kystudio/e2e/e2eCase/\346\250\241\345\236\213.xmind"
deleted file mode 100644
index 002234c4a6..0000000000
Binary files "a/kystudio/e2e/e2eCase/\346\250\241\345\236\213.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\347\224\250\346\210\267.xmind" "b/kystudio/e2e/e2eCase/\347\224\250\346\210\267.xmind"
deleted file mode 100644
index dc2c6b743b..0000000000
Binary files "a/kystudio/e2e/e2eCase/\347\224\250\346\210\267.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\347\224\250\346\210\267\347\273\204.xmind" "b/kystudio/e2e/e2eCase/\347\224\250\346\210\267\347\273\204.xmind"
deleted file mode 100644
index 2cdf1d2e5f..0000000000
Binary files "a/kystudio/e2e/e2eCase/\347\224\250\346\210\267\347\273\204.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\347\231\273\345\275\225.xmind" "b/kystudio/e2e/e2eCase/\347\231\273\345\275\225.xmind"
deleted file mode 100644
index 6f0bfe0f14..0000000000
Binary files "a/kystudio/e2e/e2eCase/\347\231\273\345\275\225.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\347\264\242\345\274\225\357\274\210\344\276\235\350\265\226\346\211\213\345\212\250\345\273\272\347\264\242\345\274\225\345\220\216\357\274\211.xmind" "b/kystudio/e2e/e2eCase/\347\264\242\345\274\225\357\274\210\344\276\235\350\265\226\346\211\213\345\212\250\345\273\272\347\264\242\345\274\225\345\220\216\357\274\211.xmind"
deleted file mode 100644
index 7c900b5ca0..0000000000
Binary files "a/kystudio/e2e/e2eCase/\347\264\242\345\274\225\357\274\210\344\276\235\350\265\226\346\211\213\345\212\250\345\273\272\347\264\242\345\274\225\345\220\216\357\274\211.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\350\256\276\347\275\256.xmind" "b/kystudio/e2e/e2eCase/\350\256\276\347\275\256.xmind"
deleted file mode 100644
index d16fa12ddb..0000000000
Binary files "a/kystudio/e2e/e2eCase/\350\256\276\347\275\256.xmind" and /dev/null differ
diff --git "a/kystudio/e2e/e2eCase/\351\241\271\347\233\256.xmind" "b/kystudio/e2e/e2eCase/\351\241\271\347\233\256.xmind"
deleted file mode 100644
index dc374a24db..0000000000
Binary files "a/kystudio/e2e/e2eCase/\351\241\271\347\233\256.xmind" and /dev/null differ
diff --git a/kystudio/e2e/package.json b/kystudio/e2e/package.json
deleted file mode 100644
index ed90d0624c..0000000000
--- a/kystudio/e2e/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "name": "kystudio_e2e",
-  "version": "1.0.0",
-  "description": "Next generation of Kylin by VUE",
-  "author": "luojie",
-  "private": true,
-  "scripts": {
-    "e2e": "npm run e2e:chrome && npm run e2e:firefox",
-    "e2e:chrome": "BROWSER_ENV=chrome mocha ./specs",
-    "e2e:chrome-debug": "BROWSER_ENV=chrome mocha ./specs --inspect-brk",
-    "e2e:firefox": "BROWSER_ENV=firefox mocha ./specs"
-  },
-  "dependencies": {
-    "chromedriver": "77.0.0",
-    "dotenv": "^8.2.0",
-    "geckodriver": "^1.19.1",
-    "mocha": "^7.1.1",
-    "selenium-webdriver": "^4.0.0-alpha.7"
-  },
-  "devDependencies": {},
-  "engines": {
-    "node": ">= 4.0.0",
-    "npm": ">= 3.0.0"
-  }
-}
diff --git a/kystudio/e2e/specs/clear/index.spec.js b/kystudio/e2e/specs/clear/index.spec.js
deleted file mode 100644
index 06e29c0d94..0000000000
--- a/kystudio/e2e/specs/clear/index.spec.js
+++ /dev/null
@@ -1,97 +0,0 @@
-const { Builder, By, until, Key } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout, delUser } = require('../utils/businessHelper')
-const { changeFormInput, clearFormInput } = require('../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  USERNAME_ADMIN,
-  PASSWORD_ADMIN,
-  PASSWORD_ADMIN_NEW,
-  PROJECT_NAME,
-  USERNAME_PROJECT_ADMIN,
-  USERNAME_PROJECT_MANAGEMENT,
-  USERNAME_PROJECT_OPERATION,
-  USERNAME_PROJECT_QUERY
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('系统管理员进入系统', async function () {
-  this.timeout(60000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('删除自动化测试创建的用户', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-    // 统一调用登录
-    await login(driver, USERNAME_ADMIN, PASSWORD_ADMIN_NEW);
-    await driver.sleep(2000)
-
-    await driver.findElement(By.css('.entry-admin')).click()
-    // await driver.sleep(1000)
-    await driver.wait(until.elementLocated(By.css('.el-menu-item .el-icon-ksd-table_admin')), 10000)
-    // 点击菜单 用户
-    await driver.findElement(By.css('.el-menu-item .el-icon-ksd-table_admin')).click()
-    await driver.sleep(2000)
-  })
-
-  it('删除项目 admin', async () => {
-    await delUser(driver, USERNAME_PROJECT_ADMIN, 2)
-    await driver.sleep(2000)
-  })
-
-  it('删除项目 management', async () => {
-    await delUser(driver, USERNAME_PROJECT_MANAGEMENT, 2)
-    await driver.sleep(2000)
-  })
-
-  it('删除项目 operation', async () => {
-    await delUser(driver, USERNAME_PROJECT_OPERATION, 2)
-    await driver.sleep(2000)
-  })
-
-  it('删除项目 query', async () => {
-    await delUser(driver, USERNAME_PROJECT_QUERY, 2)
-    await driver.sleep(2000)
-  })
-
-  /* it('删除模型', async () => {
-
-  }) */
-
-  it('删除项目', async () => {
-    // 点击菜单 项目
-    await driver.findElement(By.css('.el-menu-item .el-icon-ksd-project_list')).click()
-    await driver.sleep(2000)
-
-    await changeFormInput(driver, '.show-search-btn', PROJECT_NAME)
-    await driver.sleep(1000)
-
-    const actions = driver.actions({bridge: true})
-    await actions.click(await driver.findElement(By.css('.show-search-btn input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(2000)
-    await driver.findElement(By.css('.el-icon-ksd-table_others')).click()
-    
-    let moreBtnEl = await driver.findElement(By.css('.el-icon-ksd-table_others'))
-    let dropdownMenuId = await moreBtnEl.getAttribute('aria-controls')
-  
-    await driver.actions().move({ origin: moreBtnEl }).perform()
-    await driver.sleep(1000)
-
-    await driver.wait(until.elementLocated(By.id(dropdownMenuId)), 10000)
-    await driver.findElement(By.css(`ul#${dropdownMenuId} .el-dropdown-menu__item:nth-child(4)`)).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('div[aria-label=删除项目] .el-message-box__btns .el-button--primary'))), 10000)
-    await driver.findElement(By.css('div[aria-label=删除项目] .el-message-box__btns .el-button--primary')).click()
-    await driver.sleep(2000)
-  })
-})
diff --git a/kystudio/e2e/specs/e2e.env b/kystudio/e2e/specs/e2e.env
deleted file mode 100644
index 75c3c60cf9..0000000000
--- a/kystudio/e2e/specs/e2e.env
+++ /dev/null
@@ -1,37 +0,0 @@
-# Basic Configuration
-LAUNCH_URL=http://localhost:9090
-
-# Test User
-USERNAME_ADMIN=ADMIN
-PASSWORD_ADMIN=KYLIN
-PASSWORD_ADMIN_NEW=Qqq111,,,
-
-USERNAME_PROJECT_ADMIN=fe_it_project_admin
-PASSWORD_PROJECT_ADMIN=qqq111,,,
-
-USERNAME_PROJECT_MANAGEMENT=fe_it_project_management
-PASSWORD_PROJECT_MANAGEMENT=qqq111,,,
-
-USERNAME_PROJECT_OPERATION=fe_it_project_operation
-PASSWORD_PROJECT_OPERATION=qqq111,,,
-
-USERNAME_PROJECT_QUERY=fe_it_project_query
-PASSWORD_PROJECT_QUERY=qqq111,,,
-
-# Test Project
-PROJECT_NAME=learn_kylin_frontend_it
-
-# Test Model
-MODEL_NAME=FE_IT_AUTO_MODEL
-
-# dimensions
-
-# measure
-MEASURE1=M1
-MEASURE2=M2
-MEASURE3=M3
-MEASURE4=M4
-
-# CC
-CC1=CC1
-CC2=CC2
\ No newline at end of file
diff --git a/kystudio/e2e/specs/index.js b/kystudio/e2e/specs/index.js
deleted file mode 100644
index 6a87ad8c33..0000000000
--- a/kystudio/e2e/specs/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const fs = require('fs')
-const path = require('path')
-const dotenv = require('dotenv')
-
-const e2ePath = path.resolve('./specs/e2e.env')
-const e2ePathLocal = path.resolve('./specs/e2e.env.local')
-
-if (fs.existsSync(e2ePath)) {
-  dotenv.config({ path: e2ePath })
-}
-
-if (fs.existsSync(e2ePathLocal)) {
-  dotenv.config({ path: e2ePathLocal })
-}
-
-// require('./systemAdmin/login/login.spec')
-// require('./systemAdmin/logout/logout.spec')
-// 在系统 admin 的 case 中建项目、建模型、建项目的 4 个角色的用户
-require('./systemAdmin/happy_path/index.spec')
-// 分别用上一个 case 创建的角色进行登录
-// require('./projectAdmin/happy_path/index.spec')
-// require('./projectManagement/happy_path/index.spec')
-// require('./projectOperation/happy_path/index.spec')
-// require('./projectQuery/happy_path/index.spec')
-// 删除前面几个 case 中创建的 用户、模型、项目
-// require('./clear/index.spec')
diff --git a/kystudio/e2e/specs/projectAdmin/happy_path/index.spec.js b/kystudio/e2e/specs/projectAdmin/happy_path/index.spec.js
deleted file mode 100644
index d2bd7ab1ad..0000000000
--- a/kystudio/e2e/specs/projectAdmin/happy_path/index.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  PROJECT_NAME,
-  USERNAME_PROJECT_ADMIN,
-  PASSWORD_PROJECT_ADMIN
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('项目管理员', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('项目管理员登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-
-    // 统一调用登录
-    await login(driver, USERNAME_PROJECT_ADMIN, PASSWORD_PROJECT_ADMIN);
-    await driver.sleep(2000)
-
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_PROJECT_ADMIN)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/projectManagement/happy_path/index.spec.js b/kystudio/e2e/specs/projectManagement/happy_path/index.spec.js
deleted file mode 100644
index 957a33e740..0000000000
--- a/kystudio/e2e/specs/projectManagement/happy_path/index.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  PROJECT_NAME,
-  USERNAME_PROJECT_MANAGEMENT,
-  PASSWORD_PROJECT_MANAGEMENT
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('项目 management', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('项目 management 登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-
-    // 统一调用登录
-    await login(driver, USERNAME_PROJECT_MANAGEMENT, PASSWORD_PROJECT_MANAGEMENT);
-    await driver.sleep(2000)
-
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_PROJECT_MANAGEMENT)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/projectOperation/happy_path/index.spec.js b/kystudio/e2e/specs/projectOperation/happy_path/index.spec.js
deleted file mode 100644
index 8d588f9690..0000000000
--- a/kystudio/e2e/specs/projectOperation/happy_path/index.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  PROJECT_NAME,
-  USERNAME_PROJECT_OPERATION,
-  PASSWORD_PROJECT_OPERATION
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('项目 operation', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('项目 operation 登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-
-    // 统一调用登录
-    await login(driver, USERNAME_PROJECT_OPERATION, PASSWORD_PROJECT_OPERATION);
-    await driver.sleep(2000)
-
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_PROJECT_OPERATION)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/projectQuery/happy_path/index.spec.js b/kystudio/e2e/specs/projectQuery/happy_path/index.spec.js
deleted file mode 100644
index 8349b60c83..0000000000
--- a/kystudio/e2e/specs/projectQuery/happy_path/index.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { login, logout } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  PROJECT_NAME,
-  USERNAME_PROJECT_QUERY,
-  PASSWORD_PROJECT_QUERY
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('项目 operation', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('项目 operation 登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-
-    // 统一调用登录
-    await login(driver, USERNAME_PROJECT_QUERY, PASSWORD_PROJECT_QUERY);
-    await driver.sleep(2000)
-
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_PROJECT_QUERY)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/systemAdmin/happy_path/index.spec.js b/kystudio/e2e/specs/systemAdmin/happy_path/index.spec.js
deleted file mode 100644
index 87c5c5fe14..0000000000
--- a/kystudio/e2e/specs/systemAdmin/happy_path/index.spec.js
+++ /dev/null
@@ -1,415 +0,0 @@
-const { Builder, By, until, Key } = require('selenium-webdriver')
-const { login, logout, addTableLink, addMeasure } = require('../../utils/businessHelper')
-const { changeFormInput, changeFormTextarea, changeFormSelect, dragAndDrop } = require('../../utils/domHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  USERNAME_ADMIN,
-  PASSWORD_ADMIN,
-  PROJECT_NAME,
-  MODEL_NAME
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('系统管理员创建项目', async function () {
-  this.timeout(60000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect({ width: 1580, height: 828 })
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  // 修改默认密码
-  // it('修改默认密码', async () => {
-  //   // 统一调用登录
-  //   await login(driver, USERNAME_ADMIN, PASSWORD_ADMIN);
-  //   await driver.sleep(3000)
-
-  //   try {
-  //     await driver.wait(until.elementIsVisible(driver.findElement(By.css('.user-edit-modal'))), 10000)
-  //   } catch (e){
-  //     return true
-  //   }
-  //   // 修改密码的弹窗
-  //   changeFormInput(driver, '.user-edit-modal .el-dialog__body .js_oldPassword', PASSWORD_ADMIN)
-  //   changeFormInput(driver, '.user-edit-modal .el-dialog__body .js_newPassword', PASSWORD_ADMIN_NEW)
-  //   changeFormInput(driver, '.user-edit-modal .el-dialog__body .js_confirmPwd', PASSWORD_ADMIN_NEW)
-  //   await driver.sleep(1000)
-  //   await driver.findElement(By.css('.user-edit-modal .el-dialog__footer .el-button--primary')).click()
-  //   await driver.sleep(4000)
-  // })
-
-  // it('登出,让修改的密码生效', async () => {
-  //   // 执行登出,让修改后的账密状态更新
-  //   await logout(driver)
-  //   await driver.sleep(2000)
-  // })
-
-  // 创建项目
-  it('创建项目', async () => {
-    // 统一调用登录
-    await login(driver, USERNAME_ADMIN, PASSWORD_ADMIN)
-    try {
-      await driver.findElement(By.css('.linsencebox .el-dialog__footer .el-button:nth-child(2)')).click() // 防止有过期弹窗出现时,第一次点不不到添加项目按钮
-      await driver.sleep(1000)
-    } catch (e) {}
-    await driver.wait(until.elementLocated(By.css('.topbar .add-project-btn')), 3000)
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.topbar .add-project-btn')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.project-edit-modal'))), 10000)
-    changeFormInput(driver, '.project-edit-modal .js_projectname', PROJECT_NAME)
-    changeFormTextarea(driver, '.project-edit-modal .js_project_desc', 'this is it test auto create project')
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.project-edit-modal .el-dialog__footer .js_addproject_submit')).click()
-
-    // 接口有时候是 3 秒等待
-    await driver.sleep(3000)
-    // 添加完成后,进入的是数据源页面
-    // assert.equal(await driver.getCurrentUrl(), `${LAUNCH_URL}/#/studio/source`);
-    // await driver.sleep(2000)
-  })
-
-  // 加载数据源
-  it('加载数据源', async () => {
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.data-source-bar .btn-group .el-button--primary'))), 10000)
-    await driver.findElement(By.css('.data-source-bar .btn-group .el-button--primary')).click()
-    // until 弹窗出来后 点击 hive
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.data-srouce-modal'))), 10000)
-    await driver.findElement(By.css('.data-srouce-modal .source-new .datasouce .el-icon-ksd-hive')).click()
-    await driver.sleep(1000)
-
-    // 点击下一步按钮
-    await driver.findElement(By.css('.data-srouce-modal .el-dialog__footer .el-button--primary')).click()
-    await driver.sleep(3000)
-    // 搜索 ssb
-    // await changeFormInput(driver, '.source-hive .list .el-input', 'SSB')
-    // const actions = driver.actions({bridge: true})
-    // await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    // await driver.sleep(1000)
-    // 找到 ssb,点击选中所有
-    // await hoverOn(driver, By.css('.guide-ssb'))
-    // await driver.findElement(By.css('.guide-ssb .select-all')).click()
-    // 收起default(里面有SSB表)展开 ssb
-    // try {
-    //   await driver.findElement(By.css('.guide-default')).click()
-    //   await driver.sleep(1000)
-    // } catch (e) {}
-    // await driver.findElement(By.css('.guide-ssb')).click()
-    // await driver.sleep(1000)
-    // await driver.findElement(By.css('.ssb-more')).click()
-    // await driver.sleep(1000)
-    // 先搜索,再选中table SSB['CUSTOMER', 'DATES', 'PART', 'P_LINEORDER', 'SUPPLIER', 'LINEORDER']
-    const actions = driver.actions({bridge: true})
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.CUSTOMER')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.CUSTOMER')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.DATES')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.DATES')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.PART')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.PART')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.P_LINEORDER')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.P_LINEORDER')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.LINEORDER')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.LINEORDER')).click()
-    await driver.sleep(1000)
-    await changeFormInput(driver, '.source-hive .list .el-input', 'SSB.SUPPLIER')
-    await actions.click(await driver.findElement(By.css('.source-hive .list .el-input'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('table-load-SSB.SUPPLIER')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.data-srouce-modal .el-dialog__footer .el-button--primary')).click()
-    await driver.sleep(3000)
-    await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.data-srouce-modal'))))
-  })
-
-  // 设置默认数据库
-  it('配置默认数据库', async () => {
-    // 点击菜单设置
-    await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.data-srouce-modal'))), 20000)
-    await driver.findElement(By.css('.el-menu-item .el-icon-ksd-setting')).click()
-
-    // 点击高级设置的 tab
-    await driver.wait(until.elementLocated(By.id('tab-advanceSetting')), 3000)
-    await driver.findElement(By.id('tab-advanceSetting')).click()
-
-    // 选择 下拉里的 ssb
-    await driver.wait(until.elementLocated(By.css('.js_defautDB_block')), 3000)
-    await changeFormSelect(driver, '.js_defautDB_block .js_select', '.js_defautDB_select .el-select-dropdown__list', 2)
-    await driver.sleep(1000)
-    // 点击提交
-    await driver.findElement(By.css('#pane-advanceSetting .js_defautDB_block .block-foot .el-button--default')).click()
-    // 点击二次确认弹窗的按钮
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('div[aria-label=修改默认数据库]'))), 10000)
-    await driver.findElement(By.css('div[aria-label=修改默认数据库] .el-message-box__btns .el-button--primary')).click()
-    await driver.sleep(3000)
-  })
-  // 建模
-  it('在项目 PROJECT_NAME 下建模', async () => {
-    // 回到dashboard页面
-    // await driver.findElement(By.css('.entry-admin')).click()
-    // await driver.sleep(3000)
-    // 切换到 PROJECT_NAME 项目下
-    // await changeToCurProject(driver, PROJECT_NAME)
-    // await driver.sleep(2000)
-
-    // 点击跳转到模型页面
-    await driver.wait(until.elementLocated(By.id('studio')), 10000)
-    await driver.findElement(By.id('studio')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('studio')).findElement(By.css('.el-menu .el-menu-item:nth-child(2)')).click()
-    await driver.sleep(2000)
-
-    // 新建模型
-    await driver.wait(until.elementLocated(By.id('addModel')), 10000)
-    await driver.findElement(By.id('addModel')).findElement(By.css('.el-button:nth-child(1)')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.js_add-model'))))
-    await changeFormInput(driver, '.js_add-model .el-form-item:nth-child(1) .el-input', MODEL_NAME)
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.js_add-model .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.sleep(2000)
-    // 如果有引导遮罩,点击关闭
-    let mask = null
-    try {
-      mask = await driver.findElement(By.css('.model-guide-mask'))
-    } catch (e) {}
-    if (mask) {
-      await driver.findElement(By.css('.model-guide-mask .dim-meas-block .el-button')).click()
-      await driver.sleep(1000)
-    }
-
-    // 拖入事实表
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbp_lineorder', '.model-edit-outer', 800, 200)
-    await driver.sleep(1000)
-    // 切换事实表
-    await driver.findElement(By.css('.model-edit-outer .table-box .el-icon-ksd-table_setting')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.model-edit-outer .fast-action-box .switch')).click()
-    await driver.sleep(1000)
-
-    // 拖入lookup 表
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbdates', '.model-edit-outer', 400, 519)
-    await driver.sleep(1000)
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbcustomer', '.model-edit-outer', 650, 519)
-    await driver.sleep(1000)
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbsupplier', '.model-edit-outer', 900, 519)
-    await driver.sleep(1000)
-    await dragAndDrop(driver, '.model-edit-outer .el-tree .guide-ssbpart', '.model-edit-outer', 1150, 519)
-    await driver.sleep(1000)
-
-    // 连接表关系
-    await addTableLink(driver, '.js_p_lineorder', '.js_dates', 6, 1)
-    await addTableLink(driver, '.js_p_lineorder', '.js_customer', 3, 1)
-    await addTableLink(driver, '.js_p_lineorder', '.js_supplier', 5, 1)
-    await addTableLink(driver, '.js_p_lineorder', '.js_part', 4, 1)
-
-    // 批量选维度
-    await driver.findElement(By.css('.model-edit-outer .panel-dimension .el-icon-ksd-backup')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.dimension-modal'))))
-    // 添加维度
-    // 'P_LINEORDER.LO_ORDERDATE',
-    // 'P_LINEORDER.LO_CUSTKEY',
-    // 'P_LINEORDER.LO_SUPPKEY',
-    // 'P_LINEORDER.LO_PARTKEY',
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .el-table .guide-P_LINEORDERLO_ORDERDATE .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .el-table .guide-P_LINEORDERLO_CUSTKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .el-table .guide-P_LINEORDERLO_SUPPKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .el-table .guide-P_LINEORDERLO_PARTKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(1) .table-header')).click()
-    await driver.sleep(1000)
-    // 'DATES.D_DATEKEY',
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(2) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(2) .el-table .guide-DATESD_DATEKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(2) .table-header')).click()
-    await driver.sleep(1000)
-    // 'CUSTOMER.C_CUSTKEY',
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(3) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(3) .el-table .guide-CUSTOMERC_CUSTKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(3) .table-header')).click()
-    await driver.sleep(1000)
-    // 'SUPPLIER.S_SUPPKEY',
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(4) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(4) .el-table .guide-SUPPLIERS_SUPPKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(4) .table-header')).click()
-    await driver.sleep(1000)
-    // 'PART.P_PARTKEY'
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(5) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(5) .el-table .guide-PARTP_PARTKEY .el-checkbox')).click()
-    await driver.sleep(500)
-    await driver.findElement(By.css('.dimension-modal .ksd-mb-10:nth-child(5) .table-header')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.dimension-modal .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.dimension-modal'))))
-
-    // 添加度量
-    // [{
-    //   expression: 'SUM(column)',
-    //   parameter: 'P_LINEORDER.LO_REVENUE'
-    // }, {
-    //   expression: 'SUM(column)',
-    //   parameter: 'P_LINEORDER.LO_SUPPLYCOST'
-    // }, {
-    //   expression: 'SUM(column)',
-    //   parameter: 'P_LINEORDER.V_REVENUE'
-    // }, {
-    //   expression: 'COUNT_DISTINCT',
-    //   parameter: 'P_LINEORDER.LO_LINENUMBER'
-    // }]
-    await driver.findElement(By.css('.tool-icon-group .tool-icon:nth-child(1)')).click()
-    await driver.sleep(1000)
-    await addMeasure(driver, 'testMeasure1', 'SUM(column)', 'LO_REVENUE')
-    await addMeasure(driver, 'testMeasure2', 'SUM(column)', 'LO_SUPPLYCOST')
-    await addMeasure(driver, 'testMeasure3', 'SUM(column)', 'V_REVENUE')
-    await addMeasure(driver, 'testMeasure4', 'COUNT_DISTINCT', 'LO_LINENUMBER')
-
-    // 保存模型
-    await driver.findElement(By.css('.mode-edit-tabs .footer .el-button:nth-child(2)')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.model-partition-dialog'))))
-    await changeFormSelect(driver, '.model-partition-dialog .partition-column-format', '.js_partition-column-format .el-select-dropdown__list', 6)
-    await changeFormSelect(driver, '.model-partition-dialog .partition-column', '.js_partition-column .el-select-dropdown__list', 6)
-    await changeFormSelect(driver, '.model-partition-dialog .partition-column-format', '.js_partition-column-format .el-select-dropdown__list', 1)
-    await driver.findElement(By.css('.model-partition-dialog .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.model-partition-dialog'))))
-
-    // 跳转去模型list页面,并展开至添加聚合组tab
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.add-index-confirm-dialog'))))
-    await driver.findElement(By.css('.add-index-confirm-dialog .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.sleep(3000)
-  })
-
-  // 建索引
-  it('在项目 PROJECT_NAME 下的模型 MODEL_NAME 建索引', async () => {
-    // 如果有引导遮罩,点击忽略
-    let mask = null
-    try {
-      mask = await driver.findElement(By.css('.model-guide-mask'))
-    } catch (e) {}
-    if (mask) {
-      await driver.findElement(By.css('.model-guide-mask .index-block .btn-group .el-button:nth-child(1)')).click()
-      await driver.sleep(1000)
-    }
-    // // 临时处理:展开第一个模型
-    // await driver.findElement(By.css('.model_list_table .el-icon-caret-right')).click()
-    // await driver.sleep(1000)
-    // await driver.findElement(By.id('tab-third')).click()
-    // await driver.sleep(2000)
-
-    // 添加聚合组
-    await driver.findElement(By.css('.model-aggregate-view .el-icon-ksd-project_add')).click()
-    await driver.sleep(1000)
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.aggregate-modal'))))
-    // 包含维度
-    await driver.findElement(By.css('.aggregate-modal .add-includes-btn')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.edit-includes-dimensions'))))
-    await driver.findElement(By.css('.edit-includes-dimensions .table-header .el-checkbox')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.edit-includes-dimensions .el-dialog__footer .el-button:nth-child(2)')).click()
-    await driver.sleep(1000)
-    // 必需维度
-    await changeFormSelect(driver, '.aggregate-modal .mandatory-select', '.js_mandatory-select', 4)
-    await driver.findElement(By.css('.aggregate-modal')).click()
-    await driver.sleep(1000)
-    // 层级维度
-    await changeFormSelect(driver, '.aggregate-modal .hierarchy-select', '.js_hierarchy-select', [3, 7, 6])
-    await driver.findElement(By.css('.aggregate-modal')).click()
-    await driver.sleep(1000)
-    // 联合维度
-    await changeFormSelect(driver, '.aggregate-modal .joint-select', '.js_joint-select', [3, 2])
-    await driver.findElement(By.css('.aggregate-modal')).click()
-    await driver.sleep(1000)
-    // 保存聚合组
-    await driver.findElement(By.css('.aggregate-modal .dialog-footer .right .el-button:nth-child(3)')).click()
-    await driver.sleep(3000)
-    // 构建索引
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.model-build'))))
-    await driver.findElement(By.css('.model-build .el-icon-ksd-data_range_search')).click()
-    // await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.dialog-footer .el-button.is-disabled'))))
-    await driver.sleep(2000)
-    await driver.findElement(By.css('.model-build .dialog-footer .el-button:nth-child(2)')).click()
-    await driver.sleep(4000)
-    // 跳转到job页面
-    await driver.wait(until.elementLocated(By.id('monitor')), 10000)
-    await driver.findElement(By.id('monitor')).click()
-    await driver.findElement(By.id('monitor')).findElement(By.css('.el-menu .el-menu-item:nth-child(1)')).click()
-    await driver.sleep(2000)
-  })
-
-  // 查询
-  it('查询一条 sql', async () => {
-    // 点击跳转到模型页面
-    await driver.wait(until.elementLocated(By.id('query')), 10000)
-    await driver.findElement(By.id('query')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.id('query')).findElement(By.css('.el-menu .el-menu-item:nth-child(1)')).click()
-    await driver.sleep(2000)
-    await changeFormTextarea(driver, '.query_panel_box', 'select sum(lo_revenue) as revenue from ssb.lineorder left join ssb.dates on lo_orderdate = d_datekey where d_year = 1993 and lo_discount between 1 and 3 and lo_quantity < 25')
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.query_panel_box .operator .el-form-item:last-child .el-button')).click()
-    await driver.sleep(3000)
-  })
-
-  it('清除模型项目退出登录', async () => {
-    // 点击跳转到模型页面
-    await driver.wait(until.elementLocated(By.id('studio')), 10000)
-    await driver.findElement(By.id('studio')).findElement(By.css('.el-menu .el-menu-item:nth-child(2)')).click()
-    await driver.sleep(2000)
-    // 删除模型
-    await driver.findElement(By.css('.model_list_table .el-icon-ksd-table_others')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.specialDropdown .el-dropdown-menu__item:nth-child(7')).click()
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.el-message-box'))))
-    await driver.findElement(By.css('.el-message-box .el-message-box__btns .el-button:nth-child(2)')).click()
-    await driver.sleep(1000)
-    // 跳转系统管理页面
-    await driver.findElement(By.css('.entry-admin')).click()
-    await driver.sleep(4000)
-    // 搜索项目删除项目
-    await changeFormInput(driver, '.show-search-btn', PROJECT_NAME)
-    await driver.sleep(1000)
-    const actions = driver.actions({bridge: true})
-    await actions.click(await driver.findElement(By.css('.show-search-btn'))).sendKeys(Key.ENTER).perform()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.project-table .el-icon-ksd-table_others')).click()
-    await driver.sleep(1000)
-    await driver.findElement(By.css('.project-dropdown .el-dropdown-menu__item:nth-child(4)')).click()
-    await driver.sleep(1000)
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.el-message-box'))))
-    await driver.findElement(By.css('.el-message-box .el-message-box__btns .el-button:nth-child(2)')).click()
-    await driver.sleep(3000)
-    // 登出
-    await logout(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/systemAdmin/login/login.spec.js b/kystudio/e2e/specs/systemAdmin/login/login.spec.js
deleted file mode 100644
index d79d34aae2..0000000000
--- a/kystudio/e2e/specs/systemAdmin/login/login.spec.js
+++ /dev/null
@@ -1,126 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-// const { clearFormInput } = require('../../utils/domHelper')
-const { closeLicenseBox, waitingForPageClean } = require('../../utils/businessHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  USERNAME_ADMIN,
-  PASSWORD_ADMIN
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('系统管理员登录', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  // 异常用例
-  it('空的表单登录', async () => {
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1840, 828)
-
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-    await driver.sleep(1000)
-
-    const usernameString = await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) .el-form-item__error')).getText()
-    assert.equal(usernameString, '请输入用户名')
-
-    const passwordString = await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) .el-form-item__error')).getText()
-    assert.equal(passwordString, '请输入密码')
-  })
-
-  /* it('错误的用户名', async () => {
-    await waitingForPageClean(driver)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys('error_error_error')
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(2) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys('error_error_error')
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.errMsgBox'))), 10000)
-    const errorString = await driver.findElement(By.css('.errMsgBox .error-title')).getText()
-    assert.equal(errorString.includes('找不到用户'), true)
-
-    await driver.executeScript(`
-      var button = document.querySelector(".errMsgBox .dialog-footer .el-button--default")
-      button.dispatchEvent(new Event("click"))
-    `)
-  })
-
-  it('错误的密码一次', async () => {
-    await waitingForPageClean(driver)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(2) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys('error_error_error')
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.errMsgBox .error-title'))), 10000)
-    const errorString = await driver.findElement(By.css('.errMsgBox .error-title')).getText()
-    assert.equal(errorString.includes('用户名或密码错误。'), true)
-
-    await driver.executeScript(`
-      var button = document.querySelector(".errMsgBox .dialog-footer .el-button--default")
-      button.dispatchEvent(new Event("click"))
-    `)
-  })
-
-  it('错误的密码二次', async () => {
-    await waitingForPageClean(driver)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(2) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys('error_error_error')
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.errMsgBox .error-title'))), 10000)
-    const errorString = await driver.findElement(By.css('.errMsgBox .error-title')).getText()
-    assert.equal(errorString.includes('用户名或密码错误。'), true)
-
-    await driver.executeScript(`
-      var button = document.querySelector(".errMsgBox .dialog-footer .el-button--default")
-      button.dispatchEvent(new Event("click"))
-    `)
-  })
-
-  it('错误的密码三次', async () => {
-    await waitingForPageClean(driver)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(2) input')
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys('error_error_error')
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementIsVisible(driver.findElement(By.css('.errMsgBox .error-title'))), 10000)
-    const errorString = await driver.findElement(By.css('.errMsgBox .error-title')).getText()
-    assert.equal(errorString.includes('用户名或密码错误,请在30秒后再次重试'), true)
-
-    await driver.executeScript(`
-      var button = document.querySelector(".errMsgBox .dialog-footer .el-button--default")
-      button.dispatchEvent(new Event("click"))
-    `)
-  }) */
-
-  it('用户管理员登录', async () => {
-    // 前面的多次尝试错误,会锁住 30 秒,保险起见,等待 31 秒后进行登录
-    // await driver.sleep(31000)
-    await waitingForPageClean(driver)
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys(PASSWORD_ADMIN)
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    await driver.wait(until.elementLocated(By.css('.topbar .limit-user-name')), 10000)
-    assert.equal(await driver.findElement(By.css('.topbar .limit-user-name')).getText(), USERNAME_ADMIN)
-
-    await closeLicenseBox(driver)
-  })
-})
diff --git a/kystudio/e2e/specs/systemAdmin/logout/logout.spec.js b/kystudio/e2e/specs/systemAdmin/logout/logout.spec.js
deleted file mode 100644
index 08d44c738c..0000000000
--- a/kystudio/e2e/specs/systemAdmin/logout/logout.spec.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const { Builder, By, until } = require('selenium-webdriver')
-const assert = require('assert')
-const { clearFormInput } = require('../../utils/domHelper')
-const { closeLicenseBox, waitingForPageClean } = require('../../utils/businessHelper')
-
-const {
-  BROWSER_ENV,
-  LAUNCH_URL,
-  USERNAME_ADMIN,
-  PASSWORD_ADMIN
-} = process.env
-
-/* eslint-disable newline-per-chained-call */
-describe('登出', async function () {
-  this.timeout(30000)
-  let driver
-
-  before(async () => {
-    driver = await new Builder().forBrowser(BROWSER_ENV).build()
-  })
-
-  after(async () => {
-    await driver.quit()
-  })
-
-  it('用户管理员登出', async () => {
-    // 登录的用例在其他用例之前都要执行了
-    await driver.get(LAUNCH_URL)
-    await driver.manage().window().setRect(1440, 828)
-    await waitingForPageClean(driver)
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(USERNAME_ADMIN)
-    await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys(PASSWORD_ADMIN)
-    await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-    // 从登录页进来到登出需要等待下
-    await driver.sleep(3000)
-    const usernameEl = await driver.findElement(By.css('.topbar .user-msg-dropdown .el-dropdown-link'))
-    const dropdownMenuId = await usernameEl.getAttribute('aria-controls')
-    await driver.actions().move({ origin: usernameEl }).perform()
-    await driver.sleep(1000)
-
-    await driver.wait(until.elementLocated(By.id(dropdownMenuId)), 10000)
-    await driver.findElement(By.css(`ul#${dropdownMenuId} .el-dropdown-menu__item:nth-child(3)`)).click()
-
-    await driver.wait(until.elementLocated(By.css('.el-message-box')), 10000)
-    await driver.findElement(By.css(`.el-message-box .el-button--primary`)).click()
-
-    await driver.wait(until.elementLocated(By.css('.login-form')), 10000)
-  })
-})
diff --git a/kystudio/e2e/specs/utils/businessHelper.js b/kystudio/e2e/specs/utils/businessHelper.js
deleted file mode 100644
index b5c086ab75..0000000000
--- a/kystudio/e2e/specs/utils/businessHelper.js
+++ /dev/null
@@ -1,216 +0,0 @@
-const { until, By, Key } = require('selenium-webdriver')
-const { waitingForStable, clearFormInput, changeFormInput, changeFormSelect, dragAndDrop } = require('../utils/domHelper')
-
-exports.closeLicenseBox = async function closeLicenseBox (driver) {
-  try {
-    await driver.findElement(By.css('.el-dialog__wrapper.linsencebox')).click()
-  } catch (e) {}
-}
-
-exports.waitingForPageClean = async function waitingForPageClean (driver) {
-  try {
-    const messageBoxWrappers = await driver.findElements(By.css('.el-message-box__wrapper'))
-    for (const messageBoxWrapper of messageBoxWrappers) {
-      try {
-        await driver.wait(until.elementIsNotVisible(messageBoxWrapper), 10000)
-      } catch (e) {}
-    }
-  } catch (e) {}
-
-  try {
-    const messageBoxWrappers = await driver.findElements(By.css('.el-dialog__wrapper'))
-    for (const messageBoxWrapper of messageBoxWrappers) {
-      try {
-        await driver.wait(until.elementIsNotVisible(messageBoxWrapper), 10000)
-      } catch (e) {}
-    }
-  } catch (e) {}
-}
-
-// 封装的登录
-exports.login = async function login(driver, username, password) {
-  await driver.wait(until.elementLocated(By.css('.login-form .el-button--primary')), 10000)
-  await driver.findElement(By.css('.ke-it-cn')).click()
-  // 浏览器会自动填入 admin,所以要先置空用户名的输入框
-  await clearFormInput(driver, '.login-form .input_group .el-form-item:nth-child(1) input')
-  await driver.sleep(2000)
-  await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(1) input')).sendKeys(username)
-  await driver.findElement(By.css('.login-form .input_group .el-form-item:nth-child(2) input')).sendKeys(password)
-  await driver.findElement(By.css('.login-form .el-button--primary')).click()
-
-  await driver.wait(until.elementLocated(By.css('.topbar .limit-user-name')), 10000)
-}
-
-// 封装的登出
-exports.logout = async function logout(driver) {
-  const usernameEl = await driver.findElement(By.css('.topbar .user-msg-dropdown .el-dropdown-link'))
-  const dropdownMenuId = await usernameEl.getAttribute('aria-controls')
-  await driver.actions().move({ origin: usernameEl }).perform()
-  await driver.sleep(1000)
-
-  await driver.wait(until.elementLocated(By.id(dropdownMenuId)), 10000)
-  await driver.findElement(By.css(`ul#${dropdownMenuId} .el-dropdown-menu__item:nth-child(3)`)).click()
-
-  await driver.wait(until.elementLocated(By.css('.el-message-box')), 10000)
-  await driver.findElement(By.css(`.el-message-box .el-button--primary`)).click()
-
-  await driver.wait(until.elementLocated(By.css('.login-form')), 10000)
-}
-
-exports.addUser = async function addUser (driver, username, pwd) {
-  await driver.sleep(2000)
-  await driver.findElement(By.css('.security-user .el-row .el-button--primary')).click()
-  await driver.sleep(1000)
-
-  changeFormInput(driver, '.user-edit-modal .js_username', username)
-  await driver.sleep(1000)
-  changeFormInput(driver, '.user-edit-modal .js_password', pwd)
-  await driver.sleep(1000)
-  changeFormInput(driver, '.user-edit-modal .js_confirmPwd', pwd)
-  await driver.sleep(1000)
-  await driver.findElement(By.css('.user-edit-modal .el-dialog__footer .el-button--primary')).click()
-  await driver.sleep(5000)
-}
-
-exports.delUser = async function delUser (driver, username, idx) {
-  // 先清空搜索
-  await clearFormInput(driver, '.show-search-btn input')
-  await driver.sleep(1000)
-
-  // 精确搜索想要删除的用户,保证列表只有一条记录
-  await changeFormInput(driver, '.show-search-btn', username)
-  await driver.sleep(1000)
-
-  const actions = driver.actions({bridge: true})
-  // 执行回车搜索
-  await actions.click(await driver.findElement(By.css('.show-search-btn input'))).sendKeys(Key.ENTER).perform()
-
-  await driver.sleep(2000)
-  // 点击右侧更多按钮
-  await driver.findElement(By.css('.el-icon-ksd-table_others')).click()
-  let moreBtnEl = await driver.findElement(By.css('.el-icon-ksd-table_others'))
-  // 更多按钮上的 aria-controls 属性对应的就是 dropdown 的下拉 div 的id
-  let dropdownMenuId = await moreBtnEl.getAttribute('aria-controls')
-  
-  await driver.actions().move({ origin: moreBtnEl }).perform()
-  await driver.sleep(1000)
-
-  await driver.wait(until.elementLocated(By.id(dropdownMenuId)), 10000)
-  await driver.findElement(By.css(`ul#${dropdownMenuId} .el-dropdown-menu__item:nth-child(${idx})`)).click()
-
-  await driver.wait(until.elementIsVisible(driver.findElement(By.css('div[aria-label=删除用户] .el-message-box__btns .el-button--primary'))), 10000)
-  await driver.findElement(By.css('div[aria-label=删除用户] .el-message-box__btns .el-button--primary')).click()
-  await driver.sleep(2000)
-}
-
-exports.searchCurProject = async function searchCurProject (driver, projectname) {
-  await changeFormInput(driver, '#project-list .show-search-btn', projectname)
-  await driver.sleep(1000)
-
-  const actions = driver.actions({bridge: true})
-  // 执行回车搜索
-  await actions.click(await driver.findElement(By.css('#project-list .show-search-btn input'))).sendKeys(Key.ENTER).perform()
-  await driver.sleep(2000)
-}
-
-exports.setUserToProject = async function setUserToProject (driver, username, lineIdx, typeIdx) {
-  // 选 principal
-  const userSel = `.author_dialog .user-group-select:nth-child(${lineIdx}) .user-select`
-  await changeFormSelect(driver, userSel, `.js_principal${lineIdx - 2}`, 1)
-  await driver.sleep(1000)
-
-  // 选具体的人,需要先搜这个人,然后匹配出下拉第几位
-  const user = `.author_dialog .user-group-select:nth-child(${lineIdx}) .name-select${lineIdx - 2}`
-  await changeFormInput(driver, user, username)
-  await driver.sleep(1000)
-  let userIdx = 0
-  let userList = await driver.findElements(By.css(`.js_author-select${lineIdx - 2} .el-select-dropdown__item`))
-  for (let i = 0; i < userList.length; i++) {
-    let item = userList[i]
-    let text = await item.getText()
-    if (text === username) {
-      userIdx = i
-      break
-    }
-  }
-  await changeFormSelect(driver, user, `.js_author-select${lineIdx - 2}`, userIdx + 1, true)
-  await driver.sleep(1000)
-
-  // 选具体的权限
-  const typeSel = `.author_dialog .user-group-select:nth-child(${lineIdx}) .type-select${lineIdx - 2}`
-  await changeFormSelect(driver, typeSel, `.js_access_type_sel${lineIdx - 2}`, typeIdx)
-  await driver.sleep(1000)
-}
-
-exports.changeToCurProject = async function changeToCurProject (driver, projectName) {
-  const projectSelect = '.topbar .project_select'
-  // await clearFormInput(driver, `${projectSelect} input`)
-  // await changeFormInput(driver, projectSelect, projectName)
-  await driver.findElement(By.css(`${projectSelect} .el-input`)).click()
-  await driver.sleep(1000)
-  let projectIdx = 0
-  let projectList = await driver.findElements(By.css(`.project-select_dropdown .el-select-dropdown__item`))
-  for (let i = 0; i < projectList.length; i++) {
-    let item = projectList[i]
-    let text = await item.getText()
-    if (text === projectName) {
-      projectIdx = i
-      break
-    }
-  }
-  await changeFormSelect(driver, projectSelect, '.project-select_dropdown', projectIdx + 1, true)
-  await driver.sleep(1000)
-}
-
-exports.addTableLink = async function addTableLink (driver, fTable, pTable, fColumnIdx, pColumnIdx) {
-  await dragAndDrop(driver, `.model-edit-outer ${fTable} .column-list-box ul li:nth-child(1)`, `.model-edit-outer ${pTable} .column-list-box`)
-  await driver.wait(until.elementIsVisible(driver.findElement(By.css('.links-dialog'))))
-  // 选择SSB.P_LINEORDER LEFT join SSB.DATES, LO_ORDERDATE = D_DATEKEY
-  await changeFormSelect(driver, '.links-dialog .link-type', '.js_link-type .el-select-dropdown__list', 2)
-  await changeFormSelect(driver, '.links-dialog .foreign-select', '.js_foreign-select .el-select-dropdown__list', fColumnIdx)
-  await changeFormSelect(driver, '.links-dialog .join-type', '.js_join-type .el-select-dropdown__list', 1)
-  await changeFormSelect(driver, '.links-dialog .primary-select', '.js_primary-select .el-select-dropdown__list', pColumnIdx)
-  await driver.findElement(By.css('.links-dialog .el-dialog__footer .el-button:nth-child(2)')).click()
-  await driver.sleep(1000)
-}
-
-exports.addMeasure = async function addMeasure (driver, measureName, expression, parameter) {
-  await driver.findElement(By.css('.model-edit-outer .panel-measure .el-icon-ksd-project_add')).click()
-  await driver.wait(until.elementIsVisible(driver.findElement(By.css('.add-measure-modal'))))
-  await changeFormInput(driver, '.measure-name-input', measureName)
-
-  const expressionSelect = '.add-measure-modal .measure-expression-select'
-  await driver.findElement(By.css(expressionSelect + ' .el-input')).click()
-  await driver.sleep(1000)
-  let expressionIdx = 0
-  let expressionList = await driver.findElements(By.css(`.js_measure-expression .el-select-dropdown__item`))
-  for (let i = 0; i < expressionList.length; i++) {
-    let item = expressionList[i]
-    let text = await item.getText()
-    if (text === expression) {
-      expressionIdx = i
-      break
-    }
-  }
-  await changeFormSelect(driver, expressionSelect, '.js_measure-expression', expressionIdx + 1, true)
-  await driver.sleep(1000)
-
-  const parameterSelect = '.add-measure-modal .parameter-select'
-  await driver.findElement(By.css(parameterSelect + ' .el-input')).click()
-  await driver.sleep(1000)
-  let parameterIdx = 0
-  let parameterList = await driver.findElements(By.css(`.js_parameter-select .el-select-dropdown__item`))
-  for (let i = 0; i < parameterList.length; i++) {
-    let item = parameterList[i]
-    let text = await item.getText()
-    if (text.indexOf(parameter) !== -1) {
-      parameterIdx = i
-      break
-    }
-  }
-  await changeFormSelect(driver, parameterSelect, '.js_parameter-select', parameterIdx + 1, true)
-  await driver.sleep(1000)
-
-  await driver.findElement(By.css('.add-measure-modal  .el-dialog__footer .el-button:nth-child(2)')).click()
-  await driver.wait(until.elementIsNotVisible(driver.findElement(By.css('.add-measure-modal '))))
-}
\ No newline at end of file
diff --git a/kystudio/e2e/specs/utils/domHelper.js b/kystudio/e2e/specs/utils/domHelper.js
deleted file mode 100644
index b74076045e..0000000000
--- a/kystudio/e2e/specs/utils/domHelper.js
+++ /dev/null
@@ -1,306 +0,0 @@
-const { By, until } = require('selenium-webdriver');
-
-/**
- * Hover在某个元素上
- * @param {WebDriver} driver WebDriver对象
- * @param {Locator} locator Hover元素的选择器
- */
-async function hoverOn(driver, locator) {
-  try {
-    await driver.wait(until.elementLocated(locator), 1000);
-  } catch (e) {}
-
-  const el = await driver.findElement(locator);
-  await driver.actions().move({ origin: el }).perform();
-}
-
-/**
- * 等待页面上所有的对话框和消息框消失
- * @param {WebDriver} driver WebDriver对象
- */
-async function waitingForPageClean(driver) {
-  try {
-    const messageBoxWrappers = await driver.findElements(By.css('.el-message-box__wrapper'));
-    for (const messageBoxWrapper of messageBoxWrappers) {
-      try {
-        await driver.wait(until.elementIsNotVisible(messageBoxWrapper), 1000);
-      } catch (e) {}
-    }
-  } catch (e) {}
-
-  try {
-    const dialogWrappers = await driver.findElements(By.css('.el-dialog__wrapper'));
-    for (const dialogWrapper of dialogWrappers) {
-      try {
-        await driver.wait(until.elementIsNotVisible(dialogWrapper), 1000);
-      } catch (e) {}
-    }
-  } catch (e) {}
-}
-
-/**
- * 等待页面稳定500ms
- * @param {WebDriver} driver WebDriver对象
- */
-async function waitingForStable(driver) {
-  await driver.sleep(500);
-}
-
-/**
- * Author: jie.luo
- * 等待容器的loading消失
- * @param {WebDriver} driver WebDriver对象
- * @param {String} loadingParentClass loading容器类字符串
- */
-async function waitingForLoading(driver, loadingParentClass) {
-  try {
-    await driver.wait(until.elementLocated(By.css(`${loadingParentClass} > div > div > div.el-loading-spinner`)), 1000);
-  } catch (e) {}
-  try {
-    await driver.wait(until.stalenessOf(await driver.findElement(By.css(`${loadingParentClass} > div > div > div.el-loading-spinner`))), 1000);
-  } catch (e) {}
-}
-
-/**
- * Author: jie.luo
- * JS辅助:清除表单输入框的值
- * @param {WebDriver} driver WebDriver对象
- * @param {String} selector 输入框的选择器字符串
- */
-async function clearFormInput(driver, selector) {
-  await driver.executeScript(`
-    var input = document.querySelector("${selector}");
-    input.value = "";
-    // dispatchEvent触发的是原生的event,不是react event。此处有待出解决方案。
-    // input.dispatchEvent(new Event("change"));
-  `);
-}
-
-/**
- * JS辅助:在浏览器端打印内容
- * @param {WebDriver} driver WebDriver对象
- * @param  {...any} args 打印内容
- */
-async function logInBrowser(driver, ...args) {
-  const messages = args.map(arg => {
-    switch (typeof arg) {
-      case 'object': return `JSON.parse(JSON.stringify(${arg}))`;
-      case 'string': return `'${arg}'`;
-      default: return arg.toString();
-    }
-  });
-  const scripts = messages.join(', ');
-  await driver.executeScript(`
-    console.log(${scripts});
-  `);
-}
-
-/**
- * JS辅助:在浏览器端监听打印鼠标按下、移动、抬起事件
- * @param {WebDriver} driver WebDriver对象
- */
-async function traceMouseEvents(driver) {
-  await driver.executeScript(`
-    try {
-      if (!handleMouseDown) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseDown = function handleMouseDown(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    try {
-      if (!handleMouseMove) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseMove = function handleMouseMove(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    try {
-      if (!handleMouseUp) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseUp = function handleMouseUp(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    window.removeEventListener('mousedown', handleMouseDown);
-    window.removeEventListener('mousemove', handleMouseMove);
-    window.removeEventListener('mouseup', handleMouseUp);
-    window.addEventListener('mousedown', handleMouseDown);
-    window.addEventListener('mousemove', handleMouseMove);
-    window.addEventListener('mouseup', handleMouseUp);
-  `);
-}
-
-/**
- * JS辅助:在浏览器端停止监听鼠标按下、移动、抬起事件
- * @param {WebDriver} driver WebDriver对象
- */
-async function stopMouseEvents(driver) {
-  await driver.executeScript(`
-    try {
-      if (!handleMouseDown) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseDown = function handleMouseDown(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    try {
-      if (!handleMouseMove) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseMove = function handleMouseMove(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    try {
-      if (!handleMouseUp) {
-        var handleMouseDown = function handleMouseDown(e) {
-          console.log('mousedown', e.clientX, e.clientY);
-        }
-      }
-    } catch (e) {
-      var handleMouseUp = function handleMouseUp(e) {
-        console.log('mousedown', e.clientX, e.clientY);
-      }
-    }
-    window.removeEventListener('mousedown', handleMouseDown);
-    window.removeEventListener('mousemove', handleMouseMove);
-    window.removeEventListener('mouseup', handleMouseUp);
-  `);
-}
-
-/**
- * JS辅助:拖拽目标元素放置在容器上
- * @param {WebDriver} driver WebDriver对象
- * @param {String} dragSelector 拖拽元素的选择器字符串
- * @param {String} dropSelector 放置拖拽元素容器的选择器字符串
- */
-async function dragAndDrop(driver, dragSelector, dropSelector, clientX = 0, clientY = 0) {
-  await driver.executeScript(`
-    function customEvent(typeOfEvent, x, y) {
-      var event = document.createEvent("CustomEvent");
-      event.initCustomEvent(typeOfEvent, true, true, null);
-      event.dataTransfer = {
-          data: {},
-          setData: function (key, value) {
-              this.data[key] = value;
-          },
-          getData: function (key) {
-              return this.data[key];
-          }
-      };
-      event.clientX = x;
-      event.clientY = y;
-      return event;
-    }
-    function dispatchEvent(element, event, transferData) {
-      if (transferData !== undefined) {
-          event.dataTransfer = transferData;
-      }
-      if (element.dispatchEvent) {
-          element.dispatchEvent(event);
-      } else if (element.fireEvent) {
-          element.fireEvent("on" + event.type, event);
-      }
-    }
-    (function() {
-      var dragEl = document.querySelector('${dragSelector}');
-      var dropEl = document.querySelector('${dropSelector}');
-      var dragStartEvent = customEvent('dragstart');
-      dispatchEvent(dragEl, dragStartEvent);
-      var dropEvent = customEvent('drop', ${clientX}, ${clientY});
-      dispatchEvent(dropEl, dropEvent, dragStartEvent.dataTransfer);
-      var dragEndEvent = customEvent('dragend');
-      dispatchEvent(dragEl, dragEndEvent, dropEvent.dataTransfer);
-    })()
-  `);
-}
-
-async function changeFormSelect(driver, selector, popoverSelector, optionIdx, isFilter) {
-  if (!isFilter) {
-    try {
-      await driver.wait(until.elementLocated(By.css(`${selector} .el-input`)), 10000);
-    } catch (e) {}
-    await driver.findElement(By.css(`${selector} .el-input`)).click();
-    await driver.sleep(1000)
-  }
-  if (optionIdx instanceof Array) {
-    for (const idx of optionIdx) {
-      await driver.wait(until.elementIsVisible(await driver.findElement(By.css(`${popoverSelector} .el-select-dropdown__item:nth-child(${idx})`))), 1000);
-      await driver.findElement(By.css(`${popoverSelector} .el-select-dropdown__item:nth-child(${idx})`)).click();
-    }
-    try {
-      await driver.findElement(By.css(`${popoverSelector} .el-kylin-more`)).click();
-    } catch (e) {}
-  } else {
-    await driver.wait(until.elementIsVisible(await driver.findElement(By.css(`${popoverSelector} .el-select-dropdown__item:nth-child(${optionIdx})`))), 2000);
-    await driver.findElement(By.css(`${popoverSelector} .el-select-dropdown__item:nth-child(${optionIdx})`)).click();
-  }
-}
-
-async function changeFormInput(driver, selector, value) {
-  try {
-    await driver.wait(until.elementLocated(By.css(`${selector} input`)), 1000);
-  } catch (e) {}
-  await clearFormInput(driver, `${selector} input`);
-  await driver.findElement(By.css(`${selector} input`)).sendKeys(value);
-}
-
-async function changeFormTextarea(driver, selector, value) {
-  try {
-    await driver.wait(until.elementLocated(By.css(`${selector} textarea`)), 1000);
-  } catch (e) {}
-  await clearFormInput(driver, `${selector} textarea`);
-  await driver.findElement(By.css(`${selector} textarea`)).sendKeys(value);
-}
-
-async function changeFormCascader(driver, selector, optionsIdx) {
-  try {
-    await driver.wait(until.elementLocated(By.css(`${selector} input`)), 1000);
-  } catch (e) {}
-  await driver.findElement(By.css(`${selector} input`)).click();
-
-  for (let i = 0; i < optionsIdx.length; i += 1) {
-    const optionIdx = optionsIdx[i];
-    try {
-      await driver.sleep(1000);
-      await driver.wait(until.elementLocated(By.css(`${selector} .el-cascader-menu:nth-child(${i + 1}) .el-cascader-menu__item:nth-child(${optionIdx})`)), 1000);
-    } catch (e) {}
-    await driver.findElement(By.css(`${selector} .el-cascader-menu:nth-child(${i + 1}) .el-cascader-menu__item:nth-child(${optionIdx})`)).click();
-  }
-}
-
-exports.waitingForLoading = waitingForLoading;
-exports.waitingForStable = waitingForStable;
-exports.waitingForPageClean = waitingForPageClean;
-
-exports.hoverOn = hoverOn;
-exports.dragAndDrop = dragAndDrop;
-exports.clearFormInput = clearFormInput;
-exports.changeFormInput = changeFormInput;
-exports.changeFormTextarea = changeFormTextarea;
-exports.changeFormSelect = changeFormSelect;
-exports.changeFormCascader = changeFormCascader;
-
-exports.logInBrowser = logInBrowser;
-exports.traceMouseEvents = traceMouseEvents;
-exports.stopMouseEvents = stopMouseEvents;
\ No newline at end of file
diff --git a/kystudio/e2e/specs/utils/index.js b/kystudio/e2e/specs/utils/index.js
deleted file mode 100644
index db080634af..0000000000
--- a/kystudio/e2e/specs/utils/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-exports.domHelper = require('./domHelper')
-exports.businessHelper = require('./businessHelper')
diff --git a/pom.xml b/pom.xml
index d76f42a099..90135eb7ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,18 +22,70 @@
     <groupId>org.apache.kylin</groupId>
     <artifactId>kylin</artifactId>
     <packaging>pom</packaging>
-    <version>5.0.0-SNAPSHOT</version>
+    <version>5.0.0-alpha-SNAPSHOT</version>
 
-    <name>Apache Kylin 5</name>
+    <name>Apache Kylin</name>
     <url>http://kylin.apache.org</url>
     <inceptionYear>2016</inceptionYear>
-    <description>Apache Kylin 5</description>
+    <description>Apache Kylin</description>
 
     <organization>
         <name>Apache</name>
         <url>http://kylin.apache.org</url>
     </organization>
 
+    <scm>
+        <connection>scm:git:git://github.com/apache/kylin.git</connection>
+        <developerConnection>scm:git:ssh://git@github.com/apache/kylin.git
+        </developerConnection>
+        <url>https://github.com/apache/kylin</url>
+        <tag>HEAD</tag>
+    </scm>
+
+    <issueManagement>
+        <system>JIRA</system>
+        <url>https://issues.apache.org/jira/browse/KYLIN</url>
+    </issueManagement>
+
+
+    <mailingLists>
+        <mailingList>
+            <name>kylin-user</name>
+            <subscribe>user-subscribe@kylin.apache.org</subscribe>
+            <unsubscribe>user-unsubscribe@kylin.apache.org</unsubscribe>
+            <post>user@kylin.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/kylin-user/</archive>
+        </mailingList>
+        <mailingList>
+            <name>kylin-dev</name>
+            <subscribe>dev-subscribe@kylin.apache.org</subscribe>
+            <unsubscribe>dev-unsubscribe@kylin.apache.org</unsubscribe>
+            <post>dev@kylin.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/kylin-dev/</archive>
+        </mailingList>
+        <mailingList>
+            <name>kylin-issues</name>
+            <subscribe>issues-subscribe@kylin.apache.org</subscribe>
+            <unsubscribe>issues-unsubscribe@kylin.apache.org</unsubscribe>
+            <post>issues@kylin.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/kylin-issues/</archive>
+        </mailingList>
+        <mailingList>
+            <name>kylin-commits</name>
+            <subscribe>commits-subscribe@kylin.apache.org</subscribe>
+            <unsubscribe>commits-unsubscribe@kylin.apache.org</unsubscribe>
+            <post>commits@kylin.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/kylin-commits/</archive>
+        </mailingList>
+    </mailingLists>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+
     <properties>
         <!-- General Properties -->
         <javaVersion>1.8</javaVersion>
@@ -3507,5 +3559,261 @@
                 </repository>
             </repositories>
         </profile>
+        <profile>
+            <!-- This profile adds/overrides few features of the 'apache-release'
+                 profile in the parent pom. -->
+            <id>apache-release</id>
+            <activation>
+                <property>
+                    <name>pre-commit</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                        <configuration>
+                            <skip>false</skip>
+                        </configuration>
+                    </plugin>
+                    <!-- Override the parent assembly execution to customize the assembly
+                        descriptor and final name. -->
+                    <plugin>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>source-release-assembly</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <configuration>
+                                    <tarLongFileMode>posix</tarLongFileMode>
+                                    <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
+                                    <appendAssemblyId>true</appendAssemblyId>
+                                    <descriptors>
+                                        <descriptor>
+                                            assembly/src/main/config/assemblies/source-assembly.xml
+                                        </descriptor>
+                                    </descriptors>
+                                    <finalName>apache-kylin-${project.version}</finalName>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                    <!-- Apache-RAT checks for files without headers.
+                         If run on a messy developer's sandbox, it will fail.
+                         This serves as a reminder to only build a release in a clean
+                         sandbox! -->
+                    <plugin>
+                        <groupId>org.apache.rat</groupId>
+                        <artifactId>apache-rat-plugin</artifactId>
+                        <configuration>
+                            <!-- Used to print file with unapproved licenses in project to stand output -->
+                            <consoleOutput>true</consoleOutput>
+
+                            <!-- Exclude files/folders for apache release -->
+                            <excludes>
+                                <exclude>**/*.jj</exclude>
+
+                                <exclude>DEPENDENCIES</exclude>
+                                <exclude>.settings/**</exclude>
+                                <exclude>**/LICENSE*</exclude>
+                                <!-- Local git repo -->
+                                <exclude>.git/**</exclude>
+                                <exclude>.gitconfig</exclude>
+                                <!-- IDE files -->
+                                <exclude>.idea/**</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/.settings/**</exclude>
+
+                                <!-- image files constitute images required for documentation. .pptx contain the sources for images -->
+                                <exclude>**/*.png</exclude>
+                                <exclude>**/*.jpg</exclude>
+                                <exclude>**/*.gif</exclude>
+                                <exclude>**/*.ico</exclude>
+                                <exclude>**/*.svg</exclude>
+
+                                <!--Test Data-->
+                                <exclude>**/src/test/resources/**</exclude>
+                                <exclude>src/examples/sample_cube/template/**</exclude>
+                                <exclude>src/examples/test_case_data/localmeta/**</exclude>
+                                <exclude>src/examples/test_case_data/parquet_test/**</exclude>
+                                <exclude>**/src/spark-project/engine-spark/metastore_db/db.lck</exclude>
+                                <exclude>**/src/spark-project/engine-spark/metastore_db/service.properties</exclude>
+
+                                <!-- generated files -->
+                                <exclude>**/target/**</exclude>
+                                <exclude>src/examples/test_data/**</exclude>
+                                <exclude>lib/**</exclude>
+                                <exclude>dist/**</exclude>
+                                <exclude>**/dependency-reduced-pom.xml</exclude>
+
+                                <!-- text files without comments -->
+                                <exclude>**/*.csv</exclude>
+                                <exclude>**/*.json</exclude>
+                                <exclude>**/*.json.bad</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>**/*.spec</exclude>
+                                <exclude>**/*.acl</exclude>
+
+                                <!-- binary files -->
+                                <exclude>**/*.dict</exclude>
+                                <exclude>**/*.dic</exclude>
+                                <exclude>**/*.snapshot</exclude>
+                                <exclude>**/*.pdf</exclude>
+                                <exclude>**/*.docx</exclude>
+                                <exclude>**/*.doc</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/.checkstyle</exclude>
+                                <exclude>**/*.eot</exclude>
+                                <exclude>**/*.ttf</exclude>
+                                <exclude>**/*.woff</exclude>
+                                <exclude>**/*.DDLCheck</exclude>
+                                <exclude>**/*.factories</exclude>
+
+                                <!-- Kylin's website content -->
+                                <exclude>**/.sass-cache/**</exclude>
+
+                                <!-- tomcat package -->
+                                <exclude>tomcat/**</exclude>
+
+                                <!-- front end libary and generated files -->
+                                <exclude>kystudio/**/*.js</exclude>
+                                <exclude>kystudio/node_modules/**</exclude>
+                                <exclude>kystudio/dist/**</exclude>
+                                <exclude>kystudio/**/*.vue</exclude>
+                                <exclude>kystudio/**/*.less</exclude>
+                                <exclude>kystudio/static/**</exclude>
+                                <exclude>kystudio/.babelrc</exclude>
+                                <exclude>kystudio/.editorconfig</exclude>
+                                <exclude>kystudio/.eslintignore</exclude>
+                                <exclude>kystudio/.eslintrc.js</exclude>
+                                <exclude>kystudio/index.html</exclude>
+                                <exclude>kystudio/jsconfig.json</exclude>
+                                <exclude>kystudio/package.json</exclude>
+                                <exclude>kystudio/README.md</exclude>
+
+                                <!-- json configuration file-->
+                                <exclude>webapp/.bowerrc</exclude>
+                                <exclude>webapp/.jshintrc</exclude>
+                                <!-- generated dict files -->
+                                <exclude>dictionary/metastore_db/**</exclude>
+
+                                <!-- MIT license -->
+                                <exclude>webapp/app/css/AdminLTE.css</exclude>
+                                <exclude>webapp/app/css/messenger-theme-ice.css</exclude>
+                                <exclude>webapp/app/js/directives/kylin_abn_tree_directive.js</exclude>
+                                <exclude>webapp/app/js/directives/angular-tree-control.js</exclude>
+                                <exclude>webapp/app/js/directives/datetimepicker.js</exclude>
+                                <exclude>webapp/app/js/directives/select.js</exclude>
+                                <exclude>webapp/app/js/directives/ui-grid.js</exclude>
+
+                                <!-- BSD license -->
+                                <exclude>webapp/app/js/utils/liquidFillGauge.js</exclude>
+
+                                <!-- Debug-->
+                                <exclude>dev-support/**/*.env</exclude>
+                                <exclude>dev-support/**/*.yml</exclude>
+                                <exclude>build/sample_project/template/UUID</exclude>
+                                <exclude>build/release/**/*.tmpl</exclude>
+                                <exclude>build/deploy/grafana/custom.ini</exclude>
+
+                                <!--configuration file -->
+                                <exclude>webapp/app/routes.json</exclude>
+                                <exclude>webapp/bower.json</exclude>
+                                <exclude>webapp/grunt.json</exclude>
+                                <exclude>webapp/package.json</exclude>
+                                <exclude>src/license/third-party-file.ftl</exclude>
+                                <exclude>build/spark/**</exclude>
+                                <exclude>lombok.config</exclude>
+
+                                <!-- logs -->
+                                <exclude>**/*.log</exclude>
+                                <exclude>jdbc/kylin_jdbc.log*</exclude>
+                                <exclude>server/logs/**</exclude>
+
+                                <!-- jdbc service -->
+                                <exclude>**/java.sql.Driver</exclude>
+
+                                <!--ODBC sub project is a VS project, exclude related files -->
+                                <exclude>**/*.sln</exclude>
+                                <exclude>**/*.vcxproj</exclude>
+                                <exclude>**/*.vcxproj.filters</exclude>
+                                <exclude>**/*.vcxproj.user</exclude>
+                                <exclude>**/*.props</exclude>
+                                <exclude>**/*.RC</exclude>
+                                <exclude>**/*.dsp</exclude>
+                                <exclude>**/*.DEF</exclude>
+                                <exclude>**/*.isl</exclude>
+                                <exclude>**/*.isproj</exclude>
+                                <exclude>**/*.bmp</exclude>
+
+                                <exclude>src/main/codegen/javacc/org/apache/kylin/query/util/CommentParser.jj</exclude>
+
+                                <!-- protobuf generated -->
+                                <exclude>
+                                    src/main/java/org/apache/kylin/storage/hbase/ii/coprocessor/endpoint/generated/IIProtos.java
+                                </exclude>
+                                <exclude>
+                                    src/main/java/org/apache/kylin/storage/hbase/cube/v1/filter/generated/FilterProtosExt.java
+                                </exclude>
+                                <exclude>
+                                    src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
+                                </exclude>
+                                <exclude>
+                                    storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/generated/CubeVisitProtos.java
+                                </exclude>
+                                <exclude>
+                                    examples/test_case_data/sample_local/UUID
+                                </exclude>
+                            </excludes>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <phase>verify</phase>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>org.apache.maven.doxia</groupId>
+                                <artifactId>doxia-core</artifactId>
+                                <version>1.7</version>
+                                <exclusions>
+                                    <exclusion>
+                                        <groupId>xerces</groupId>
+                                        <artifactId>xercesImpl</artifactId>
+                                    </exclusion>
+                                </exclusions>
+                            </dependency>
+                        </dependencies>
+                    </plugin>
+                    <plugin>
+                        <groupId>net.ju-n.maven.plugins</groupId>
+                        <artifactId>checksum-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>artifacts</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <algorithms>
+                                <algorithm>SHA-256</algorithm>
+                            </algorithms>
+                            <failOnError>false</failOnError>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
 </project>
diff --git a/src/assembly/pom.xml b/src/assembly/pom.xml
index b8b4a4d7a6..eb2bc140a7 100644
--- a/src/assembly/pom.xml
+++ b/src/assembly/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/common-booter/pom.xml b/src/common-booter/pom.xml
index f02c9479bc..a9741c8ffe 100644
--- a/src/common-booter/pom.xml
+++ b/src/common-booter/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/common-booter/src/main/resources/assembly.xml b/src/common-booter/src/main/resources/assembly.xml
index 4d8e5b7a51..6bbb8c2347 100644
--- a/src/common-booter/src/main/resources/assembly.xml
+++ b/src/common-booter/src/main/resources/assembly.xml
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
     <id>package</id>
diff --git a/src/common-booter/src/main/resources/log4j2.xml b/src/common-booter/src/main/resources/log4j2.xml
index a2eea64c90..aefc89d83d 100644
--- a/src/common-booter/src/main/resources/log4j2.xml
+++ b/src/common-booter/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stdout" target="SYSTEM_OUT">
diff --git a/src/common-server/pom.xml b/src/common-server/pom.xml
index 09d3edf4a9..7ac148c88f 100644
--- a/src/common-server/pom.xml
+++ b/src/common-server/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/common-service/pom.xml b/src/common-service/pom.xml
index d6fcd55cc1..e74994f577 100644
--- a/src/common-service/pom.xml
+++ b/src/common-service/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/core-common/pom.xml b/src/core-common/pom.xml
index bac48ef867..755932f523 100644
--- a/src/core-common/pom.xml
+++ b/src/core-common/pom.xml
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/core-common/src/main/java/org/apache/kylin/common/KapConfig.java b/src/core-common/src/main/java/org/apache/kylin/common/KapConfig.java
index 06123ccf6c..830f4a877d 100644
--- a/src/core-common/src/main/java/org/apache/kylin/common/KapConfig.java
+++ b/src/core-common/src/main/java/org/apache/kylin/common/KapConfig.java
@@ -427,7 +427,7 @@ public class KapConfig {
      * kap monitor
      */
     public boolean isMonitorEnabled() {
-        return Boolean.parseBoolean(config.getOptional("kylin.monitor.enabled", "true"));
+        return Boolean.parseBoolean(config.getOptional("kylin.monitor.enabled", "false"));
     }
 
     public String getMonitorDatabase() {
diff --git a/src/core-job/pom.xml b/src/core-job/pom.xml
index a5ac6dff24..298bc6298e 100644
--- a/src/core-job/pom.xml
+++ b/src/core-job/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/core-metadata/pom.xml b/src/core-metadata/pom.xml
index d61c5ab80e..80a87ca8c0 100644
--- a/src/core-metadata/pom.xml
+++ b/src/core-metadata/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/core-metadata/src/main/java/org/apache/kylin/metadata/query/QueryHistoryProjectInfo.java b/src/core-metadata/src/main/java/org/apache/kylin/metadata/query/QueryHistoryProjectInfo.java
index 2324979f71..a424ebb589 100644
--- a/src/core-metadata/src/main/java/org/apache/kylin/metadata/query/QueryHistoryProjectInfo.java
+++ b/src/core-metadata/src/main/java/org/apache/kylin/metadata/query/QueryHistoryProjectInfo.java
@@ -1,3 +1,20 @@
+/*
+ * 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.kylin.metadata.query;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/src/core-metrics/pom.xml b/src/core-metrics/pom.xml
index a7e8742a4e..fb2e75ff70 100644
--- a/src/core-metrics/pom.xml
+++ b/src/core-metrics/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <name>Kylin - Core Metrics</name>
diff --git a/src/core-storage/pom.xml b/src/core-storage/pom.xml
index 51f36b73fb..4de9e7315d 100644
--- a/src/core-storage/pom.xml
+++ b/src/core-storage/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/data-loading-booter/pom.xml b/src/data-loading-booter/pom.xml
index 86f3295b3b..90536213ae 100644
--- a/src/data-loading-booter/pom.xml
+++ b/src/data-loading-booter/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/data-loading-booter/src/main/resources/assembly.xml b/src/data-loading-booter/src/main/resources/assembly.xml
index 6b14da8a0f..d54f595a23 100644
--- a/src/data-loading-booter/src/main/resources/assembly.xml
+++ b/src/data-loading-booter/src/main/resources/assembly.xml
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
     <id>package</id>
diff --git a/src/data-loading-booter/src/main/resources/log4j2.xml b/src/data-loading-booter/src/main/resources/log4j2.xml
index a2eea64c90..aefc89d83d 100644
--- a/src/data-loading-booter/src/main/resources/log4j2.xml
+++ b/src/data-loading-booter/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stdout" target="SYSTEM_OUT">
diff --git a/src/data-loading-server/pom.xml b/src/data-loading-server/pom.xml
index e3bbc8e601..b49dc21c87 100644
--- a/src/data-loading-server/pom.xml
+++ b/src/data-loading-server/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/data-loading-service/pom.xml b/src/data-loading-service/pom.xml
index 59dacc872f..dd608e3d3c 100644
--- a/src/data-loading-service/pom.xml
+++ b/src/data-loading-service/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/datasource-sdk/pom.xml b/src/datasource-sdk/pom.xml
index 992fac1baa..d09e65b44a 100644
--- a/src/datasource-sdk/pom.xml
+++ b/src/datasource-sdk/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/datasource-sdk/src/main/resources/datasource/mssql.xml b/src/datasource-sdk/src/main/resources/datasource/mssql.xml
index 3df49c8161..932fef29d5 100644
--- a/src/datasource-sdk/src/main/resources/datasource/mssql.xml
+++ b/src/datasource-sdk/src/main/resources/datasource/mssql.xml
@@ -1,5 +1,20 @@
 <?xml version="1.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.
+-->
 <DATASOURCE_DEF NAME="SqlServer12" ID="mssql" DIALECT="mssql">
     <PROPERTY NAME="sql.default-converted-enabled" VALUE="true"/>
     <PROPERTY NAME="sql.allow-no-offset" VALUE="false"/>
diff --git a/src/datasource-sdk/src/main/resources/datasource/snowflake.xml b/src/datasource-sdk/src/main/resources/datasource/snowflake.xml
index ce378d0216..fb09c545ce 100644
--- a/src/datasource-sdk/src/main/resources/datasource/snowflake.xml
+++ b/src/datasource-sdk/src/main/resources/datasource/snowflake.xml
@@ -1,5 +1,20 @@
 <?xml version="1.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.
+-->
 <DATASOURCE_DEF NAME="SnowFlake" ID="snowflake" DIALECT="snowflake">
     <PROPERTY NAME="sql.default-converted-enabled" VALUE="true"/>
     <PROPERTY NAME="sql.allow-no-offset" VALUE="true"/>
diff --git a/src/datasource-sdk/src/main/resources/datasource/sqldw.xml b/src/datasource-sdk/src/main/resources/datasource/sqldw.xml
index 1e04aec335..638e726b01 100644
--- a/src/datasource-sdk/src/main/resources/datasource/sqldw.xml
+++ b/src/datasource-sdk/src/main/resources/datasource/sqldw.xml
@@ -1,5 +1,20 @@
 <?xml version="1.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.
+-->
 <DATASOURCE_DEF NAME="SQL Datawarehouse" ID="sqldw" DIALECT="mssql">
     <PROPERTY NAME="sql.default-converted-enabled" VALUE="true"/>
     <PROPERTY NAME="sql.allow-no-offset" VALUE="true"/>
diff --git a/src/datasource-service/pom.xml b/src/datasource-service/pom.xml
index 423bb64f6f..f0b8f9eb84 100644
--- a/src/datasource-service/pom.xml
+++ b/src/datasource-service/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/distributed-lock-ext/pom.xml b/src/distributed-lock-ext/pom.xml
index 3df312fd32..c35edddd35 100644
--- a/src/distributed-lock-ext/pom.xml
+++ b/src/distributed-lock-ext/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/docker/all_in_one/scripts/install_mysql.sh b/src/docker/all_in_one/scripts/install_mysql.sh
index c3a7ff5d59..298d21ae50 100644
--- a/src/docker/all_in_one/scripts/install_mysql.sh
+++ b/src/docker/all_in_one/scripts/install_mysql.sh
@@ -1,5 +1,22 @@
 #!/bin/bash
 
+#
+# 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.
+#
+
 export DEBIAN_FRONTEND="noninteractive"
 debconf-set-selections <<< 'mysql-server mysql-server/root_password password 123456'
 debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password 123456'
diff --git a/src/examples/test_case_data/sandbox/kylin.properties b/src/examples/test_case_data/sandbox/kylin.properties
index 5fe04b2fe6..d9ac5580ce 100644
--- a/src/examples/test_case_data/sandbox/kylin.properties
+++ b/src/examples/test_case_data/sandbox/kylin.properties
@@ -70,7 +70,7 @@ kylin.engine.spark-conf.spark.sql.hive.metastore.version=1.2.2
 kylin.engine.spark-conf.spark.sql.hive.metastore.jars=${KYLIN_HOME}/build/spark/hive_1_2_2/*
 kylin.engine.spark-conf.spark.yarn.dist.files=../../build/conf/spark-executor-log4j.xml
 
-kylin.engine.spark.job-jar=../assembly/target/kylin-assembly-5.0.0-SNAPSHOT-job.jar
+kylin.engine.spark.job-jar=../assembly/target/kylin-assembly-5.0.0-alpha-SNAPSHOT-job.jar
 
 
 
@@ -186,7 +186,7 @@ kylin.smart.conf.propose-runner-type=in-memory
 #streaming
 kylin.streaming.spark-conf.spark.yarn.am.extraJavaOptions=-Dhdp.version=current -Dlog4j.configuration=spark-appmaster-log4j.properties
 kylin.streaming.spark-conf.spark.sql.hive.metastore.jars=${KYLIN_HOME}/build/spark/hive_1_2_2/*
-kylin.streaming.spark.job-jar=../assembly/target/kylin-assembly-5.0.0-SNAPSHOT-job.jar
+kylin.streaming.spark.job-jar=../assembly/target/kylin-assembly-5.0.0-alpha-SNAPSHOT-job.jar
 
 kylin.query.escape-default-keyword=true
 kylin.monitor.enabled=false
diff --git a/src/integration-service/pom.xml b/src/integration-service/pom.xml
index 98351988d0..e935737fa1 100644
--- a/src/integration-service/pom.xml
+++ b/src/integration-service/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/jdbc/pom.xml b/src/jdbc/pom.xml
index f2a696c971..be5048b52c 100644
--- a/src/jdbc/pom.xml
+++ b/src/jdbc/pom.xml
@@ -1,15 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-
+    <name>Kylin - JDBC Driver</name>
     <artifactId>kylin-jdbc</artifactId>
 
     <properties>
diff --git a/src/job-service/pom.xml b/src/job-service/pom.xml
index 05a7cd4a79..223bd59f53 100644
--- a/src/job-service/pom.xml
+++ b/src/job-service/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/kylin-it/pom.xml b/src/kylin-it/pom.xml
index abd2acc15f..84db80f22f 100644
--- a/src/kylin-it/pom.xml
+++ b/src/kylin-it/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/metadata-server/pom.xml b/src/metadata-server/pom.xml
index 47f233bff3..5f16c8cc7d 100644
--- a/src/metadata-server/pom.xml
+++ b/src/metadata-server/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/modeling-service/pom.xml b/src/modeling-service/pom.xml
index fbc7303886..61b9b9f040 100644
--- a/src/modeling-service/pom.xml
+++ b/src/modeling-service/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/query-booter/pom.xml b/src/query-booter/pom.xml
index 4be5019318..e6b1fcd090 100644
--- a/src/query-booter/pom.xml
+++ b/src/query-booter/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/query-booter/src/main/resources/assembly.xml b/src/query-booter/src/main/resources/assembly.xml
index 0b7dda9b3b..82c9e387b8 100644
--- a/src/query-booter/src/main/resources/assembly.xml
+++ b/src/query-booter/src/main/resources/assembly.xml
@@ -1,3 +1,19 @@
+<!--
+  ~ 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.
+  -->
 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
     <id>package</id>
diff --git a/src/query-booter/src/main/resources/log4j2.xml b/src/query-booter/src/main/resources/log4j2.xml
index a2eea64c90..61db473095 100644
--- a/src/query-booter/src/main/resources/log4j2.xml
+++ b/src/query-booter/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~    http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stdout" target="SYSTEM_OUT">
diff --git a/src/query-common/pom.xml b/src/query-common/pom.xml
index 029c427b79..1df2e19486 100644
--- a/src/query-common/pom.xml
+++ b/src/query-common/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -12,7 +28,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/query-server/pom.xml b/src/query-server/pom.xml
index c798101cab..d770732813 100644
--- a/src/query-server/pom.xml
+++ b/src/query-server/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/query-service/pom.xml b/src/query-service/pom.xml
index d278821f6f..d4ab4fe0d8 100644
--- a/src/query-service/pom.xml
+++ b/src/query-service/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/query/pom.xml b/src/query/pom.xml
index a970b1e41d..ca0c7cc2f2 100644
--- a/src/query/pom.xml
+++ b/src/query/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/second-storage/clickhouse-it/pom.xml b/src/second-storage/clickhouse-it/pom.xml
index e2ed6e4089..901d309455 100644
--- a/src/second-storage/clickhouse-it/pom.xml
+++ b/src/second-storage/clickhouse-it/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/second-storage/clickhouse/pom.xml b/src/second-storage/clickhouse/pom.xml
index 49fef8791b..31acfcb70f 100644
--- a/src/second-storage/clickhouse/pom.xml
+++ b/src/second-storage/clickhouse/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/second-storage/core-ui/pom.xml b/src/second-storage/core-ui/pom.xml
index a2c24ab740..7e3f843756 100644
--- a/src/second-storage/core-ui/pom.xml
+++ b/src/second-storage/core-ui/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/second-storage/core/pom.xml b/src/second-storage/core/pom.xml
index 16556995c0..a1b066c359 100644
--- a/src/second-storage/core/pom.xml
+++ b/src/second-storage/core/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -6,7 +22,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/server/pom.xml b/src/server/pom.xml
index d6a413ec2c..6c4d716f10 100644
--- a/src/server/pom.xml
+++ b/src/server/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/server/src/main/resources/log4j2.xml b/src/server/src/main/resources/log4j2.xml
index 7aac3a8b8b..8afee65ca2 100644
--- a/src/server/src/main/resources/log4j2.xml
+++ b/src/server/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~    http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 <Configuration name="Log4j1">
     <Appenders>
         <Console name="stdout" target="SYSTEM_OUT">
diff --git a/src/source-hive/pom.xml b/src/source-hive/pom.xml
index 00a5f4a4ad..69d1bb28d6 100644
--- a/src/source-hive/pom.xml
+++ b/src/source-hive/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/spark-project/engine-build-sdk/pom.xml b/src/spark-project/engine-build-sdk/pom.xml
index da144f3e7d..e5497f43b0 100644
--- a/src/spark-project/engine-build-sdk/pom.xml
+++ b/src/spark-project/engine-build-sdk/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/spark-project/engine-spark/pom.xml b/src/spark-project/engine-spark/pom.xml
index 7c2f2960f4..e8aa56ba40 100644
--- a/src/spark-project/engine-spark/pom.xml
+++ b/src/spark-project/engine-spark/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.kylin</groupId>
         <artifactId>kylin</artifactId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/spark-project/kylin-soft-affinity-cache/pom.xml b/src/spark-project/kylin-soft-affinity-cache/pom.xml
index ba4279965f..a2a576a8de 100644
--- a/src/spark-project/kylin-soft-affinity-cache/pom.xml
+++ b/src/spark-project/kylin-soft-affinity-cache/pom.xml
@@ -31,7 +31,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/spark-project/source-jdbc/pom.xml b/src/spark-project/source-jdbc/pom.xml
index ea58eb83de..53869ffb9a 100644
--- a/src/spark-project/source-jdbc/pom.xml
+++ b/src/spark-project/source-jdbc/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/spark-project/sparder/pom.xml b/src/spark-project/sparder/pom.xml
index 1cccda51c6..cc12d2feea 100644
--- a/src/spark-project/sparder/pom.xml
+++ b/src/spark-project/sparder/pom.xml
@@ -32,7 +32,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/spark-project/spark-common/pom.xml b/src/spark-project/spark-common/pom.xml
index c765396b4c..0e9a3ccbe8 100644
--- a/src/spark-project/spark-common/pom.xml
+++ b/src/spark-project/spark-common/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/PushQuery.scala b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/PushQuery.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/PushQuery.scala
+++ b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/PushQuery.scala
@@ -0,0 +1,17 @@
+/*
+ * 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.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/PushDownAggUtils.scala b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/PushDownAggUtils.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/PushDownAggUtils.scala
+++ b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/PushDownAggUtils.scala
@@ -0,0 +1,17 @@
+/*
+ * 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.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SQLBuilder.scala b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SQLBuilder.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SQLBuilder.scala
+++ b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SQLBuilder.scala
@@ -0,0 +1,17 @@
+/*
+ * 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.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SingleSQLStatement.scala b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SingleSQLStatement.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SingleSQLStatement.scala
+++ b/src/spark-project/spark-common/src/main/scala/org/apache/spark/sql/execution/datasources/v2/pushdown/sql/SingleSQLStatement.scala
@@ -0,0 +1,17 @@
+/*
+ * 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.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-common/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/v2/ShardJDBCWithoutShardSuite.scala b/src/spark-project/spark-common/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/v2/ShardJDBCWithoutShardSuite.scala
index e69de29bb2..d5519133ed 100644
--- a/src/spark-project/spark-common/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/v2/ShardJDBCWithoutShardSuite.scala
+++ b/src/spark-project/spark-common/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/v2/ShardJDBCWithoutShardSuite.scala
@@ -0,0 +1,17 @@
+/*
+ * 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.
+ */
\ No newline at end of file
diff --git a/src/spark-project/spark-ddl-plugin/pom.xml b/src/spark-project/spark-ddl-plugin/pom.xml
index 0b7d00b998..f4c982bedd 100644
--- a/src/spark-project/spark-ddl-plugin/pom.xml
+++ b/src/spark-project/spark-ddl-plugin/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/spark-project/spark-it/pom.xml b/src/spark-project/spark-it/pom.xml
index 32ed08642f..71255f87a6 100644
--- a/src/spark-project/spark-it/pom.xml
+++ b/src/spark-project/spark-it/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/streaming-sdk/pom.xml b/src/streaming-sdk/pom.xml
index bde2ecdd1e..de78450f29 100644
--- a/src/streaming-sdk/pom.xml
+++ b/src/streaming-sdk/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/streaming-service/pom.xml b/src/streaming-service/pom.xml
index 25ffa8eac2..fd0dab71a8 100644
--- a/src/streaming-service/pom.xml
+++ b/src/streaming-service/pom.xml
@@ -1,11 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/streaming/pom.xml b/src/streaming/pom.xml
index 8d08a24334..2545dc3da9 100644
--- a/src/streaming/pom.xml
+++ b/src/streaming/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <properties>
diff --git a/src/systools/pom.xml b/src/systools/pom.xml
index f6e3cd1530..ea156c7cb4 100644
--- a/src/systools/pom.xml
+++ b/src/systools/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/src/tool/pom.xml b/src/tool/pom.xml
index 3edecd48e4..d5c563a0eb 100644
--- a/src/tool/pom.xml
+++ b/src/tool/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <artifactId>kylin</artifactId>
         <groupId>org.apache.kylin</groupId>
-        <version>5.0.0-SNAPSHOT</version>
+        <version>5.0.0-alpha-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/src/tool/src/main/resources/bisync/tds/tableau.connector.template.xml b/src/tool/src/main/resources/bisync/tds/tableau.connector.template.xml
index 148b311c21..f410cfdb71 100755
--- a/src/tool/src/main/resources/bisync/tds/tableau.connector.template.xml
+++ b/src/tool/src/main/resources/bisync/tds/tableau.connector.template.xml
@@ -1,4 +1,20 @@
 <?xml version='1.0' encoding='UTF-8'?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~    http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 <datasource formatted-name="federated.0e6gjbn18cj0a41an9pi309itkyi" inline="true" source-platform="win" version="10.0">
   <connection class="federated">
     <named-connections>
diff --git a/src/tool/src/test/java/org/apache/kylin/tool/MetadataToolTest.java b/src/tool/src/test/java/org/apache/kylin/tool/MetadataToolTest.java
index 2bf5331b5a..f906029aea 100644
--- a/src/tool/src/test/java/org/apache/kylin/tool/MetadataToolTest.java
+++ b/src/tool/src/test/java/org/apache/kylin/tool/MetadataToolTest.java
@@ -72,6 +72,7 @@ import org.assertj.core.api.Assertions;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -125,6 +126,7 @@ public class MetadataToolTest extends NLocalFileMetadataTestCase {
     }
 
     @Test
+    @Ignore
     public void testFetchTargetFile() throws IOException {
         val junitFolder = temporaryFolder.getRoot();
         val tool = new MetadataTool(getTestConfig());