diff --git a/README.md b/README.md
index 30a9260..dc2f021 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
 
 ### ShardingSphere UI Frontend
 
-shardingsphere-ui-frontend based on [vue](https://github.com/vuejs/vue) and use the UI Toolkit [element](https://github.com/ElemeFE/element).
+shardingsphere-ui-frontend based on [Vue.js](https://github.com/vuejs/vue) and use the UI Toolkit [element](https://github.com/ElemeFE/element).
 
 * [shardingsphere-ui-frontend/README.md](shardingsphere-ui-frontend/README.md)
 
diff --git a/README_ZH.md b/README_ZH.md
index 4416c3b..b8ed1b8 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -9,7 +9,7 @@
 
 ### ShardingSphere UI 前端
 
-shardingsphere-ui-frontend模块基于[vue](https://github.com/vuejs/vue)，并使用了UI工具包[element](https://github.com/ElemeFE/element)。
+shardingsphere-ui-frontend模块基于[Vue.js](https://github.com/vuejs/vue)，并使用了UI工具包[element](https://github.com/ElemeFE/element)。
 
 * [shardingsphere-ui-frontend/README_ZH.md](shardingsphere-ui-frontend/README_ZH.md)
 
diff --git a/jenkinsfile_ui b/jenkinsfile_ui
deleted file mode 100644
index dc20d02..0000000
--- a/jenkinsfile_ui
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-def uiBuildBadge = addEmbeddableBadgeConfiguration(id: "uibuild", subject: "Build")
-pipeline {
-    agent  {
-        label 'ubuntu'
-    }
-    options {
-        buildDiscarder(logRotator(
-            numToKeepStr: '60',
-        ))
-         timestamps()
-         skipStagesAfterUnstable()
-         timeout time: 60, unit: 'MINUTES'
-    }
-    stages {
-        stage('SCM checkout') {
-            steps {
-                script {
-                    try {
-                        deleteDir()
-                        checkout scm
-                        sh 'git submodule update --init'
-                    } catch (exc) {
-                        error 'Build failed'
-                        sh 'exit 1'
-                    }
-                }
-            }
-        }
-        stage('Build & Test') {
-            tools {
-                // use at least Apache Maven 3.3.1 to have .mvn/jvm.config support
-                maven 'Maven 3.6.2'
-                jdk 'JDK 1.8 (latest)'
-            }
-            steps {
-                script {
-                    uiBuildBadge.setStatus('running')
-                    try {
-                        sh '''
-                        mvn clean install
-                        cd ./shardingsphere-ui
-                        mvn clean install
-                        '''
-                        uiBuildBadge.setStatus('passing')
-                    } catch (Exception err) {
-                        uiBuildBadge.setStatus('failing')
-                        uiBuildBadge.setColor('pink')
-                        error 'Build failed'
-                    }
-                }
-            }
-        }
-    }
-    post {
-        cleanup {
-            deleteDir()
-        }
-    }
-}
diff --git a/pom.xml b/pom.xml
index cf7a8dc..3f33786 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,14 +38,12 @@
     <properties>
         <java.version>1.8</java.version>
         <spring-boot.version>1.5.21.RELEASE</spring-boot.version>
-        
         <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
         <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version>
         <frontend-maven-plugin.version>1.6</frontend-maven-plugin.version>
         <os-maven-plugin.version>1.5.0.Final</os-maven-plugin.version>
         <takari-maven-plugin.version>0.6.1</takari-maven-plugin.version>
         <guava.version>20.0</guava.version>
-        
         <maven.deploy.skip>true</maven.deploy.skip>
     </properties>
     
