diff --git a/bin/ycsb.bat b/bin/ycsb.bat
index ebf76e8e71b0042f47a3cd02876f57f88418b10b..10ada42c95e1ef3616e7fff2bcb234c686ad3561 100644
--- a/bin/ycsb.bat
+++ b/bin/ycsb.bat
@@ -155,7 +155,11 @@ GOTO classpathComplete
 
 :gotSource
 @REM Check for some basic libraries to see if the source has been built.
-IF EXIST "%YCSB_HOME%\%BINDING_DIR%\target\*.jar" GOTO gotJars
+IF EXIST "%YCSB_HOME%\core\target\dependency\*.jar" (
+  IF EXIST "%YCSB_HOME%\%BINDING_DIR%\target\*.jar" (
+    GOTO gotJars
+  )
+)
 
 @REM Call mvn to build source checkout.
 IF "%BINDING_NAME%" == "basic" GOTO buildCore
@@ -166,7 +170,7 @@ SET MVN_PROJECT=core
 :gotMvnProject
 
 ECHO [WARN] YCSB libraries not found.  Attempting to build...
-CALL mvn -pl com.yahoo.ycsb:%MVN_PROJECT% -am package -DskipTests
+CALL mvn -Psource-run -pl com.yahoo.ycsb:%MVN_PROJECT% -am package -DskipTests
 IF %ERRORLEVEL% NEQ 0 (
   ECHO [ERROR] Error trying to build project. Exiting.
   GOTO exit
@@ -178,6 +182,11 @@ FOR %%F IN (%YCSB_HOME%\core\target\*.jar) DO (
   SET CLASSPATH=!CLASSPATH!;%%F%
 )
 
+@REM Core dependency libraries
+FOR %%F IN (%YCSB_HOME%\core\target\dependency\*.jar) DO (
+  SET CLASSPATH=!CLASSPATH!;%%F%
+)
+
 @REM Database conf (need to find because location is not consistent)
 FOR /D /R %YCSB_HOME%\%BINDING_DIR% %%F IN (*) DO (
   IF "%%~nxF" == "conf" SET CLASSPATH=!CLASSPATH!;%%F%
diff --git a/bin/ycsb.sh b/bin/ycsb.sh
index ab899fc06f39f24b5d64c539d9df968cb663bc76..9443df6d6b97e53f10eb14f40270c545632e1d61 100755
--- a/bin/ycsb.sh
+++ b/bin/ycsb.sh
@@ -184,25 +184,21 @@ if $DISTRIBUTION; then
 # Source checkout
 else
   # Check for some basic libraries to see if the source has been built.
-  for f in "$YCSB_HOME"/"$BINDING_DIR"/target/*.jar ; do
-
+  if ! ls "$YCSB_HOME"/core/target/*.jar 1> /dev/null 2>&1 || \
+     ! ls "$YCSB_HOME"/"$BINDING_DIR"/target/*.jar 1>/dev/null 2>&1; then
     # Call mvn to build source checkout.
-    if [ ! -e "$f" ] ; then
-      if [ "$BINDING_NAME" = "basic" ] ; then
-        MVN_PROJECT=core
-      else
-        MVN_PROJECT="$BINDING_DIR"-binding
-      fi
-
-      echo "[WARN] YCSB libraries not found.  Attempting to build..."
-      mvn -pl com.yahoo.ycsb:"$MVN_PROJECT" -am package -DskipTests
-      if [ "$?" -ne 0 ] ; then
-        echo "[ERROR] Error trying to build project. Exiting."
-        exit 1;
-      fi
+    if [ "$BINDING_NAME" = "basic" ] ; then
+      MVN_PROJECT=core
+    else
+      MVN_PROJECT="$BINDING_DIR"-binding
     fi
 
-  done
+    echo "[WARN] YCSB libraries not found.  Attempting to build..."
+    if mvn -Psource-run -pl com.yahoo.ycsb:"$MVN_PROJECT" -am package -DskipTests; then
+      echo "[ERROR] Error trying to build project. Exiting."
+      exit 1;
+    fi
+  fi
 
   # Core libraries
   for f in "$YCSB_HOME"/core/target/*.jar ; do
@@ -211,13 +207,19 @@ else
     fi
   done
 
+  # Core dependency libraries
+  for f in "$YCSB_HOME"/core/target/dependency/*.jar ; do
+    if [ -r "$f" ] ; then
+      CLASSPATH="$CLASSPATH:$f"
+    fi
+  done
+
   # Database conf (need to find because location is not consistent)
   CLASSPATH_CONF=$(find "$YCSB_HOME"/$BINDING_DIR -name "conf" | while IFS="" read -r file; do echo ":$file"; done)
   if [ "x$CLASSPATH_CONF" != "x" ]; then
     CLASSPATH="$CLASSPATH$CLASSPATH_CONF"
   fi
 
-
   # Database libraries
   for f in "$YCSB_HOME"/"$BINDING_DIR"/target/*.jar ; do
     if [ -r "$f" ] ; then
diff --git a/core/pom.xml b/core/pom.xml
index 4dbef8506705cd656252f3aa57b687fff6615622..2a33ff51f310718476fb1406318cb6abbe985269 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -60,6 +60,7 @@ LICENSE file.
       <version>2.1.4</version>
     </dependency>
   </dependencies>
+
   <build>
     <resources>
       <resource>
@@ -68,4 +69,31 @@ LICENSE file.
       </resource>
     </resources>
   </build>
+  
+  <profiles>
+    <profile>
+      <!-- Build profile when running via yscb.sh or yscb.bat-->
+      <id>source-run</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-dependency-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>stage-dependencies</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>copy-dependencies</goal>
+                </goals>
+                <configuration>
+                  <includeScope>runtime</includeScope>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>