Added onos-build-selective & obs short-hand.
diff --git a/tools/dev/bash_profile b/tools/dev/bash_profile
index 79c6bfb..1d3097f 100644
--- a/tools/dev/bash_profile
+++ b/tools/dev/bash_profile
@@ -12,9 +12,8 @@
 export KARAF_LOG=$KARAF/data/log/karaf.log
 
 # Setup a path
-export PS=":"
-export PATH="$PATH:$ONOS_ROOT/tools/dev:$ONOS_ROOT/tools/build"
-export PATH="$PATH:$ONOS_ROOT/tools/test/bin"
+export PATH="$PATH:$ONOS_ROOT/tools/dev/bin:$ONOS_ROOT/tools/test/bin"
+export PATH="$PATH:$ONOS_ROOT/tools/build"
 export PATH="$PATH:$MAVEN/bin:$KARAF/bin"
 export PATH="$PATH:."
 
@@ -30,11 +29,12 @@
 
 # Short-hand for ONOS build, package and test.
 alias ob='onos-build'
+alias obs='onos-build-selective'
 alias op='onos-package'
 alias ot='onos-test'
 
 # Short-hand for tailing the ONOS (karaf) log 
-alias tl='$ONOS_ROOT/tools/dev/watchLog'
+alias tl='$ONOS_ROOT/tools/dev/bin/onos-local-log'
 alias tlo='tl | grep --colour=always org.onlab'
 
 # Pretty-print JSON output
diff --git a/tools/dev/bin/onos-build-selective b/tools/dev/bin/onos-build-selective
new file mode 100755
index 0000000..2fe0188
--- /dev/null
+++ b/tools/dev/bin/onos-build-selective
@@ -0,0 +1,12 @@
+#!/bin/bash
+#------------------------------------------------------------------------------
+# Selectively builds only those projects that contained modified Java files.
+#------------------------------------------------------------------------------
+
+projects=$(find $ONOS_ROOT -name '*.java' \
+    -not -path '*/openflowj/*' -and -not -path '.git/*' \
+    -exec $ONOS_ROOT/tools/dev/bin/onos-build-selective-hook {} \; | \
+    sort -u | sed "s:$ONOS_ROOT::g" | tr '\n' ',' | \
+    sed 's:/,:,:g;s:,/:,:g;s:^/::g;s:,$::g')
+
+[ -n "$projects" ] && cd $ONOS_ROOT && mvn --projects $projects ${@:-clean install}
\ No newline at end of file
diff --git a/tools/dev/bin/onos-build-selective-hook b/tools/dev/bin/onos-build-selective-hook
new file mode 100755
index 0000000..233ab1a
--- /dev/null
+++ b/tools/dev/bin/onos-build-selective-hook
@@ -0,0 +1,18 @@
+#------------------------------------------------------------------------------
+# Echoes project-level directory if a Java file within is newer than its
+# class file counterpart
+#------------------------------------------------------------------------------
+
+javaFile=${1#*\/src\/*\/java/}
+basename=${1/*\//}
+
+[ $basename = "package-info.java" ] && exit 0
+
+src=${1/$javaFile/}
+project=${src/src*/}
+classFile=${javaFile/.java/.class}
+
+[ ${project}target/classes/$classFile -nt ${src}$javaFile -o \
+    ${project}target/test-classes/$classFile -nt ${src}$javaFile ] \
+    || echo ${src/src*/}
+
diff --git a/tools/dev/watchLog b/tools/dev/bin/onos-local-log
similarity index 100%
rename from tools/dev/watchLog
rename to tools/dev/bin/onos-local-log