diff --git a/tools/build/onos-blackduck-zip b/tools/build/onos-blackduck-zip
new file mode 100755
index 0000000..5b0e8b7
--- /dev/null
+++ b/tools/build/onos-blackduck-zip
@@ -0,0 +1,68 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Packages specific ONOS codebase with specific tag or branch
+# -----------------------------------------------------------------------------
+
+# Bail on any errors
+set -e
+
+# Initialize environment variables
+init() {
+    # Check if ONOS_ROOT is defined
+    [ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1;
+
+    # Setup some environmental context for developers
+    if [ -z "${JAVA_HOME}" ]; then
+        if [ -x /usr/libexec/java_home ]; then
+            export JAVA_HOME=$(/usr/libexec/java_home -v 1.8);
+        elif [ -d /usr/lib/jvm/java-8-oracle ]; then
+            export JAVA_HOME="/usr/lib/jvm/java-8-oracle";
+        elif [ -d /usr/lib/jvm/java-8-openjdk-amd64 ]; then
+            export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64";
+        fi
+    fi
+    # Check if mvn exists
+    command -v mvn >/dev/null 2>&1 || {
+    # Following the convention, the default location of maven shows as below.
+    MAVEN=${MAVEN:-~/Applications/apache-maven-3.3.9};
+    export PATH="$MAVEN/bin:$PATH";
+    }
+}
+
+# checkout $TAG, build project and copy it to other location
+check_copy() {
+    CHECK_TAG=`git checkout $TAG`
+    if [[ $CHECK_TAG =~ "error" ]]; then
+        echo "There is no branch or tag named $TAG in $ONOS_ROOT" >&2 && exit 1
+    fi
+    FOLDER=$CURRENT_PATH/onos-$TAG-blackduck
+    [ -d "$FOLDER" ] && rm -r $FOLDER
+    mkdir $FOLDER
+    mvn clean install
+    if [$? -eq 0 ]; then
+        cp -r -a * $FOLDER;
+        if [ -d "$FOLDER/.git" ]; then
+         rm -r $FOLDER/.git
+        fi;
+    else
+        git checkout $CURRENT_TAG;
+        rm -r $FOLDER
+        echo "mvn compilation failed"
+    fi
+}
+
+# Script entry point
+CURRENT_PATH=`pwd`
+TAG=${1:-'master'}
+
+init
+cd $ONOS_ROOT
+CURRENT_TAG=`git branch | awk '{print $2}'`
+check_copy
+cd $FOLDER
+zip -rq -m $CURRENT_PATH/onos-$TAG-blackduck.zip *
+cd ..
+rm -r $FOLDER
+
+cd $ONOS_ROOT
+git checkout $CURRENT_TAG
\ No newline at end of file
