diff --git a/.gitignore b/.gitignore
index 0938f7891e2..89899353305 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,4 +31,7 @@ Thumbs.db
*.orig
# flatten ignore
-.flattened-pom.xml
\ No newline at end of file
+.flattened-pom.xml
+
+# license check result
+license-list.txt
\ No newline at end of file
diff --git a/licenseCheck.sh b/licenseCheck.sh
new file mode 100755
index 00000000000..9992f10040e
--- /dev/null
+++ b/licenseCheck.sh
@@ -0,0 +1,96 @@
+#!/bin/bash
+
+APPEND_ARG=""
+FOLDER="./"
+LINE_FLAG="=============================================="
+TARGET_FILE="./license-list.txt"
+
+red=`tput setaf 1`
+green=`tput setaf 2`
+reset=`tput sgr0`
+
+
+if [ -n "$1" ]; then
+ echo "checking module $1"
+ APPEND_ARG="-f $1"
+ FOLDER="$1"
+else
+ echo "checking whole project"
+fi
+
+echo "Running command: ./mvnw clean package -DskipTests=true -PlicenseCheck $APPEND_ARG"
+
+./mvnw clean package -DskipTests=true -PlicenseCheck $APPEND_ARG
+
+status=$?
+if [ $status -eq 0 ]; then
+ echo "mvn command exec success"
+else
+ echo "${red}mvn command exec fail${reset}"
+ exit 1
+fi
+
+
+#contact and generate license file
+rm -rf $TARGET_FILE
+LICENSE_FILES=`find $FOLDER -type f -name "THIRD-PARTY.txt"|grep generated-sources`
+
+echo "Find license files:"
+echo "$LICENSE_FILES"
+
+for i in $LICENSE_FILES
+ do
+ echo "$LINE_FLAG" >> $TARGET_FILE
+ echo $i >> $TARGET_FILE
+ cat $i >> $TARGET_FILE
+ done
+
+echo "license files generated at $TARGET_FILE"
+
+#fix missing license dependencies
+missingLicense=(
+ "(Unknown license) jsr173_api:(Apache License, Version 2.0) jsr173_api"
+ "(Unknown license) \"Java Concurrency in Practice\" book annotations:(BEA licensed) \"Java Concurrency in Practice\" book annotations"
+ "(Unknown license) Java Portlet Specification V2.0:(Apache License, Version 2.0) Java Portlet Specification V2.0"
+)
+
+for i in "${missingLicense[@]}"; do
+ search=`echo $i |awk -F: '{print $1}'`
+ replace=`echo $i |awk -F: '{print $2}'`
+ sed -i -e 's/'"$search"'/'"$replace"'/g' $TARGET_FILE
+done
+
+check_unknown_license=`cat $TARGET_FILE | grep "Unknown license"`
+
+#checking unknown license
+if grep -q "Unknown license" $TARGET_FILE
+then
+ echo "${red}Find unknown license${reset}"
+ echo "$check_unknown_license"
+ exit 1
+fi
+
+allowLicense=(
+ "CDDL"
+ "Apache"
+ "Common Development and Distribution License"
+ "Eclipse Public License"
+ "MIT"
+ "The 3-Clause BSD License"
+ "Public domain"
+)
+
+#filter allow license
+license_need_check=`cat $TARGET_FILE | grep -v "generated-sources/license/THIRD-PARTY.txt" | grep -v "third-party dependencies" | grep -v $LINE_FLAG`
+
+for i in "${allowLicense[@]}"; do
+ license_need_check=`echo "$license_need_check"|grep -vi "$i"`
+done
+
+if test -z "$license_need_check"
+then
+ echo "${green}All dependencies license looks good${reset}"
+else
+ echo "${red}Please check below license${reset}"
+ echo "$license_need_check"
+fi
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index a1f7b56820d..e9a1661e033 100644
--- a/pom.xml
+++ b/pom.xml
@@ -302,6 +302,41 @@
+
+ licenseCheck
+
+
+
+ org.codehaus.mojo
+ license-maven-plugin
+ 1.20
+
+
+ license-check
+ generate-sources
+
+ add-third-party
+
+
+ false
+ false
+ false
+
+ Apache License, Version 2.0|The Apache Software License, Version
+ 2.0|ASF 2.0|Apache 2|Apache-2.0|Apache 2.0 License|Apache 2.0|Apache License v2.0|Apache License 2.0|The Apache License, Version 2.0|The Apache Software License, Version 2.0
+
+ The MIT License|MIT License
+ The 3-Clause BSD License|New BSD License|3-Clause BSD
+ License|BSD|3-Clause BSD License|The New BSD License
+
+
+
+
+
+
+
+
+