Initial BUCK build

Change-Id: I64e8a979301989062f4545a4841b06c15a372049
diff --git a/.buckconfig b/.buckconfig
new file mode 100644
index 0000000..3270c10
--- /dev/null
+++ b/.buckconfig
@@ -0,0 +1,7 @@
+[buildfile]
+  includes = //buck-tools/default.defs
+
+[java]
+  source_level = 8
+  target_level = 8
+
diff --git a/BUCK b/BUCK
new file mode 100644
index 0000000..fe16934
--- /dev/null
+++ b/BUCK
@@ -0,0 +1,121 @@
+DEPS = [
+    '//utils/osgi:onlab-osgi',
+    '//utils/junit:onlab-junit',
+    '//utils/misc:onlab-misc',
+    '//utils/rest:onlab-rest',
+    '//core/api:onos-api',
+    '//incubator/api:onos-incubator-api',
+    '//incubator/net:onos-incubator-net',
+    '//core/net:onos-core-net',
+    '//core/store/primitives:onos-core-primitives',
+    '//core/store/serializers:onos-core-serializers',
+    '//core/store/dist:onos-core-dist',
+    '//core/security:onos-security',
+    '//core/store/persistence:onos-core-persistence',
+    '//cli:onos-cli',
+
+    '//protocols/rest/api:onos-restsb-api',
+    '//protocols/rest/ctl:onos-restsb-ctl',
+    '//protocols/bgp/bgpio:onos-bgpio',
+    '//protocols/bgp/api:onos-bgp-api',
+    '//protocols/bgp/ctl:onos-bgp-ctl',
+    '//protocols/netconf/api:onos-netconf-api',
+    '//protocols/netconf/ctl:onos-netconf-ctl',
+    '//protocols/openflow/api:onos-of-api',
+    '//protocols/openflow/ctl:onos-of-ctl',
+    '//protocols/ospf/api:onos-ospf-api',
+    '//protocols/ospf/protocol:onos-ospf-protocol',
+    '//protocols/ospf/ctl:onos-ospf-ctl',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/ctl:onos-ovsdb-ctl',
+    '//protocols/pcep/pcepio:onos-pcep-pcepio',
+    '//protocols/pcep/api:onos-pcep-controller-api',
+    '//protocols/pcep/ctl:onos-pcep-ctl',
+
+    '//drivers/utilities:onos-drivers-utilities',
+    '//drivers/ciena:onos-drivers-ciena',
+    '//drivers/cisco:onos-drivers-cisco',
+    '//drivers/default:onos-drivers-default',
+    '//drivers/fujitsu:onos-drivers-fujitsu',
+    '//drivers/lumentum:onos-drivers-lumentum',
+    '//drivers/netconf:onos-drivers-netconf',
+    '//drivers/ovsdb:onos-drivers-ovsdb',
+
+    '//providers/bgp/cfg:onos-bgp-provider-cfg',
+    '//providers/bgp/flow:onos-bgp-provider-flow',
+    '//providers/bgp/topology:onos-bgp-provider-topology',
+    '//providers/host:onos-host-provider',
+    '//providers/lldpcommon:onos-lldp-provider-common',
+    '//providers/netcfglinks:onos-netcfg-links-provider',
+    '//providers/lldp:onos-lldp-provider',
+    '//providers/netconf/device:onos-netconf-provider-device',
+    '//providers/netcfghost:onos-netcfg-links-provider',
+    '//providers/null:onos-null-providers',
+    '//providers/openflow/device:onos-of-provider-device',
+    '//providers/openflow/flow:onos-of-provider-flow',
+    '//providers/openflow/group:onos-of-provider-group',
+    '//providers/openflow/message:onos-of-provider-message',
+    '//providers/openflow/meter:onos-of-provider-meter',
+    '//providers/openflow/packet:onos-of-provider-packet',
+    '//providers/ovsdb/device:onos-ovsdb-provider-device',
+    '//providers/ovsdb/host:onos-ovsdb-provider-host',
+    '//providers/ovsdb/tunnel:onos-ovsdb-provider-tunnel',
+    '//providers/pcep/topology:onos-pcep-provider-topology',
+    '//providers/pcep/tunnel:onos-pcep-provider-tunnel',
+    '//providers/rest/device:onos-restsb-provider-device',
+    '//providers/snmp/alarm:onos-snmp-provider-alarm',
+    '//providers/snmp/device:onos-snmp-provider-device',
+
+    '//web/api:onos-rest',
+    '//web/gui:onos-gui',
+
+    '//apps/cpman/api:onos-app-cpman-api',
+    '//apps/cpman/app:onos-app-cpman-app',
+    '//apps/aaa:onos-app-aaa',
+    '//apps/acl:onos-app-acl',
+    '//apps/bgprouter:onos-app-bgprouter',
+    '//apps/routing-api:onos-app-routing-api',
+    '//apps/cip:onos-app-cip',
+    '//apps/cordmcast:onos-app-cord-mcast',
+    '//apps/cordvtn:onos-app-cordvtn',
+    '//apps/dhcp/api:onos-app-dhcp-api',
+    '//apps/dhcp/app:onos-app-dhcp-app',
+    '//apps/drivermatrix:onos-app-drivermatrix',
+    '//apps/events:onos-app-events',
+    '//apps/faultmanagement:onos-app-fm',
+    '//apps/flowanalyzer:onos-app-flowanalyzer',
+    '//apps/fwd:onos-app-fwd',
+    '//apps/igmp:onos-app-igmp',
+    '//apps/influxdbmetrics:onos-app-influxdb',
+    '//apps/olt:onos-app-olt-api',
+    '//apps/olt:onos-app-olt-app',
+    '//apps/iptopology-api:onos-app-iptopology-api',
+    '//apps/metrics:onos-app-metrics',
+    '//apps/metricsreporter:onos-app-metrics-reporter',
+    '//apps/mfwd:onos-app-mfwd',
+    '//apps/mlb:onos-app-mlb',
+    '//apps/mobility:onos-app-mobility',
+    '//apps/openstackinterface:onos-app-openstackinterface-api',
+    '//apps/openstackinterface:onos-app-openstackinterface-app',
+    '//apps/openstacknetworking:onos-app-openstacknetworking',
+    '//apps/openstacknode:onos-app-openstacknode',
+    '//apps/optical:onos-app-optical',
+    '//apps/pathpainter:onos-app-pp',
+    '//apps/pim:onos-app-pim',
+    '//apps/proxyarp:onos-app-proxyarp',
+    '//apps/routing:onos-app-routing',
+    '//apps/sdnip:onos-app-sdnip',
+    '//apps/segmentrouting:onos-app-segmentrouting',
+    '//apps/test:onos-app-test',
+    '//apps/vtn:onos-app-vtn',
+    '//apps/virtualbng:onos-app-virtualbng',
+    '//apps/vpls:onos-app-vpls',
+    '//apps/vrouter:onos-app-vrouter',
+]
+
+java_library(
+   name = 'onos',
+   visibility = ['PUBLIC'],
+   deps = DEPS
+)
diff --git a/apps/aaa/BUCK b/apps/aaa/BUCK
new file mode 100644
index 0000000..160c420
--- /dev/null
+++ b/apps/aaa/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-aaa'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/acl/BUCK b/apps/acl/BUCK
new file mode 100644
index 0000000..72f4eb4
--- /dev/null
+++ b/apps/acl/BUCK
@@ -0,0 +1,32 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-acl'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:javax.ws.rs-api',
+    '//utils/rest:onlab-rest',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/bgprouter/BUCK b/apps/bgprouter/BUCK
new file mode 100644
index 0000000..dcf4c8b
--- /dev/null
+++ b/apps/bgprouter/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-bgprouter'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+    '//apps/routing-api:onos-app-routing-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/cip/BUCK b/apps/cip/BUCK
new file mode 100644
index 0000000..dbaa33b
--- /dev/null
+++ b/apps/cip/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-cip'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/cordmcast/BUCK b/apps/cordmcast/BUCK
new file mode 100644
index 0000000..0b61f99
--- /dev/null
+++ b/apps/cordmcast/BUCK
@@ -0,0 +1,34 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-cord-mcast'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:javax.ws.rs-api',
+    '//lib:jersey-client',
+    '//lib:jersey-common',
+    '//utils/rest:onlab-rest',
+    '//apps/olt:onos-app-olt-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/cordvtn/BUCK b/apps/cordvtn/BUCK
new file mode 100644
index 0000000..5ceb313
--- /dev/null
+++ b/apps/cordvtn/BUCK
@@ -0,0 +1,41 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-cordvtn'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//lib:javax.ws.rs-api',
+    '//lib:jsch',
+    '//utils/rest:onlab-rest',
+    '//cli:onos-cli',
+    '//core/store/serializers:onos-core-serializers',
+    '//apps/openstackinterface:onos-app-openstackinterface-api',
+    '//apps/dhcp/api:onos-app-dhcp-api',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/cpman/api/BUCK b/apps/cpman/api/BUCK
new file mode 100644
index 0000000..1d410b0
--- /dev/null
+++ b/apps/cpman/api/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-cpman-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+ ]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/cpman/app/BUCK b/apps/cpman/app/BUCK
new file mode 100644
index 0000000..b42d086
--- /dev/null
+++ b/apps/cpman/app/BUCK
@@ -0,0 +1,35 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-cpman-app'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//lib:javax.ws.rs-api',
+    '//lib:rrd4j',
+    '//apps/cpman/api:onos-app-cpman-api',
+    '//utils/rest:onlab-rest',
+    '//cli:onos-cli',
+ ]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/dhcp/api/BUCK b/apps/dhcp/api/BUCK
new file mode 100644
index 0000000..eaa368b
--- /dev/null
+++ b/apps/dhcp/api/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-dhcp-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/dhcp/app/BUCK b/apps/dhcp/app/BUCK
new file mode 100644
index 0000000..e11bea9
--- /dev/null
+++ b/apps/dhcp/app/BUCK
@@ -0,0 +1,35 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-dhcp-app'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:javax.ws.rs-api',
+    '//lib:org.apache.karaf.shell.console',
+    '//apps/dhcp/api:onos-app-dhcp-api',
+    '//utils/rest:onlab-rest',
+    '//core/store/serializers:onos-core-serializers',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/drivermatrix/BUCK b/apps/drivermatrix/BUCK
new file mode 100644
index 0000000..d8ac3bb
--- /dev/null
+++ b/apps/drivermatrix/BUCK
@@ -0,0 +1,33 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-drivermatrix'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/events/BUCK b/apps/events/BUCK
new file mode 100644
index 0000000..e3ec6cf
--- /dev/null
+++ b/apps/events/BUCK
@@ -0,0 +1,33 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-events'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/faultmanagement/BUCK b/apps/faultmanagement/BUCK
new file mode 100644
index 0000000..7dd4252
--- /dev/null
+++ b/apps/faultmanagement/BUCK
@@ -0,0 +1,91 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//incubator/api:onos-incubator-api',
+    '//cli:onos-cli',
+    '//utils/rest:onlab-rest',
+    '//lib:javax.ws.rs-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+   name = 'onos-app-fm',
+   visibility = ['PUBLIC'],
+   deps = [':fmcli', ':fmgui', ':fmmgr', ':fmweb'],
+)
+
+java_library(
+    name = 'fmcli',
+    srcs = glob(['fmcli/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'fmcli/src/main/resources',
+    resources = glob(['fmcli/src/main/resources/**']),
+)
+
+java_test(
+    name = 'fmcli-tests',
+    srcs = glob(['fmcli/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':fmcli'],
+    source_under_test = [':fmcli'],
+)
+
+java_library(
+    name = 'fmgui',
+    srcs = glob(['fmgui/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'fmgui/src/main/resources',
+    resources = glob(['fmgui/src/main/resources/**']),
+)
+
+java_test(
+    name = 'fmgui-tests',
+    srcs = glob(['fmgui/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':fmgui'],
+    source_under_test = [':fmgui'],
+)
+
+java_library(
+    name = 'fmmgr',
+    srcs = glob(['fmmgr/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'fmmgr-tests',
+    srcs = glob(['fmmgr/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':fmmgr'],
+    source_under_test = [':fmmgr'],
+)
+
+java_library(
+    name = 'fmweb',
+    srcs = glob(['fmweb/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'fmweb-tests',
+    srcs = glob(['fmweb/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':fmweb'],
+    source_under_test = [':fmweb'],
+    resources_root = 'fmweb/src/test/resources',
+    resources = glob(['fmweb/src/test/resources/**']),
+)
diff --git a/apps/flowanalyzer/BUCK b/apps/flowanalyzer/BUCK
new file mode 100644
index 0000000..e377f7c
--- /dev/null
+++ b/apps/flowanalyzer/BUCK
@@ -0,0 +1,33 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-flowanalyzer'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/fwd/BUCK b/apps/fwd/BUCK
new file mode 100644
index 0000000..62529ce
--- /dev/null
+++ b/apps/fwd/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-fwd'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/igmp/BUCK b/apps/igmp/BUCK
new file mode 100644
index 0000000..c298964
--- /dev/null
+++ b/apps/igmp/BUCK
@@ -0,0 +1,32 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-igmp'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+    '//apps/olt:onos-app-olt-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/influxdbmetrics/BUCK b/apps/influxdbmetrics/BUCK
new file mode 100644
index 0000000..0847bb7
--- /dev/null
+++ b/apps/influxdbmetrics/BUCK
@@ -0,0 +1,33 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-influxdb'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//lib:metrics-influxdb',
+    '//lib:influxdb-java',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/iptopology-api/BUCK b/apps/iptopology-api/BUCK
new file mode 100644
index 0000000..79a4146
--- /dev/null
+++ b/apps/iptopology-api/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-iptopology-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/metrics/BUCK b/apps/metrics/BUCK
new file mode 100644
index 0000000..ad1b452
--- /dev/null
+++ b/apps/metrics/BUCK
@@ -0,0 +1,35 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-metrics'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//lib:javax.ws.rs-api',
+    '//utils/rest:onlab-rest',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/metricsreporter/BUCK b/apps/metricsreporter/BUCK
new file mode 100644
index 0000000..9a2fa1c
--- /dev/null
+++ b/apps/metricsreporter/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-metrics-reporter'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:gmetric4j',
+    '//lib:metrics-ganglia',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/mfwd/BUCK b/apps/mfwd/BUCK
new file mode 100644
index 0000000..46730ef
--- /dev/null
+++ b/apps/mfwd/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-mfwd'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/mlb/BUCK b/apps/mlb/BUCK
new file mode 100644
index 0000000..dc45bb0
--- /dev/null
+++ b/apps/mlb/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-mlb'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/mobility/BUCK b/apps/mobility/BUCK
new file mode 100644
index 0000000..4adca9f
--- /dev/null
+++ b/apps/mobility/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-mobility'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/olt/BUCK b/apps/olt/BUCK
new file mode 100644
index 0000000..a626006
--- /dev/null
+++ b/apps/olt/BUCK
@@ -0,0 +1,48 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:javax.ws.rs-api',
+    '//lib:jersey-client',
+    '//lib:org.apache.karaf.shell.console',
+    '//utils/rest:onlab-rest',
+    '//cli:onos-cli',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = 'onos-app-olt-api',
+    srcs = glob(['api/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-olt-api-tests',
+    srcs = glob([TEST + 'api/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-olt-api'],
+    source_under_test = [':onos-app-olt-api'],
+)
+
+java_library(
+    name = 'onos-app-olt-app',
+    srcs = glob(['app/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-olt-api'],
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-olt-app-tests',
+    srcs = glob([TEST + 'app/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-olt-api', ':onos-app-olt-app'],
+    source_under_test = [':onos-app-olt-app'],
+)
diff --git a/apps/openstackinterface/BUCK b/apps/openstackinterface/BUCK
new file mode 100644
index 0000000..a43ca84
--- /dev/null
+++ b/apps/openstackinterface/BUCK
@@ -0,0 +1,44 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:jersey-client',
+    '//lib:javax.ws.rs-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = 'onos-app-openstackinterface-api',
+    srcs = glob(['api/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-openstackinterface-api-tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-openstackinterface-api'],
+    source_under_test = [':onos-app-openstackinterface-api'],
+)
+
+java_library(
+    name = 'onos-app-openstackinterface-app',
+    srcs = glob(['app/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-openstackinterface-api'],
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-openstackinterface-app-tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-openstackinterface-api', ':onos-app-openstackinterface-app'],
+    source_under_test = [':onos-app-openstackinterface-app'],
+)
diff --git a/apps/openstacknetworking/BUCK b/apps/openstacknetworking/BUCK
new file mode 100644
index 0000000..65b6acc
--- /dev/null
+++ b/apps/openstacknetworking/BUCK
@@ -0,0 +1,102 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:jersey-client',
+    '//lib:javax.ws.rs-api',
+    '//apps/openstackinterface:onos-app-openstackinterface-api',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+java_library(
+   name = 'onos-app-openstacknetworking',
+   visibility = ['PUBLIC'],
+   deps = [
+       ':onos-app-openstacknetworking-api',
+       ':onos-app-openstacknetworking-app',
+       ':onos-app-openstackrouting',
+       ':onos-app-openstackswitching',
+       ':onos-app-openstacknetworking-web',
+   ]
+)
+
+TEST_DEPS = [
+    '//lib:TEST',
+    ':onos-app-openstacknetworking',
+]
+
+java_library(
+    name = 'onos-app-openstacknetworking-api',
+    srcs = glob(['api/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-openstacknetworking-api-tests',
+    srcs = glob([TEST + 'api/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS,
+    source_under_test = [':onos-app-openstacknetworking-api'],
+)
+
+java_library(
+    name = 'onos-app-openstacknetworking-app',
+    srcs = glob(['app/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-openstacknetworking-api'],
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-openstacknetworking-app-tests',
+    srcs = glob([TEST + 'app/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS,
+    source_under_test = [':onos-app-openstacknetworking-app'],
+)
+
+java_library(
+    name = 'onos-app-openstackrouting',
+    srcs = glob(['openstackrouting/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-openstacknetworking-api'],
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-openstackrouting-tests',
+    srcs = glob([TEST + 'openstackrouting/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS,
+    source_under_test = [':onos-app-openstackrouting'],
+)
+
+java_library(
+    name = 'onos-app-openstackswitching',
+    srcs = glob(['openstgackswitching/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-openstacknetworking-api'],
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-openstackswitching-tests',
+    srcs = glob([TEST + 'openstackswitching/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS,
+    source_under_test = [':onos-app-openstackswitching'],
+)
+
+java_library(
+    name = 'onos-app-openstacknetworking-web',
+    srcs = glob(['openstgacknetworking/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-openstacknetworking-api'],
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-openstacknetworking-web-tests',
+    srcs = glob([TEST + 'openstackswitching/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS,
+    source_under_test = [':onos-app-openstacknetworking-web'],
+)
diff --git a/apps/openstacknode/BUCK b/apps/openstacknode/BUCK
new file mode 100644
index 0000000..856dc7e
--- /dev/null
+++ b/apps/openstacknode/BUCK
@@ -0,0 +1,32 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-openstacknode'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/optical/BUCK b/apps/optical/BUCK
new file mode 100644
index 0000000..33a5615
--- /dev/null
+++ b/apps/optical/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-optical'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/pathpainter/BUCK b/apps/pathpainter/BUCK
new file mode 100644
index 0000000..99cbcb6
--- /dev/null
+++ b/apps/pathpainter/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-pp'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/pcep-api/BUCK b/apps/pcep-api/BUCK
new file mode 100644
index 0000000..4b78c47
--- /dev/null
+++ b/apps/pcep-api/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-pcep-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/pim/BUCK b/apps/pim/BUCK
new file mode 100644
index 0000000..5a1c074
--- /dev/null
+++ b/apps/pim/BUCK
@@ -0,0 +1,35 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-pim'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+    '//incubator/api:onos-incubator-api',
+    '//apps/routing-api:onos-app-routing-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/proxyarp/BUCK b/apps/proxyarp/BUCK
new file mode 100644
index 0000000..8c7328e
--- /dev/null
+++ b/apps/proxyarp/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-proxyarp'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/routing-api/BUCK b/apps/routing-api/BUCK
new file mode 100644
index 0000000..26c30ad
--- /dev/null
+++ b/apps/routing-api/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-routing-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/routing/BUCK b/apps/routing/BUCK
new file mode 100644
index 0000000..7523af9
--- /dev/null
+++ b/apps/routing/BUCK
@@ -0,0 +1,37 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-routing'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//lib:concurrent-trees',
+    '//cli:onos-cli',
+    '//incubator/api:onos-incubator-api',
+    '//apps/routing-api:onos-app-routing-api',
+    '//core/common:onos-core-common',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/sdnip/BUCK b/apps/sdnip/BUCK
new file mode 100644
index 0000000..450ab22
--- /dev/null
+++ b/apps/sdnip/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-sdnip'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+    '//apps/routing-api:onos-app-routing-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/segmentrouting/BUCK b/apps/segmentrouting/BUCK
new file mode 100644
index 0000000..3ed2a55
--- /dev/null
+++ b/apps/segmentrouting/BUCK
@@ -0,0 +1,38 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-segmentrouting'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//lib:javax.ws.rs-api',
+    '//cli:onos-cli',
+    '//incubator/api:onos-incubator-api',
+    '//apps/routing-api:onos-app-routing-api',
+    '//utils/rest:onlab-rest',
+
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/test/BUCK b/apps/test/BUCK
new file mode 100644
index 0000000..a7cf25d
--- /dev/null
+++ b/apps/test/BUCK
@@ -0,0 +1,136 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+    '//utils/rest:onlab-rest',
+    '//lib:javax.ws.rs-api',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+   name = 'onos-app-test',
+   visibility = ['PUBLIC'],
+   deps = [':onos-app-demo',
+           ':onos-app-distributed-primitives',
+           ':onos-app-election',
+           ':onos-app-intent-perf',
+           ':onos-app-loadtest',
+           ':onos-app-messaging-perf',
+   ],
+)
+
+# demo
+
+java_library(
+    name = 'onos-app-demo',
+    srcs = glob(['demo/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-demo-tests',
+    srcs = glob(['demo/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-demo'],
+    source_under_test = [':onos-app-demo'],
+)
+
+# distributed-primitives
+
+java_library(
+    name = 'onos-app-distributed-primitives',
+    srcs = glob(['distributed-primitives/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-distributed-primitives-tests',
+    srcs = glob(['distributed-primitives/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-distributed-primitives'],
+    source_under_test = [':onos-app-distributed-primitives'],
+)
+
+# election
+
+java_library(
+    name = 'onos-app-election',
+    srcs = glob(['election/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-election-tests',
+    srcs = glob(['election/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-election'],
+    source_under_test = [':onos-app-election'],
+)
+
+# intent-perf
+
+java_library(
+    name = 'onos-app-intent-perf',
+    srcs = glob(['intent-perf/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-intent-perf-tests',
+    srcs = glob(['intent-perf/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-intent-perf'],
+    source_under_test = [':onos-app-intent-perf'],
+)
+
+# loadtest
+
+java_library(
+    name = 'onos-app-loadtest',
+    srcs = glob(['loadtest/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-loadtest-tests',
+    srcs = glob(['loadtest/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-loadtest'],
+    source_under_test = [':onos-app-loadtest'],
+)
+
+# messaging-perf
+
+java_library(
+    name = 'onos-app-messaging-perf',
+    srcs = glob(['messaging-perf/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-messaging-perf-tests',
+    srcs = glob(['messaging-perf/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-messaging-perf'],
+    source_under_test = [':onos-app-messaging-perf'],
+)
+
diff --git a/apps/virtualbng/BUCK b/apps/virtualbng/BUCK
new file mode 100644
index 0000000..b453226
--- /dev/null
+++ b/apps/virtualbng/BUCK
@@ -0,0 +1,36 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-virtualbng'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:jersey-client',
+    '//lib:javax.ws.rs-api',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+    '//utils/rest:onlab-rest',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/vpls/BUCK b/apps/vpls/BUCK
new file mode 100644
index 0000000..f9c88b3
--- /dev/null
+++ b/apps/vpls/BUCK
@@ -0,0 +1,36 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-vpls'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:jersey-client',
+    '//lib:javax.ws.rs-api',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+    '//utils/rest:onlab-rest',
+    '//incubator/api:onos-incubator-api',
+    '//apps/routing-api:onos-app-routing-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/vrouter/BUCK b/apps/vrouter/BUCK
new file mode 100644
index 0000000..b94198a
--- /dev/null
+++ b/apps/vrouter/BUCK
@@ -0,0 +1,30 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-vrouter'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/apps/vtn/BUCK b/apps/vtn/BUCK
new file mode 100644
index 0000000..e653036
--- /dev/null
+++ b/apps/vtn/BUCK
@@ -0,0 +1,104 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+    '//utils/rest:onlab-rest',
+    '//lib:javax.ws.rs-api',
+    '//core/store/serializers:onos-core-serializers',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+   name = 'onos-app-vtn',
+   visibility = ['PUBLIC'],
+   deps = [':onos-app-sfc-mgr',
+           ':onos-app-vtn-mgr',
+           ':onos-app-vtn-rsc',
+           ':onos-app-vtn-web',
+   ],
+)
+
+# sfcmgr
+
+java_library(
+    name = 'onos-app-sfc-mgr',
+    srcs = glob(['sfcmgr/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-vtn-rsc'],
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-sfc-mgr-tests',
+    srcs = glob(['sfcmgr/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-sfc-mgr', ':onos-app-vtn-rsc'],
+    source_under_test = [':onos-app-sfc-mgr'],
+)
+
+# vtnmgr
+
+java_library(
+    name = 'onos-app-vtn-mgr',
+    srcs = glob(['vtnmgr/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-vtn-rsc'],
+    visibility = ['PUBLIC'],
+    resources_root = 'vtnmgr/src/main/resources',
+    resources = glob(['vtnmgr/src/main/resources/**']),
+)
+
+java_test(
+    name = 'onos-app-vtn-mgr-tests',
+    srcs = glob(['vtnmgr/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-vtn-mgr', ':onos-app-vtn-rsc'],
+    source_under_test = [':onos-app-vtn-mgr'],
+)
+
+# vtnrsc
+
+java_library(
+    name = 'onos-app-vtn-rsc',
+    srcs = glob(['vtnrsc/' + SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'vtnrsc/src/main/resources',
+    resources = glob(['vtnrsc/src/main/resources/**']),
+)
+
+java_test(
+    name = 'onos-app-vtn-rsc-tests',
+    srcs = glob(['vtnrsc/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-vtn-rsc'],
+    source_under_test = [':onos-app-vtn-rsc'],
+)
+
+# vtnweb
+
+java_library(
+    name = 'onos-app-vtn-web',
+    srcs = glob(['vtnweb/' + SRC + '*.java']),
+    deps = COMPILE_DEPS + [':onos-app-vtn-rsc'],
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-app-vtn-web-tests',
+    srcs = glob(['vtnweb/' + TEST + '*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [':onos-app-vtn-web', ':onos-app-vtn-rsc'],
+    source_under_test = [':onos-app-vtn-web'],
+    resources_root = 'vtnweb/src/test/resources',
+    resources = glob(['vtnweb/src/test/resources/**']),
+)
diff --git a/apps/xos-integration/BUCK b/apps/xos-integration/BUCK
new file mode 100644
index 0000000..1413d0f
--- /dev/null
+++ b/apps/xos-integration/BUCK
@@ -0,0 +1,36 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-app-xos-integration'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:jersey-client',
+    '//lib:javax.ws.rs-api',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+    '//utils/rest:onlab-rest',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/buck-tools/BUCK b/buck-tools/BUCK
new file mode 100644
index 0000000..96c787a
--- /dev/null
+++ b/buck-tools/BUCK
@@ -0,0 +1,38 @@
+python_binary(
+  name = 'download_file',
+  main = 'download_file.py',
+  deps = [':util'],
+  visibility = ['PUBLIC'],
+)
+
+python_binary(
+  name = 'pack_war',
+  main = 'pack_war.py',
+  deps = [':util'],
+  visibility = ['PUBLIC'],
+)
+
+python_library(
+  name = 'util',
+  srcs = [
+    'util.py',
+    '__init__.py'
+  ],
+  visibility = ['PUBLIC'],
+)
+
+def shquote(s):
+  return s.replace("'", "'\\''")
+
+def os_path():
+  from os import environ
+  return environ.get('PATH')
+
+genrule(
+  name = 'buck',
+  cmd = 'echo buck=`which buck`>$OUT;' +
+    ("echo PATH=\''%s'\' >>$OUT;" % shquote(os_path())),
+  out = 'buck.properties',
+  visibility = ['PUBLIC'],
+)
+
diff --git a/buck-tools/GoogleFormat.xml b/buck-tools/GoogleFormat.xml
new file mode 100644
index 0000000..8062246
--- /dev/null
+++ b/buck-tools/GoogleFormat.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="Google Format" version="11">
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="3"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+</profile>
+</profiles>
diff --git a/buck-tools/__init__.py b/buck-tools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/buck-tools/__init__.py
diff --git a/buck-tools/build.defs b/buck-tools/build.defs
new file mode 100644
index 0000000..3ea506c
--- /dev/null
+++ b/buck-tools/build.defs
@@ -0,0 +1,80 @@
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed 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.
+
+# These definitions support building a runnable version of Gerrit.
+
+DOCS_HTML = '//Documentation:html'
+DOCS_LIB = '//Documentation:index_lib'
+LIBS = [
+  '//gerrit-war:log4j-config',
+  '//gerrit-war:init',
+  '//lib:postgresql',
+  '//lib/log:impl_log4j',
+]
+PGMLIBS = ['//gerrit-pgm:pgm']
+
+def scan_plugins():
+  import os
+  deps = []
+  for n in os.listdir('plugins'):
+    if os.path.exists(os.path.join('plugins', n, 'BUCK')):
+      deps.append('//plugins/%s:%s__plugin' % (n, n))
+  return deps
+
+def war(
+    name,
+    libs = [],
+    pgmlibs = [],
+    context = [],
+    visibility = [],
+    docs = False
+    ):
+  cmd = ['$(exe //tools:pack_war)', '-o', '$OUT', '--tmp', '$TMP']
+  for l in libs:
+    cmd.extend(['--lib', '$(classpath %s)' % l])
+  for l in pgmlibs:
+    cmd.extend(['--pgmlib', '$(classpath %s)' % l])
+
+  if docs:
+    cmd.append('$(location %s)' % DOCS_HTML)
+    cmd.extend(['--lib', '$(classpath %s)' % DOCS_LIB])
+  if context:
+    for t in context:
+      cmd.append('$(location %s)' % t)
+
+  genrule(
+    name = name,
+    cmd = ' '.join(cmd),
+    out = name + '.war',
+    visibility = visibility,
+  )
+
+def gerrit_war(name, ui = 'ui_optdbg', context = [], docs = False, visibility = []):
+  ui_deps = []
+  if ui:
+    if ui == 'polygerrit' or ui == 'ui_optdbg' or ui == 'ui_optdbg_r':
+      ui_deps.append('//polygerrit-ui/app:polygerrit_ui')
+    if ui != 'polygerrit':
+      ui_deps.append('//gerrit-gwtui:%s' % ui)
+  war(
+    name = name,
+    libs = LIBS + ['//gerrit-war:version'],
+    pgmlibs = PGMLIBS,
+    context = ui_deps + context + [
+      '//gerrit-main:main_bin',
+      '//gerrit-war:webapp_assets',
+    ],
+    docs = docs,
+    visibility = visibility,
+  )
diff --git a/buck-tools/checkstyle.xml b/buck-tools/checkstyle.xml
new file mode 100644
index 0000000..1bb40f7
--- /dev/null
+++ b/buck-tools/checkstyle.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+<!--
+    This configuration file was written by the eclipse-cs plugin configuration editor
+-->
+<!--
+    Checkstyle-Configuration: Google Checks for Gerrit
+    Description:
+Checkstyle configuration based on the Google coding conventions (https://google-styleguide.googlecode.com/svn-history/r130/trunk/javaguide.html),
+edited to remove noisy warnings.
+-->
+<module name="Checker">
+  <property name="severity" value="warning"/>
+  <property name="charset" value="UTF-8"/>
+  <module name="TreeWalker">
+    <module name="FileContentsHolder"/>
+    <module name="OuterTypeFilename"/>
+    <module name="LineLength">
+      <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
+      <property name="max" value="150"/>
+      <property name="tabWidth" value="2"/>
+    </module>
+    <module name="OneTopLevelClass"/>
+    <module name="NoLineWrap"/>
+    <module name="EmptyBlock">
+      <property name="option" value="TEXT"/>
+      <property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
+    </module>
+    <module name="NeedBraces"/>
+    <module name="LeftCurly">
+      <property name="maxLineLength" value="150"/>
+    </module>
+    <module name="RightCurly">
+      <property name="option" value="alone"/>
+      <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
+    </module>
+    <module name="WhitespaceAround">
+      <property name="severity" value="ignore"/>
+      <property name="allowEmptyConstructors" value="true"/>
+      <property name="allowEmptyMethods" value="true"/>
+      <property name="allowEmptyTypes" value="true"/>
+      <property name="allowEmptyLoops" value="true"/>
+      <message key="ws.notFollowed" value="WhitespaceAround: ''{0}'' is not followed by whitespace."/>
+      <message key="ws.notPreceded" value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    <module name="OneStatementPerLine"/>
+    <module name="MultipleVariableDeclarations"/>
+    <module name="ArrayTypeStyle"/>
+    <module name="UpperEll"/>
+    <module name="ModifierOrder"/>
+    <module name="EmptyLineSeparator">
+      <property name="severity" value="ignore"/>
+      <property name="allowNoEmptyLineBetweenFields" value="true"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    <module name="SeparatorWrap">
+      <property name="severity" value="ignore"/>
+      <property name="option" value="nl"/>
+      <property name="tokens" value="DOT"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    <module name="SeparatorWrap">
+      <property name="severity" value="ignore"/>
+      <property name="option" value="EOL"/>
+      <property name="tokens" value="COMMA"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    <module name="NoFinalizer"/>
+    <module name="GenericWhitespace">
+      <property name="severity" value="ignore"/>
+      <message key="ws.followed" value="GenericWhitespace ''{0}'' is followed by whitespace."/>
+      <message key="ws.illegalFollow" value="GenericWhitespace ''{0}'' should followed by whitespace."/>
+      <message key="ws.preceded" value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
+      <message key="ws.notPreceded" value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    <module name="Indentation">
+      <property name="severity" value="ignore"/>
+      <property name="basicOffset" value="2"/>
+      <property name="caseIndent" value="2"/>
+      <property name="arrayInitIndent" value="2"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    <module name="MethodParamPad">
+      <property name="severity" value="ignore"/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+    <module name="OperatorWrap">
+      <property name="severity" value="ignore"/>
+      <property name="option" value="NL"/>
+      <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
+      <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+    </module>
+  </module>
+  <module name="FileTabCharacter">
+    <property name="severity" value="ignore"/>
+    <property name="eachLine" value="true"/>
+    <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
+  </module>
+  <module name="SuppressWithNearbyCommentFilter">
+    <property name="commentFormat" value="CS IGNORE (\w+) FOR NEXT (\d+) LINES\. REASON\: \w+"/>
+    <property name="checkFormat" value="$1"/>
+    <property name="influenceFormat" value="$2"/>
+  </module>
+  <module name="SuppressionFilter">
+    <property name="file" value="${samedir}/checkstyle_suppressions.xml"/>
+  </module>
+</module>
diff --git a/buck-tools/checkstyle_suppressions.xml b/buck-tools/checkstyle_suppressions.xml
new file mode 100644
index 0000000..5f5d9ee
--- /dev/null
+++ b/buck-tools/checkstyle_suppressions.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE suppressions PUBLIC
+  "-//Puppy Crawl//DTD Suppressions 1.1//EN"
+  "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
+<suppressions>
+  <suppress files="[/\\].apt_generated[/\\]" checks=".*"/>
+</suppressions>
diff --git a/buck-tools/default.defs b/buck-tools/default.defs
new file mode 100644
index 0000000..86b7149
--- /dev/null
+++ b/buck-tools/default.defs
@@ -0,0 +1,8 @@
+include_defs('//bucklets/maven_jar.bucklet')
+
+BASE_DEPS = [
+    '//lib:junit',
+    '//lib:hamcrest-all',
+    '//lib:slf4j-api',
+    '//lib:guava-testlib',
+]
diff --git a/buck-tools/download_all.py b/buck-tools/download_all.py
new file mode 100755
index 0000000..ba1c199
--- /dev/null
+++ b/buck-tools/download_all.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed 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.
+
+from optparse import OptionParser
+import re
+from subprocess import check_call, CalledProcessError, Popen, PIPE
+
+MAIN = ['//buck-tools/eclipse:classpath']
+PAT = re.compile(r'"(//.*?)" -> "//buck-tools:download_file"')
+# TODO(davido): Remove this hack when Buck bugs are fixed:
+# https://github.com/facebook/buck/issues/656
+# https://github.com/facebook/buck/issues/658
+JGIT = re.compile(r'//org.eclipse.jgit.*')
+CELL = '//lib/jgit'
+
+opts = OptionParser()
+opts.add_option('--src', action='store_true')
+args, _ = opts.parse_args()
+
+targets = set()
+
+p = Popen(['buck', 'audit', 'classpath', '--dot'] + MAIN, stdout = PIPE)
+for line in p.stdout:
+  m = PAT.search(line)
+  if m:
+    n = m.group(1)
+    if JGIT.match(n):
+      n = CELL + n[1:]
+    if args.src and n.endswith('__download_bin'):
+      n = n[:-13] + 'src'
+    targets.add(n)
+r = p.wait()
+if r != 0:
+  exit(r)
+
+try:
+  check_call(['buck', 'build'] + sorted(targets))
+except CalledProcessError as err:
+  exit(1)
diff --git a/buck-tools/download_file.py b/buck-tools/download_file.py
new file mode 100755
index 0000000..bd67b50
--- /dev/null
+++ b/buck-tools/download_file.py
@@ -0,0 +1,198 @@
+#!/usr/bin/env python
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed 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.
+
+from __future__ import print_function
+
+from hashlib import sha1
+from optparse import OptionParser
+from os import link, makedirs, path, remove
+import shutil
+from subprocess import check_call, CalledProcessError
+from sys import stderr
+from util import hash_file, resolve_url
+from zipfile import ZipFile, BadZipfile, LargeZipFile
+
+GERRIT_HOME = path.expanduser('~/.gerritcodereview')
+CACHE_DIR = path.join(GERRIT_HOME, 'buck-cache', 'downloaded-artifacts')
+# LEGACY_CACHE_DIR is only used to allow existing workspaces to move already
+# downloaded files to the new cache directory.
+# Please remove after 3 months (2015-10-07).
+LEGACY_CACHE_DIR = path.join(GERRIT_HOME, 'buck-cache')
+LOCAL_PROPERTIES = 'local.properties'
+
+
+def safe_mkdirs(d):
+  if path.isdir(d):
+    return
+  try:
+    makedirs(d)
+  except OSError as err:
+    if not path.isdir(d):
+      raise err
+
+
+def download_properties(root_dir):
+  """ Get the download properties.
+
+  First tries to find the properties file in the given root directory,
+  and if not found there, tries in the Gerrit settings folder in the
+  user's home directory.
+
+  Returns a set of download properties, which may be empty.
+
+  """
+  p = {}
+  local_prop = path.join(root_dir, LOCAL_PROPERTIES)
+  if not path.isfile(local_prop):
+    local_prop = path.join(GERRIT_HOME, LOCAL_PROPERTIES)
+  if path.isfile(local_prop):
+    try:
+      with open(local_prop) as fd:
+        for line in fd:
+          if line.startswith('download.'):
+            d = [e.strip() for e in line.split('=', 1)]
+            name, url = d[0], d[1]
+            p[name[len('download.'):]] = url
+    except OSError:
+      pass
+  return p
+
+
+def cache_entry(args):
+  if args.v:
+    h = args.v
+  else:
+    h = sha1(args.u.encode('utf-8')).hexdigest()
+  name = '%s-%s' % (path.basename(args.o), h)
+  return path.join(CACHE_DIR, name)
+
+# Please remove after 3 months (2015-10-07). See LEGACY_CACHE_DIR above.
+def legacy_cache_entry(args):
+  if args.v:
+    h = args.v
+  else:
+    h = sha1(args.u.encode('utf-8')).hexdigest()
+  name = '%s-%s' % (path.basename(args.o), h)
+  return path.join(LEGACY_CACHE_DIR, name)
+
+
+opts = OptionParser()
+opts.add_option('-o', help='local output file')
+opts.add_option('-u', help='URL to download')
+opts.add_option('-v', help='expected content SHA-1')
+opts.add_option('-x', action='append', help='file to delete from ZIP')
+opts.add_option('--exclude_java_sources', action='store_true')
+opts.add_option('--unsign', action='store_true')
+args, _ = opts.parse_args()
+
+root_dir = args.o
+while root_dir:
+  root_dir, n = path.split(root_dir)
+  if n == 'buck-out':
+    break
+
+redirects = download_properties(root_dir)
+cache_ent = cache_entry(args)
+legacy_cache_ent = legacy_cache_entry(args)
+src_url = resolve_url(args.u, redirects)
+
+# Please remove after 3 months (2015-10-07). See LEGACY_CACHE_DIR above.
+if not path.exists(cache_ent) and path.exists(legacy_cache_ent):
+  try:
+    safe_mkdirs(path.dirname(cache_ent))
+  except OSError as err:
+    print('error creating directory %s: %s' %
+          (path.dirname(cache_ent), err), file=stderr)
+    exit(1)
+  shutil.move(legacy_cache_ent, cache_ent)
+
+if not path.exists(cache_ent):
+  try:
+    safe_mkdirs(path.dirname(cache_ent))
+  except OSError as err:
+    print('error creating directory %s: %s' %
+          (path.dirname(cache_ent), err), file=stderr)
+    exit(1)
+
+  print('Download %s' % src_url, file=stderr)
+  try:
+    check_call(['curl', '--proxy-anyauth', '-ksfo', cache_ent, src_url])
+  except OSError as err:
+    print('could not invoke curl: %s\nis curl installed?' % err, file=stderr)
+    exit(1)
+  except CalledProcessError as err:
+    print('error using curl: %s' % err, file=stderr)
+    exit(1)
+
+if args.v:
+  have = hash_file(sha1(), cache_ent).hexdigest()
+  if args.v != have:
+    print((
+      '%s:\n' +
+      'expected %s\n' +
+      'received %s\n') % (src_url, args.v, have), file=stderr)
+    try:
+      remove(cache_ent)
+    except OSError as err:
+      if path.exists(cache_ent):
+        print('error removing %s: %s' % (cache_ent, err), file=stderr)
+    exit(1)
+
+exclude = []
+if args.x:
+  exclude += args.x
+if args.exclude_java_sources:
+  try:
+    with ZipFile(cache_ent, 'r') as zf:
+      for n in zf.namelist():
+        if n.endswith('.java'):
+          exclude.append(n)
+  except (BadZipfile, LargeZipFile) as err:
+    print('error opening %s: %s' % (cache_ent, err), file=stderr)
+    exit(1)
+
+if args.unsign:
+  try:
+    with ZipFile(cache_ent, 'r') as zf:
+      for n in zf.namelist():
+        if (n.endswith('.RSA')
+            or n.endswith('.SF')
+            or n.endswith('.LIST')):
+          exclude.append(n)
+  except (BadZipfile, LargeZipFile) as err:
+    print('error opening %s: %s' % (cache_ent, err), file=stderr)
+    exit(1)
+
+safe_mkdirs(path.dirname(args.o))
+if exclude:
+  try:
+    shutil.copyfile(cache_ent, args.o)
+  except (shutil.Error, IOError) as err:
+    print('error copying to %s: %s' % (args.o, err), file=stderr)
+    exit(1)
+  try:
+    check_call(['zip', '-d', args.o] + exclude)
+  except CalledProcessError as err:
+    print('error removing files from zip: %s' % err, file=stderr)
+    exit(1)
+else:
+  try:
+    link(cache_ent, args.o)
+  except OSError as err:
+    try:
+      shutil.copyfile(cache_ent, args.o)
+    except (shutil.Error, IOError) as err:
+      print('error copying to %s: %s' % (args.o, err), file=stderr)
+      exit(1)
diff --git a/buck-tools/java_doc.defs b/buck-tools/java_doc.defs
new file mode 100644
index 0000000..65865bb
--- /dev/null
+++ b/buck-tools/java_doc.defs
@@ -0,0 +1,38 @@
+def java_doc(
+    name,
+    title,
+    pkgs,
+    paths,
+    srcs = [],
+    deps = [],
+    visibility = [],
+    do_it_wrong = False,
+  ):
+  if do_it_wrong:
+    sourcepath = paths
+  else:
+    sourcepath = ['$SRCDIR/' + n for n in paths]
+  genrule(
+    name = name,
+    cmd = ' '.join([
+      'while ! test -f .buckconfig; do cd ..; done;',
+      'javadoc',
+      '-quiet',
+      '-protected',
+      '-encoding UTF-8',
+      '-charset UTF-8',
+      '-notimestamp',
+      '-windowtitle "' + title + '"',
+      '-link http://docs.oracle.com/javase/7/docs/api',
+      '-subpackages ',
+      ':'.join(pkgs),
+      '-sourcepath ',
+      ':'.join(sourcepath),
+      ' -classpath ',
+      ':'.join(['$(classpath %s)' % n for n in deps]),
+      '-d $TMP',
+    ]) + ';jar cf $OUT -C $TMP .',
+    srcs = srcs,
+    out = name + '.jar',
+    visibility = visibility,
+)
diff --git a/buck-tools/java_sources.defs b/buck-tools/java_sources.defs
new file mode 100644
index 0000000..0b3974e
--- /dev/null
+++ b/buck-tools/java_sources.defs
@@ -0,0 +1,10 @@
+def java_sources(
+    name,
+    srcs,
+    visibility = []
+  ):
+  java_library(
+    name = name,
+    resources = srcs,
+    visibility = visibility,
+  )
diff --git a/buck-tools/pack_war.py b/buck-tools/pack_war.py
new file mode 100755
index 0000000..cd836a8
--- /dev/null
+++ b/buck-tools/pack_war.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed 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.
+
+from __future__ import print_function
+from optparse import OptionParser
+from os import makedirs, path, symlink
+from subprocess import check_call
+import sys
+
+opts = OptionParser()
+opts.add_option('-o', help='path to write WAR to')
+opts.add_option('--lib', action='append', help='target for WEB-INF/lib')
+opts.add_option('--pgmlib', action='append', help='target for WEB-INF/pgm-lib')
+opts.add_option('--tmp', help='temporary directory')
+args, ctx = opts.parse_args()
+
+war = args.tmp
+jars = set()
+basenames = set()
+
+def prune(l):
+  return [j for e in l for j in e.split(':')]
+
+def link_jars(libs, directory):
+  makedirs(directory)
+  for j in libs:
+    if j not in jars:
+      # When jgit is consumed from its own cell,
+      # potential duplicates should be filtered.
+      # e.g. jsch.jar will be reached through:
+      # 1. /home/username/projects/gerrit/buck-out/gen/lib/jsch.jar
+      # 2. /home/username/projects/jgit/buck-out/gen/lib/jsch.jar
+      if (j.find('jgit/buck-out/gen/lib') > 0
+          and path.basename(j) in basenames):
+          continue
+      jars.add(j)
+      n = path.basename(j)
+      if j.find('buck-out/gen/gerrit-') > 0:
+        n = j[j.find('buck-out'):].split('/')[2] + '-' + n
+      basenames.add(n)
+      symlink(j, path.join(directory, n))
+
+if args.lib:
+  link_jars(prune(args.lib), path.join(war, 'WEB-INF', 'lib'))
+if args.pgmlib:
+  link_jars(prune(args.pgmlib), path.join(war, 'WEB-INF', 'pgm-lib'))
+try:
+  for s in ctx:
+    check_call(['unzip', '-q', '-d', war, s])
+  check_call(['zip', '-9qr', args.o, '.'], cwd=war)
+except KeyboardInterrupt:
+  print('Interrupted by user', file=sys.stderr)
+  exit(1)
diff --git a/buck-tools/util.py b/buck-tools/util.py
new file mode 100644
index 0000000..96f6047
--- /dev/null
+++ b/buck-tools/util.py
@@ -0,0 +1,102 @@
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed 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.
+
+import os
+from os import path
+
+REPO_ROOTS = {
+  'GERRIT': 'http://gerrit-maven.storage.googleapis.com',
+  'GERRIT_API': 'https://gerrit-api.commondatastorage.googleapis.com/release',
+  'MAVEN_CENTRAL': 'http://repo1.maven.org/maven2',
+  'MAVEN_LOCAL': 'file://' + path.expanduser('~/.m2/repository'),
+}
+
+
+def resolve_url(url, redirects):
+  """ Resolve URL of a Maven artifact.
+
+  prefix:path is passed as URL. prefix identifies known or custom
+  repositories that can be rewritten in redirects set, passed as
+  second arguments.
+
+  A special case is supported, when prefix neither exists in
+  REPO_ROOTS, no in redirects set: the url is returned as is.
+  This enables plugins to pass custom maven_repository URL as is
+  directly to maven_jar().
+
+  Returns a resolved path for Maven artifact.
+  """
+  s = url.find(':')
+  if s < 0:
+    return url
+  scheme, rest = url[:s], url[s+1:]
+  if scheme in redirects:
+    root = redirects[scheme]
+  elif scheme in REPO_ROOTS:
+    root = REPO_ROOTS[scheme]
+  else:
+    return url
+  root = root.rstrip('/')
+  rest = rest.lstrip('/')
+  return '/'.join([root, rest])
+
+
+def hash_file(hash_obj, path):
+  """Hash the contents of a file.
+
+  Args:
+    hash_obj: an open hash object, e.g. hashlib.sha1().
+    path: path to the file to hash.
+
+  Returns:
+    The passed-in hash_obj.
+  """
+  with open(path, 'rb') as f:
+    while True:
+      b = f.read(8192)
+      if not b:
+        break
+      hash_obj.update(b)
+  return hash_obj
+
+
+def hash_bower_component(hash_obj, path):
+  """Hash the contents of a bower component directory.
+
+  This is a stable hash of a directory downloaded with `bower install`, minus
+  the .bower.json file, which is autogenerated each time by bower. Used in lieu
+  of hashing a zipfile of the contents, since zipfiles are difficult to hash in
+  a stable manner.
+
+  Args:
+    hash_obj: an open hash object, e.g. hashlib.sha1().
+    path: path to the directory to hash.
+
+  Returns:
+    The passed-in hash_obj.
+  """
+  if not os.path.isdir(path):
+    raise ValueError('Not a directory: %s' % path)
+
+  path = os.path.abspath(path)
+  for root, dirs, files in os.walk(path):
+    dirs.sort()
+    for f in sorted(files):
+      if f == '.bower.json':
+        continue
+      p = os.path.join(root, f)
+      hash_obj.update(p[len(path)+1:])
+      hash_file(hash_obj, p)
+
+  return hash_obj
diff --git a/bucklets/maven_jar.bucklet b/bucklets/maven_jar.bucklet
new file mode 100644
index 0000000..16a3f91
--- /dev/null
+++ b/bucklets/maven_jar.bucklet
@@ -0,0 +1,180 @@
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed 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.
+
+GERRIT = 'GERRIT:'
+GERRIT_API = 'GERRIT_API:'
+MAVEN_CENTRAL = 'MAVEN_CENTRAL:'
+MAVEN_LOCAL = 'MAVEN_LOCAL:'
+
+def define_license(name):
+  n = 'LICENSE-' + name
+  genrule(
+    name = n,
+    cmd = 'ln -s $SRCS $OUT',
+    srcs = [n],
+    out = n,
+    visibility = ['PUBLIC'],
+  )
+
+def maven_jar(
+    name,
+    id,
+    license,
+    exclude = [],
+    exclude_java_sources = False,
+    unsign = False,
+    deps = [],
+    exported_deps = [],
+    sha1 = '', bin_sha1 = '', src_sha1 = '',
+    repository = MAVEN_CENTRAL,
+    attach_source = True,
+    visibility = ['PUBLIC'],
+    local_license = False,
+    full_url = ''):
+  from os import path
+
+  parts = id.split(':')
+  if len(parts) not in [3, 4]:
+    raise NameError('%s:\nexpected id="groupId:artifactId:version[:classifier]"'
+                    % id)
+  if len(parts) == 4:
+    group, artifact, version, classifier = parts
+  else:
+    group, artifact, version = parts
+    classifier = None
+
+  # SNAPSHOT artifacts are handled differently on Google storage bucket:
+  # 'SNAPSHOT' is discarded from the directory name. However on other
+  # Maven repositories, most notable local repository located in
+  # ~/.m2/repository (and is supported through MAVEN_LOCAL repository)
+  # it must be preserved, otherwise the artifact wouldn't be found.
+  # Atm the SNAPSHOT part is only discarded for Google storage bucket.
+  if 'SNAPSHOT' in version and repository.startswith(GERRIT):
+    file_version = version.replace('-SNAPSHOT', '')
+    version = version.split('-SNAPSHOT')[0] + '-SNAPSHOT'
+  else:
+    file_version = version
+
+  if classifier is not None:
+    file_version += '-' + classifier
+
+  jar = path.join(name, artifact.lower() + '-' + file_version)
+
+  url = '/'.join([
+    repository,
+    group.replace('.', '/'), artifact, version,
+    artifact + '-' + file_version])
+
+  if full_url != '':
+    url = full_url
+
+  binjar = jar + '.jar'
+  binurl = url + '.jar'
+
+  srcjar = jar + '-src.jar'
+  srcurl = url + '-sources.jar'
+
+  cmd = ['$(exe //buck-tools:download_file)', '-o', '$OUT', '-u', binurl]
+  if sha1:
+    cmd.extend(['-v', sha1])
+  elif bin_sha1:
+    cmd.extend(['-v', bin_sha1])
+  for x in exclude:
+    cmd.extend(['-x', x])
+  if exclude_java_sources:
+    cmd.append('--exclude_java_sources')
+  if unsign:
+    cmd.append('--unsign')
+
+  genrule(
+    name = '%s__download_bin' % name,
+    cmd = ' '.join(cmd),
+    out = binjar,
+  )
+  license = ':LICENSE-' + license
+  if not local_license:
+    license = '//lib' + license
+  license = [license]
+
+  if src_sha1 or attach_source:
+    cmd = ['$(exe //buck-tools:download_file)', '-o', '$OUT', '-u', srcurl]
+    if src_sha1:
+      cmd.extend(['-v', src_sha1])
+    genrule(
+      name = '%s__download_src' % name,
+      cmd = ' '.join(cmd),
+      out = srcjar,
+    )
+    prebuilt_jar(
+      name = '%s_src' % name,
+      binary_jar = ':%s__download_src' % name,
+      deps = license,
+      visibility = visibility,
+    )
+  else:
+    srcjar = None
+    genrule(
+      name = '%s_src' % name,
+      cmd = ':>$OUT',
+      out = '__%s__no_src' % name,
+    )
+
+  if exported_deps:
+    prebuilt_jar(
+      name = '%s__jar' % name,
+      deps = deps + license,
+      binary_jar = ':%s__download_bin' % name,
+      source_jar = ':%s__download_src' % name if srcjar else None,
+    )
+    java_library(
+      name = name,
+      exported_deps = exported_deps + [':' + name + '__jar'],
+      visibility = visibility,
+    )
+  else:
+    prebuilt_jar(
+      name = name,
+      deps = deps + license,
+      binary_jar = ':%s__download_bin' % name,
+      source_jar = ':%s__download_src' % name if srcjar else None,
+      visibility = visibility,
+    )
+
+
+def merge_maven_jars(
+    name,
+    srcs,
+    visibility = []):
+
+  def cmd(jars):
+    return ('$(location //buck-tools:merge_jars) $OUT '
+            + ' '.join(['$(location %s)' % j for j in jars]))
+
+  genrule(
+    name = '%s__merged_bin' % name,
+    cmd = cmd(['%s__download_bin' % s for s in srcs]),
+    out = '%s__merged.jar' % name,
+  )
+  genrule(
+    name = '%s__merged_src' % name,
+    cmd = cmd(['%s__download_src' % s for s in srcs]),
+    # buck-tools/eclipse/project.py requires -src.jar suffix.
+    out = '%s__merged-src.jar' % name,
+  )
+  prebuilt_jar(
+    name = name,
+    binary_jar = ':%s__merged_bin' % name,
+    source_jar = ':%s__merged_src' % name,
+    visibility = visibility,
+  )
diff --git a/cli/BUCK b/cli/BUCK
new file mode 100644
index 0000000..521be31
--- /dev/null
+++ b/cli/BUCK
@@ -0,0 +1,22 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-cli'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//incubator/api:onos-incubator-api',
+    '//utils/rest:onlab-rest',
+    '//core/common:onos-core-common',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
diff --git a/core/api/BUCK b/core/api/BUCK
new file mode 100644
index 0000000..387c502
--- /dev/null
+++ b/core/api/BUCK
@@ -0,0 +1,34 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:COMPILE',
+    '//utils/misc:onlab-misc',
+    '//utils/osgi:onlab-osgi',
+    '//utils/rest:onlab-rest',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    resources_root = 'src/test/resources',
+    resources = glob(['src/test/resources/**']),
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-api-tests',
+    visibility = ['PUBLIC'],
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/core/common/BUCK b/core/common/BUCK
new file mode 100644
index 0000000..cbe9efc
--- /dev/null
+++ b/core/common/BUCK
@@ -0,0 +1,33 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-core-common'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+SRC_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+    '//core/api:onos-api-tests',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = SRC_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'onos-core-common-tests',
+    visibility = ['PUBLIC'],
+    srcs = glob([TEST + '/*.java']),
+    resources_root = 'src/test/resources',
+    resources = glob(['src/test/resources/**']),
+    deps = SRC_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/core/net/BUCK b/core/net/BUCK
new file mode 100644
index 0000000..42cb80c
--- /dev/null
+++ b/core/net/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-core-net'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/core/net/src/main/java/org/onosproject/net/statistic/impl/FlowStatisticManager.java b/core/net/src/main/java/org/onosproject/net/statistic/impl/FlowStatisticManager.java
index 859c4da..23b981e 100644
--- a/core/net/src/main/java/org/onosproject/net/statistic/impl/FlowStatisticManager.java
+++ b/core/net/src/main/java/org/onosproject/net/statistic/impl/FlowStatisticManager.java
@@ -25,9 +25,10 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.utils.Comparators;
+
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Device;
+import org.onosproject.net.ElementId;
 import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.device.DeviceService;
@@ -49,6 +50,7 @@
 import org.slf4j.Logger;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -81,6 +83,33 @@
 
     private final InternalFlowRuleStatsListener frListener = new InternalFlowRuleStatsListener();
 
+    // FIXME: refactor these comparators to be shared with the CLI implmentations
+    public static final Comparator<ElementId> ELEMENT_ID_COMPARATOR = new Comparator<ElementId>() {
+        @Override
+        public int compare(ElementId id1, ElementId id2) {
+            return id1.toString().compareTo(id2.toString());
+        }
+    };
+
+    public static final Comparator<ConnectPoint> CONNECT_POINT_COMPARATOR = new Comparator<ConnectPoint>() {
+        @Override
+        public int compare(ConnectPoint o1, ConnectPoint o2) {
+            int compareId = ELEMENT_ID_COMPARATOR.compare(o1.elementId(), o2.elementId());
+            return (compareId != 0) ?
+                    compareId :
+                    Long.signum(o1.port().toLong() - o2.port().toLong());
+        }
+    };
+
+    public static final Comparator<TypedFlowEntryWithLoad> TYPEFLOWENTRY_WITHLOAD_COMPARATOR =
+            new Comparator<TypedFlowEntryWithLoad>() {
+                @Override
+                public int compare(TypedFlowEntryWithLoad fe1, TypedFlowEntryWithLoad fe2) {
+                    long delta = fe1.load().rate() - fe2.load().rate();
+                    return delta == 0 ? 0 : (delta > 0 ? -1 : +1);
+                }
+            };
+
     @Activate
     public void activate() {
         flowRuleService.addListener(frListener);
@@ -97,7 +126,7 @@
     public Map<ConnectPoint, SummaryFlowEntryWithLoad> loadSummary(Device device) {
         checkPermission(STATISTIC_READ);
 
-        Map<ConnectPoint, SummaryFlowEntryWithLoad> summaryLoad = new TreeMap<>(Comparators.CONNECT_POINT_COMPARATOR);
+        Map<ConnectPoint, SummaryFlowEntryWithLoad> summaryLoad = new TreeMap<>(CONNECT_POINT_COMPARATOR);
 
         if (device == null) {
             return summaryLoad;
@@ -128,7 +157,7 @@
                                                                   Instruction.Type instType) {
         checkPermission(STATISTIC_READ);
 
-        Map<ConnectPoint, List<TypedFlowEntryWithLoad>> allLoad = new TreeMap<>(Comparators.CONNECT_POINT_COMPARATOR);
+        Map<ConnectPoint, List<TypedFlowEntryWithLoad>> allLoad = new TreeMap<>(CONNECT_POINT_COMPARATOR);
 
         if (device == null) {
             return allLoad;
@@ -162,7 +191,7 @@
                                                                    int topn) {
         checkPermission(STATISTIC_READ);
 
-        Map<ConnectPoint, List<TypedFlowEntryWithLoad>> allLoad = new TreeMap<>(Comparators.CONNECT_POINT_COMPARATOR);
+        Map<ConnectPoint, List<TypedFlowEntryWithLoad>> allLoad = new TreeMap<>(CONNECT_POINT_COMPARATOR);
 
         if (device == null) {
             return allLoad;
@@ -373,7 +402,7 @@
 
         // Sort with descending order of load
         List<TypedFlowEntryWithLoad> tfel =
-                fel.stream().sorted(Comparators.TYPEFLOWENTRY_WITHLOAD_COMPARATOR).
+                fel.stream().sorted(TYPEFLOWENTRY_WITHLOAD_COMPARATOR).
                         limit(topn).collect(Collectors.toList());
 
         return tfel;
diff --git a/core/security/BUCK b/core/security/BUCK
new file mode 100644
index 0000000..3618496
--- /dev/null
+++ b/core/security/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/security/**/'
+TEST = 'src/test/java/org/onosproject/security/**/'
+CURRENT_NAME = 'onos-security'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/core/store/dist/BUCK b/core/store/dist/BUCK
new file mode 100644
index 0000000..8653ad5
--- /dev/null
+++ b/core/store/dist/BUCK
@@ -0,0 +1,39 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-core-dist'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//core/common:onos-core-common',
+    '//utils/rest:onlab-rest',
+    '//core/store/serializers:onos-core-serializers',
+    '//lib:netty-transport',
+    '//lib:netty-codec',
+    '//lib:netty-buffer',
+    '//lib:netty-handler',
+    '//lib:netty-transport-native-epoll',
+    '//lib:commons-math3',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+     '//core/api:onos-api-tests',
+     '//core/common:onos-core-common-tests',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name= 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/core/store/persistence/BUCK b/core/store/persistence/BUCK
new file mode 100644
index 0000000..3caf6ea
--- /dev/null
+++ b/core/store/persistence/BUCK
@@ -0,0 +1,30 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-core-persistence'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:catalyst-serializer',
+    '//lib:mapdb',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/core/store/primitives/BUCK b/core/store/primitives/BUCK
new file mode 100644
index 0000000..1e77e32
--- /dev/null
+++ b/core/store/primitives/BUCK
@@ -0,0 +1,49 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-core-primitives'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//core/common:onos-core-common',
+    '//incubator/api:onos-incubator-api',
+    '//core/store/serializers:onos-core-serializers',
+    '//lib:copycat-client',
+    '//lib:copycat-server',
+    '//lib:copycat-protocol',
+    '//lib:copycat-core',
+    '//lib:typesafe-config',
+    '//lib:copycat-api',
+    '//lib:copycat-state-machine',
+    '//lib:copycat-state-log',
+    '//lib:catalyst-transport',
+    '//lib:catalyst-buffer',
+    '//lib:catalyst-common',
+    '//lib:catalyst-local',
+    '//lib:catalyst-serializer',
+    '//lib:atomix',
+    '//lib:atomix-resource',
+    '//lib:atomix-variables',
+    '//lib:atomix-resource-manager',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+    '//core/api:onos-api-tests',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/core/store/serializers/BUCK b/core/store/serializers/BUCK
new file mode 100644
index 0000000..050269d
--- /dev/null
+++ b/core/store/serializers/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-core-serializers'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/drivers/ciena/BUCK b/drivers/ciena/BUCK
new file mode 100644
index 0000000..ec8a793
--- /dev/null
+++ b/drivers/ciena/BUCK
@@ -0,0 +1,21 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-drivers-ciena'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+    '//utils/rest:onlab-rest',
+    '//drivers/utilities:onos-drivers-utilities',
+    '//protocols/rest/api:onos-restsb-api',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
diff --git a/drivers/cisco/BUCK b/drivers/cisco/BUCK
new file mode 100644
index 0000000..3d25bff
--- /dev/null
+++ b/drivers/cisco/BUCK
@@ -0,0 +1,19 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-drivers-cisco'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//drivers/utilities:onos-drivers-utilities',
+    '//protocols/netconf/api:onos-netconf-api',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
diff --git a/drivers/default/BUCK b/drivers/default/BUCK
new file mode 100644
index 0000000..7d72141
--- /dev/null
+++ b/drivers/default/BUCK
@@ -0,0 +1,35 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-drivers-default'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+    '//drivers/utilities:onos-drivers-utilities',
+    '//protocols/openflow/api:onos-of-api',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/drivers/fujitsu/BUCK b/drivers/fujitsu/BUCK
new file mode 100644
index 0000000..512cc2b
--- /dev/null
+++ b/drivers/fujitsu/BUCK
@@ -0,0 +1,19 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-drivers-fujitsu'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//drivers/utilities:onos-drivers-utilities',
+    '//protocols/netconf/api:onos-netconf-api',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
diff --git a/drivers/lumentum/BUCK b/drivers/lumentum/BUCK
new file mode 100644
index 0000000..0d8c328
--- /dev/null
+++ b/drivers/lumentum/BUCK
@@ -0,0 +1,19 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-drivers-lumentum'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.servicemix.bundles.snmp4j',
+    '//drivers/utilities:onos-drivers-utilities',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
diff --git a/drivers/netconf/BUCK b/drivers/netconf/BUCK
new file mode 100644
index 0000000..c292fa6
--- /dev/null
+++ b/drivers/netconf/BUCK
@@ -0,0 +1,19 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-drivers-netconf'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//drivers/utilities:onos-drivers-utilities',
+    '//protocols/netconf/api:onos-netconf-api',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
diff --git a/drivers/ovsdb/BUCK b/drivers/ovsdb/BUCK
new file mode 100644
index 0000000..d1ec756
--- /dev/null
+++ b/drivers/ovsdb/BUCK
@@ -0,0 +1,20 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-drivers-ovsdb'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//drivers/utilities:onos-drivers-utilities',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
diff --git a/drivers/utilities/BUCK b/drivers/utilities/BUCK
new file mode 100644
index 0000000..09c6916
--- /dev/null
+++ b/drivers/utilities/BUCK
@@ -0,0 +1,34 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-drivers-utilities'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//core/net:onos-core-net',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'onos-drivers-utilities-tests',
+    visibility = ['PUBLIC'],
+    resources_root = 'src/test/resources',
+    resources = glob(['src/test/resources/**']),
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/incubator/api/BUCK b/incubator/api/BUCK
new file mode 100644
index 0000000..13fd42b
--- /dev/null
+++ b/incubator/api/BUCK
@@ -0,0 +1,28 @@
+SRC = 'src/main/java/org/onosproject/incubator/**/'
+TEST = 'src/main/java/org/onosproject/incubator/**/'
+CURRENT_NAME = 'onos-incubator-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/incubator/net/BUCK b/incubator/net/BUCK
new file mode 100644
index 0000000..8a87455
--- /dev/null
+++ b/incubator/net/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/incubator/net/**/'
+TEST = 'src/main/java/org/onosproject/incubator/net/**/'
+CURRENT_NAME = 'onos-incubator-net'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/lib/BUCK b/lib/BUCK
new file mode 100644
index 0000000..24d4c3a
--- /dev/null
+++ b/lib/BUCK
@@ -0,0 +1,778 @@
+def define_license(name):
+  n = 'LICENSE-' + name
+  genrule(
+    name = n,
+    cmd = 'ln -s $SRCS $OUT',
+    srcs = [n],
+    out = n,
+    visibility = ['PUBLIC'],
+  )
+
+define_license(name = 'Apache2.0')
+
+include_defs('//bucklets/maven_jar.bucklet')
+
+java_library(
+  name = 'COMPILE',
+  visibility = ['PUBLIC'],
+  exported_deps = [
+    ':joda-time',
+    ':commons-configuration',
+    ':commons-logging',
+    ':commons-collections',
+    ':commons-lang3',
+    ':commons-io',
+    ':commons-pool',
+    ':objenesis',
+    ':guava',
+    ':netty',
+    ':netty-common',
+    ':commons-lang',
+    ':minimal-json',
+    ':kryo',
+    ':reflectasm',
+    ':asm',
+    ':minlog',
+    ':metrics-core',
+    ':metrics-json',
+    ':slf4j-api',
+    ':osgi-core',
+    ':org.osgi.compendium',
+    ':org.apache.felix.scr.annotations',
+    ':org.apache.felix.scr',
+    ':jackson-annotations',
+    ':jackson-core',
+    ':jackson-databind',
+    ':org.apache.karaf.features.core',
+    ':org.apache.karaf.system.core',
+
+# Is this still needed?
+    ':jsr305',
+  ],
+)
+
+java_library(
+  name = 'CORE_DEPS',
+  visibility = ['PUBLIC'],
+  exported_deps = [
+    ':COMPILE',
+    '//core/api:onos-api',
+    '//utils/misc:onlab-misc',
+    '//utils/osgi:onlab-osgi',
+  ],
+)
+
+java_library(
+  name = 'TEST',
+  visibility = ['PUBLIC'],
+  exported_deps = [
+    ':junit',
+    ':easymock',
+    ':hamcrest-core',
+    ':hamcrest-library',
+    ':hamcrest-all',
+    ':guava-testlib',
+    '//utils/junit:onlab-junit',
+  ],
+)
+
+maven_jar(
+  name = 'minimal-json',
+  id = 'com.eclipsesource.minimal-json:minimal-json:0.9.4',
+  sha1 = 'd6e7dd22569de97c2697a4af301a623f35028972',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'kryo',
+  id = 'com.esotericsoftware:kryo:3.0.0',
+  sha1 = '86f0de889ece7c30115d27d1c56246fd509201a8',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'minlog',
+  id = 'com.esotericsoftware:minlog:1.3.0',
+  sha1 = 'ff07b5f1b01d2f92bb00a337f9a94873712f0827',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'reflectasm',
+  id = 'com.esotericsoftware:reflectasm:1.11.0',
+  sha1 = 'f747d8b017a26bac575f8da14e8c1df6aecd3154',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jackson-annotations',
+  id = 'com.fasterxml.jackson.core:jackson-annotations:2.7.0',
+  sha1 = '19f42c154ffc689f40a77613bc32caeb17d744e3',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'org.apache.felix.scr',
+  id = 'org.apache.felix:org.apache.felix.scr:1.8.2',
+  sha1 = 'c3047d56ee57de0752821fd9c3894dda664f2e37',
+  license = 'Apache2.0',
+)
+
+
+
+maven_jar(
+  name = 'jackson-core',
+  id = 'com.fasterxml.jackson.core:jackson-core:2.7.0',
+  sha1 = '05f2bfd0866bcacbcc7c25ce25f80b5aeed0f72f',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jackson-databind',
+  id = 'com.fasterxml.jackson.core:jackson-databind:2.7.0',
+  sha1 = '7d3430de9f2b600b074ba3bc007edcfbc4bbf4fb',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jsr305',
+  id = 'com.google.code.findbugs:jsr305:3.0.1',
+  sha1 = 'f7be08ec23c21485b9b5a1cf1654c2ec8c58168d',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'error_prone_annotations',
+  id = 'com.google.errorprone:error_prone_annotations:2.0.2',
+  sha1 = '8382c6cdc18c8c8ad7840024fa340509cf16be11',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'guava',
+  id = 'com.google.guava:guava:19.0',
+  sha1 = '6ce200f6b23222af3d8abb6b6459e6c44f4bb0e9',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'guava-testlib',
+  id = 'com.google.guava:guava-testlib:19.0',
+  sha1 = 'ce5b880b206de3f76d364988a6308c68c726f74a',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'commons-collections',
+  id = 'commons-collections:commons-collections:3.2.2',
+  sha1 = '8ad72fe39fa8c91eaaf12aadb21e0c3661fe26d5',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'commons-configuration',
+  id = 'commons-configuration:commons-configuration:1.10',
+  sha1 = '2b36e4adfb66d966c5aef2d73deb6be716389dc9',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'commons-lang',
+  id = 'commons-lang:commons-lang:2.6',
+  sha1 = '0ce1edb914c94ebc388f086c6827e8bdeec71ac2',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'commons-logging',
+  id = 'commons-logging:commons-logging:1.1.1',
+  sha1 = '5043bfebc3db072ed80fbd362e7caf00e885d8ae',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'commons-pool',
+  id = 'commons-pool:commons-pool:1.6',
+  sha1 = '4572d589699f09d866a226a14b7f4323c6d8f040',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'commons-io',
+  id = 'commons-io:commons-io:2.4',
+  sha1 = 'b1b6ea3b7e4aa4f492509a4952029cd8e48019ad',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'metrics-core',
+  id = 'io.dropwizard.metrics:metrics-core:3.1.0',
+  sha1 = '40e16d596ca49964a88bbce2261e387895b3499e',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'metrics-json',
+  id = 'io.dropwizard.metrics:metrics-json:3.1.0',
+  sha1 = '47b1c72af77ca81771422269b807ef6198392741',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'netty',
+  id = 'io.netty:netty:3.10.5.Final',
+  sha1 = '9ca7d55d246092bddd29b867706e2f6c7db701a0',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'netty-buffer',
+  id = 'io.netty:netty-buffer:4.0.33.Final',
+  sha1 = 'dd14c35b020af7aa1c6fed7ec5e67a2aa165619e',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'netty-codec',
+  id = 'io.netty:netty-codec:4.0.33.Final',
+  sha1 = '56c31f1e373a9374f56173383fe8b6e089ea0351',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'netty-common',
+  id = 'io.netty:netty-common:4.0.33.Final',
+  sha1 = '1a1fde71cb95a6e18754b0fd7ac6749f15a86543',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'netty-handler',
+  id = 'io.netty:netty-handler:4.0.33.Final',
+  sha1 = '88325df280c3ba83011cf442883f9f55dc83d5bb',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'netty-transport',
+  id = 'io.netty:netty-transport:4.0.33.Final',
+  sha1 = '287c2378318efc12d6bfe00835cd66317fc53dcd',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'netty-transport-native-epoll',
+  id = 'io.netty:netty-transport-native-epoll:4.0.33.Final',
+  sha1 = 'f17c2b172e28e9447e0ecf1a87bc4ce3d45647f0',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'joda-time',
+  id = 'joda-time:joda-time:2.9',
+  sha1 = 'e8a58b7f5853b693b8c4795a714fe77c266c3acc',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'junit',
+  id = 'junit:junit:4.12',
+  sha1 = '2973d150c0dc1fefe998f834810d68f278ea58ec',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'commons-lang3',
+  id = 'org.apache.commons:commons-lang3:3.4',
+  sha1 = '5fe28b9518e58819180a43a850fbc0dd24b7c050',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'commons-math3',
+  id = 'org.apache.commons:commons-math3:3.2',
+  sha1 = 'ec2544ab27e110d2d431bdad7d538ed509b21e62',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'org.apache.felix.scr.annotations',
+  id = 'org.apache.felix:org.apache.felix.scr.annotations:1.9.12',
+  sha1 = '5fdc34da641dda8b9165c2be93211479a186da9c',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'org.apache.karaf.features.core',
+  id = 'org.apache.karaf.features:org.apache.karaf.features.core:3.0.5',
+  sha1 = '595b5ddfc4eccad090cb2a1eb14e2ba3cebcb5de',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'org.apache.karaf.system.core',
+  id = 'org.apache.karaf.system:org.apache.karaf.system.core:3.0.5',
+  sha1 = '9740da22ad1c07b2651d837277f0e910a2fc2300',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'easymock',
+  id = 'org.easymock:easymock:3.4',
+  sha1 = '9fdeea183a399f25c2469497612cad131e920fa3',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'hamcrest-core',
+  id = 'org.hamcrest:hamcrest-core:1.3',
+  sha1 = '42a25dc3219429f0e5d060061f71acb49bf010a0',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'hamcrest-library',
+  id = 'org.hamcrest:hamcrest-library:1.3',
+  sha1 = '4785a3c21320980282f9f33d0d1264a69040538f',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'hamcrest-all',
+  id = 'org.hamcrest:hamcrest-all:1.3',
+  sha1 = '63a21ebc981131004ad02e0434e799fd7f3a8d5a',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'mapdb',
+  id = 'org.mapdb:mapdb:1.0.8',
+  sha1 = '64485a221d9095fc7ab9b50cc34c6b4b58467e2e',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'objenesis',
+  id = 'org.objenesis:objenesis:2.2',
+  sha1 = '3fb533efdaa50a768c394aa4624144cf8df17845',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'org.osgi.compendium',
+  id = 'org.osgi:org.osgi.compendium:4.3.1',
+  sha1 = 'd1c9d7819de47d938a96ac2a3813bfd914684cf4',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'osgi-core',
+  id = 'org.osgi:org.osgi.core:4.3.1',
+  sha1 = '5458ffe2ba049e76c29f2df2dc3ffccddf8b839e',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'asm',
+  id = 'org.ow2.asm:asm:4.2',
+  sha1 = '4b2c12b92dd045aeabf5b2aeeb3220bf010da9d4',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'slf4j-api',
+  id = 'org.slf4j:slf4j-api:1.7.13',
+  sha1 = '7fcf30c25b8f4a9379b9dad0d3f487b25272c026',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'slf4j-jdk14',
+  id = 'org.slf4j:slf4j-jdk14:1.7.13',
+  sha1 = 'bcc4dd3bffd6bce845164140bdf18ce14e76b423',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'javax.ws.rs-api',
+  id = 'javax.ws.rs:javax.ws.rs-api:2.0.1',
+  sha1 = '104e9c2b5583cfcfeac0402316221648d6d8ea6b',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jersey-client',
+  id = 'org.glassfish.jersey.core:jersey-client:2.22.2',
+  sha1 = '1712fff037ce5a59e3d67f90fff29222989799ee',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jersey-common',
+  id = 'org.glassfish.jersey.core:jersey-common:2.22.2',
+  sha1 = '1209b89878b60ce7d49afadeff7522d2fde0e217',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jersey-server',
+  id = 'org.glassfish.jersey.core:jersey-server:2.22.2',
+  sha1 = '5ede3e5f98f8b14d31d1d0fffe9908df2bd41c0f',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jersey-test-framework-core',
+  id = 'org.glassfish.jersey.test-framework:jersey-test-framework-core:2.22.2',
+  sha1 = '0abc7ab1ac424392d8761798318f706de40fef4d',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jersey-test-framework-grizzly2',
+  id = 'org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2:2.22.2',
+  sha1 = '05aa3952528f09ce94360ab238446163d2544344',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jersey-media-multipart',
+  id = 'org.glassfish.jersey.media:jersey-media-multipart:2.22.2',
+  sha1 = '304107e42563307acd337c20734148cca41cda91',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'hk2-api',
+  id = 'org.glassfish.hk2:hk2-api:2.4.0-b34',
+  sha1 = '1017432e219dbd1d4a1121b2d7e87c5b2f0bcfb9',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'aopalliance-repackaged',
+  id = 'org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b34',
+  sha1 = '3d5e856dbc91a3a2b0bcb3a3424f8b62421ae4cf',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jersey-guava',
+  id = 'org.glassfish.jersey.bundles.repackaged:jersey-guava:2.22.2',
+  sha1 = '7422c693c89640c9685dfa99dbef2da745aa4617',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'javax.inject',
+  id = 'org.glassfish.hk2.external:javax.inject:2.4.0-b34',
+  sha1 = 'a6a3d4935af7b03e44126b5aac2c2a0ce98fe6e9',
+  license = 'Apache2.0',
+)
+
+
+maven_jar(
+  name = 'servlet-api',
+  id = 'javax.servlet:servlet-api:2.5',
+  sha1 = '5959582d97d8b61f4d154ca9e495aafd16726e34',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'atomix',
+  id = 'io.atomix:atomix:1.0.0-rc3',
+  sha1 = 'a572aa9cd069b2d43481901dc901429d0b43332f',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'atomix-collections',
+  id = 'io.atomix:atomix-collections:1.0.0-rc3',
+  sha1 = '161dbfd046cefabe7e6c972e70823c11f7abe65e',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'atomix-coordination',
+  id = 'io.atomix:atomix-coordination:1.0.0-rc3',
+  sha1 = '182a2618cbef13e6efe58b85aadfa1176b9d08f3',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'atomix-messaging',
+  id = 'io.atomix:atomix-messaging:1.0.0-rc3',
+  sha1 = '58b570d8e3e76a0d0c649b97f3ee0a6e3885958a',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'atomix-resource',
+  id = 'io.atomix:atomix-resource:1.0.0-rc3',
+  sha1 = 'e47a40d38e6241544ec75df0e6906c209190aebf',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'atomix-resource-manager',
+  id = 'io.atomix:atomix-resource-manager:1.0.0-rc3',
+  sha1 = '41a4cf53c27df12efb04832e1314a81c09c857cb',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'atomix-variables',
+  id = 'io.atomix:atomix-variables:1.0.0-rc3',
+  sha1 = 'dd0ca3c0d211b17b291877e21f0ef10f2aa4a9bd',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'catalyst-buffer',
+  id = 'io.atomix.catalyst:catalyst-buffer:1.0.4',
+  sha1 = '00fb023ebd860d44385750790328aa26a529c75f',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'catalyst-common',
+  id = 'io.atomix.catalyst:catalyst-common:1.0.4',
+  sha1 = '69d50a64ecf9f63de430aead9dc4b743d29f0195',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'catalyst-local',
+  id = 'io.atomix.catalyst:catalyst-local:1.0.4',
+  sha1 = 'cbee759c63ce9127c979f4f399d327551644270f',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'catalyst-serializer',
+  id = 'io.atomix.catalyst:catalyst-serializer:1.0.4',
+  sha1 = 'e86352776cf4fa17eabf4e1d90fe0587ced4f788',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'catalyst-transport',
+  id = 'io.atomix.catalyst:catalyst-transport:1.0.4',
+  sha1 = 'f36600add086a8848290cad9d6d117634b5bf069',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-client',
+  id = 'io.atomix.copycat:copycat-client:1.0.0-rc4',
+  sha1 = '9373c8920a57356b78896d791296a74a2eb868b4',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-protocol',
+  id = 'io.atomix.copycat:copycat-protocol:1.0.0-rc4',
+  sha1 = 'cea774c2e4ce7021a6bfca64fd885e875f01f4dc',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-server',
+  id = 'io.atomix.copycat:copycat-server:1.0.0-rc4',
+  sha1 = 'e2b6603dbd299d7b21685211df509dd4fbd2f0e9',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-core',
+  id = 'org.onosproject:copycat-core:0.5.1.onos',
+  sha1 = 'b268f3cbdd57f28244b21b2b8fc08116f63d736d',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-event-log',
+  id = 'org.onosproject:copycat-event-log:0.5.1.onos',
+  sha1 = 'a9e32b13e6500c66113202e7d123e7184b726054',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-leader-election',
+  id = 'org.onosproject:copycat-leader-election:0.5.1.onos',
+  sha1 = 'a33617e98caf4e909d7ac744e1f6cdd1ba4b1698',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-state-log',
+  id = 'org.onosproject:copycat-state-log:0.5.1.onos',
+  sha1 = '1dfa2b4c6da1cdc453fd3740cd506b9570f118ea',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-state-machine',
+  id = 'org.onosproject:copycat-state-machine:0.5.1.onos',
+  sha1 = '03f924b5c818c0684bdfa6c502e5fff8e07d6b77',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'copycat-api',
+  id = 'org.onosproject:copycat-api:0.5.1.onos',
+  sha1 = 'b947348875485814e2a175a0435cdae4138452fc',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'typesafe-config',
+  id = 'com.typesafe:config:1.2.1',
+  sha1 = 'f771f71fdae3df231bcd54d5ca2d57f0bf93f467',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'org.apache.karaf.shell.console',
+  id = 'org.apache.karaf.shell:org.apache.karaf.shell.console:3.0.5',
+  sha1 = 'bf60152b180919152f532ddbd96c7563c11bb048',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'httpclient-osgi',
+  id = 'org.apache.httpcomponents:httpclient-osgi:4.5.1',
+  sha1 = '0220a68ff36e5b0fa71b5dc0b1dc1d4ad2dcf524',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'httpcore-osgi',
+  id = 'org.apache.httpcomponents:httpcore-osgi:4.4.4',
+  sha1 = 'd5c14055e569afca96f4603d6f9d467bc72ccba8',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'ganymed-ssh2',
+  id = 'ch.ethz.ganymed:ganymed-ssh2:262',
+  sha1 = '7761dc665d0f6993dc846d914214fb93291e2bdf',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'openflowj',
+  id = 'org.onosproject:openflowj:0.9.2.onos',
+  sha1 = '7cd6a35f6638f8ee3f5415484842bf95a4e619db',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'org.apache.servicemix.bundles.snmp4j',
+  id = 'org.apache.servicemix.bundles:org.apache.servicemix.bundles.snmp4j:2.3.4_1',
+  sha1 = '5134e0b60a6d88b26fe4dec03488efe4f2463e65',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jetty-websocket',
+  id = 'org.eclipse.jetty:jetty-websocket:8.1.18.v20150929',
+  sha1 = '4a1610515aed4f02e7cb6ab0db564489d4d44d9f',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jetty-util',
+  id = 'org.eclipse.jetty:jetty-util:8.1.18.v20150929',
+  sha1 = 'fb8fb3debf99a626c827535bf06451a337c6b085',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jsch',
+  id = 'com.jcraft:jsch:0.1.53',
+  sha1 = '658b682d5c817b27ae795637dfec047c63d29935',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'rrd4j',
+  id = 'org.rrd4j:rrd4j:2.2',
+  sha1 = 'e5aee992ece8c82291b77bef96cd1d11c1e0a009',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'metrics-influxdb',
+  id = 'com.izettle:metrics-influxdb:1.1.1',
+  sha1 = 'a911d778c2f8607dd4e7a4cdb9b0cd97adcd0343',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'influxdb-java',
+  id = 'org.influxdb:influxdb-java:2.1',
+  sha1 = 'd2fe39fb8db1d823e64fc7ea54b779e1cab917c7',
+  license = 'Apache2.0',
+)
+
+
+maven_jar(
+  name = 'gmetric4j',
+  id = 'info.ganglia.gmetric4j:gmetric4j:1.0.10',
+  sha1 = '3d62003123b586adb86cb028cc0f8a8c3a701d81',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'metrics-ganglia',
+  id = 'io.dropwizard.metrics:metrics-ganglia:3.1.2',
+  sha1 = '2a4e2fcd6436f9b1771f0f9b6bab445dddcf704f',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'concurrent-trees',
+  id = 'com.googlecode.concurrent-trees:concurrent-trees:2.4.0',
+  sha1 = '2e505b78f9216abebbbdf1c3254bf9f4c565ae43',
+  license = 'Apache2.0',
+)
+
+
+# These SNMP libraries don't have release versions, so we access them directly by snapshot id. The SNMP provider is due for a refactoring
+# overhaul to fix some of these bogus dependencies.
+
+maven_jar(
+  name = 'snmp-core',
+  full_url = 'https://oss.sonatype.org/content/repositories/snapshots/com/btisystems/snmp-core/1.3-SNAPSHOT/snmp-core-1.3-20151110.124757-1',
+  id = 'com.btisystems:snmp-core:1.3-SNAPSHOT-20151110.124757-1',
+  repository = 'https://oss.sonatype.org/content/repositories/snapshots',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'bti7000',
+  id = 'com.btisystems.mibbler.mibs:bti7000:1.0-SNAPSHOT',
+  repository = 'https://oss.sonatype.org/content/repositories/snapshots',
+  full_url = 'https://oss.sonatype.org/content/repositories/snapshots/com/btisystems/mibbler/mibs/bti7000/1.0-SNAPSHOT/bti7000-1.0-20151221.113001-4',
+  attach_source = False,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'mibs-net-snmp',
+  id = 'com.btisystems.mibbler.mibs:net-snmp:1.0-SNAPSHOT',
+  repository = 'https://oss.sonatype.org/content/repositories/snapshots',
+  full_url = 'https://oss.sonatype.org/content/repositories/snapshots/com/btisystems/mibbler/mibs/net-snmp/1.0-SNAPSHOT/net-snmp-1.0-20151221.112958-4',
+  attach_source = False,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'mibs-rfc',
+  id = 'com.btisystems.mibbler.mibs:rfc:1.0-SNAPSHOT',
+  repository = 'https://oss.sonatype.org/content/repositories/snapshots',
+  full_url = 'https://oss.sonatype.org/content/repositories/snapshots/com/btisystems/mibbler/mibs/rfc/1.0-SNAPSHOT/rfc-1.0-20151221.113000-6',
+  attach_source = False,
+  license = 'Apache2.0',
+)
diff --git a/lib/LICENSE-Apache2.0 b/lib/LICENSE-Apache2.0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/LICENSE-Apache2.0
diff --git a/protocols/bgp/api/BUCK b/protocols/bgp/api/BUCK
new file mode 100644
index 0000000..5f295c9
--- /dev/null
+++ b/protocols/bgp/api/BUCK
@@ -0,0 +1,16 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-bgp-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/bgp/bgpio:onos-bgpio',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
diff --git a/protocols/bgp/bgpio/BUCK b/protocols/bgp/bgpio/BUCK
new file mode 100644
index 0000000..645be9e
--- /dev/null
+++ b/protocols/bgp/bgpio/BUCK
@@ -0,0 +1,28 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-bgpio'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/bgp/ctl/BUCK b/protocols/bgp/ctl/BUCK
new file mode 100644
index 0000000..e4d653c
--- /dev/null
+++ b/protocols/bgp/ctl/BUCK
@@ -0,0 +1,34 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-bgp-ctl'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:jersey-client',
+    '//lib:httpclient-osgi',
+    '//lib:httpcore-osgi',
+    '//lib:javax.ws.rs-api',
+    '//protocols/bgp/api:onos-bgp-api',
+    '//protocols/bgp/bgpio:onos-bgpio',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/netconf/api/BUCK b/protocols/netconf/api/BUCK
new file mode 100644
index 0000000..6625366
--- /dev/null
+++ b/protocols/netconf/api/BUCK
@@ -0,0 +1,15 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-netconf-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
diff --git a/protocols/netconf/ctl/BUCK b/protocols/netconf/ctl/BUCK
new file mode 100644
index 0000000..dae0d7c
--- /dev/null
+++ b/protocols/netconf/ctl/BUCK
@@ -0,0 +1,30 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-netconf-ctl'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:ganymed-ssh2',
+    '//protocols/netconf/api:onos-netconf-api'
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/openflow/api/BUCK b/protocols/openflow/api/BUCK
new file mode 100644
index 0000000..cdd21c3
--- /dev/null
+++ b/protocols/openflow/api/BUCK
@@ -0,0 +1,30 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-of-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+    '//core/api:onos-api-tests',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/openflow/ctl/BUCK b/protocols/openflow/ctl/BUCK
new file mode 100644
index 0000000..3c2cd91
--- /dev/null
+++ b/protocols/openflow/ctl/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-of-ctl'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+    '//protocols/openflow/api:onos-of-api'
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+    '//core/api:onos-api-tests',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java b/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java
index 56d422a..626c8ff 100644
--- a/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java
+++ b/protocols/openflow/ctl/src/test/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImplTest.java
@@ -144,7 +144,7 @@
         replay(mockConfigService);
 
         ComponentContext mockContext = EasyMock.createMock(ComponentContext.class);
-        Dictionary<String, String> properties = new Hashtable<>();
+        Dictionary<String, Object> properties = new Hashtable<>();
         properties.put("openflowPorts",
                        Integer.toString(TestTools.findAvailablePort(0)));
         expect(mockContext.getProperties()).andReturn(properties);
diff --git a/protocols/ospf/api/BUCK b/protocols/ospf/api/BUCK
new file mode 100644
index 0000000..e9f3762
--- /dev/null
+++ b/protocols/ospf/api/BUCK
@@ -0,0 +1,28 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-ospf-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/ospf/ctl/BUCK b/protocols/ospf/ctl/BUCK
new file mode 100644
index 0000000..df0e85b
--- /dev/null
+++ b/protocols/ospf/ctl/BUCK
@@ -0,0 +1,30 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-ospf-ctl'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ospf/api:onos-ospf-api',
+    '//protocols/ospf/protocol:onos-ospf-protocol',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/ospf/protocol/BUCK b/protocols/ospf/protocol/BUCK
new file mode 100644
index 0000000..ee5bc2e
--- /dev/null
+++ b/protocols/ospf/protocol/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-ospf-protocol'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ospf/api:onos-ospf-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/ovsdb/api/BUCK b/protocols/ovsdb/api/BUCK
new file mode 100644
index 0000000..a3a2279
--- /dev/null
+++ b/protocols/ovsdb/api/BUCK
@@ -0,0 +1,30 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-ovsdb-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:netty-transport',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/ovsdb/ctl/BUCK b/protocols/ovsdb/ctl/BUCK
new file mode 100644
index 0000000..500358c
--- /dev/null
+++ b/protocols/ovsdb/ctl/BUCK
@@ -0,0 +1,34 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-ovsdb-ctl'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:netty-transport',
+    '//lib:netty-buffer',
+    '//lib:netty-codec',
+    '//lib:netty-handler',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/ovsdb/rfc/BUCK b/protocols/ovsdb/rfc/BUCK
new file mode 100644
index 0000000..75edeb3
--- /dev/null
+++ b/protocols/ovsdb/rfc/BUCK
@@ -0,0 +1,18 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-ovsdb-rfc'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:netty-buffer',
+    '//lib:netty-codec',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
diff --git a/protocols/pcep/api/BUCK b/protocols/pcep/api/BUCK
new file mode 100644
index 0000000..a3f344e
--- /dev/null
+++ b/protocols/pcep/api/BUCK
@@ -0,0 +1,17 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-pcep-controller-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/pcep/pcepio:onos-pcep-pcepio',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
diff --git a/protocols/pcep/ctl/BUCK b/protocols/pcep/ctl/BUCK
new file mode 100644
index 0000000..a3c8e66
--- /dev/null
+++ b/protocols/pcep/ctl/BUCK
@@ -0,0 +1,18 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-pcep-ctl'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/pcep/pcepio:onos-pcep-pcepio',
+    '//protocols/pcep/api:onos-pcep-controller-api',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
diff --git a/protocols/pcep/pcepio/BUCK b/protocols/pcep/pcepio/BUCK
new file mode 100644
index 0000000..1fb7c5b
--- /dev/null
+++ b/protocols/pcep/pcepio/BUCK
@@ -0,0 +1,28 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-pcep-pcepio'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/protocols/rest/api/BUCK b/protocols/rest/api/BUCK
new file mode 100644
index 0000000..f3116ad
--- /dev/null
+++ b/protocols/rest/api/BUCK
@@ -0,0 +1,17 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-restsb-api'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+    '//utils/rest:onlab-rest',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
diff --git a/protocols/rest/ctl/BUCK b/protocols/rest/ctl/BUCK
new file mode 100644
index 0000000..1fc0618
--- /dev/null
+++ b/protocols/rest/ctl/BUCK
@@ -0,0 +1,38 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/test/java/org/onosproject/**/'
+CURRENT_NAME = 'onos-restsb-ctl'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:jersey-client',
+    '//lib:jersey-common',
+    '//lib:httpclient-osgi',
+    '//lib:httpcore-osgi',
+    '//lib:javax.ws.rs-api',
+    '//lib:hk2-api',
+    '//lib:jersey-guava',
+    '//lib:aopalliance-repackaged',
+    '//lib:javax.inject',
+    '//protocols/rest/api:onos-restsb-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/bgp/cfg/BUCK b/providers/bgp/cfg/BUCK
new file mode 100644
index 0000000..8c5b713
--- /dev/null
+++ b/providers/bgp/cfg/BUCK
@@ -0,0 +1,16 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-bgp-provider-cfg'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/bgp/api:onos-bgp-api',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
diff --git a/providers/bgp/flow/BUCK b/providers/bgp/flow/BUCK
new file mode 100644
index 0000000..b900d14
--- /dev/null
+++ b/providers/bgp/flow/BUCK
@@ -0,0 +1,16 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-bgp-provider-flow'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/bgp/api:onos-bgp-api',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
diff --git a/providers/bgp/topology/BUCK b/providers/bgp/topology/BUCK
new file mode 100644
index 0000000..e0f5321
--- /dev/null
+++ b/providers/bgp/topology/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-bgp-provider-topology'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/bgp/api:onos-bgp-api',
+    '//protocols/bgp/bgpio:onos-bgpio',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/host/BUCK b/providers/host/BUCK
new file mode 100644
index 0000000..f8bedb1
--- /dev/null
+++ b/providers/host/BUCK
@@ -0,0 +1,15 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-host-provider'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
diff --git a/providers/lldp/BUCK b/providers/lldp/BUCK
new file mode 100644
index 0000000..99d526d
--- /dev/null
+++ b/providers/lldp/BUCK
@@ -0,0 +1,30 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-lldp-provider'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//providers/lldpcommon:onos-lldp-provider-common',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/lldpcommon/BUCK b/providers/lldpcommon/BUCK
new file mode 100644
index 0000000..f9b1b12
--- /dev/null
+++ b/providers/lldpcommon/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-lldp-provider-common'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/netcfghost/BUCK b/providers/netcfghost/BUCK
new file mode 100644
index 0000000..51fe94b
--- /dev/null
+++ b/providers/netcfghost/BUCK
@@ -0,0 +1,29 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-netcfg-links-provider'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/netcfglinks/BUCK b/providers/netcfglinks/BUCK
new file mode 100644
index 0000000..c752714
--- /dev/null
+++ b/providers/netcfglinks/BUCK
@@ -0,0 +1,30 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-netcfg-links-provider'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//providers/lldpcommon:onos-lldp-provider-common',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/netconf/device/BUCK b/providers/netconf/device/BUCK
new file mode 100644
index 0000000..6206f12
--- /dev/null
+++ b/providers/netconf/device/BUCK
@@ -0,0 +1,17 @@
+SRC = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-netconf-provider-device'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//incubator/api:onos-incubator-api',
+    '//protocols/netconf/api:onos-netconf-api',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
diff --git a/providers/null/BUCK b/providers/null/BUCK
new file mode 100644
index 0000000..a449353
--- /dev/null
+++ b/providers/null/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-null-providers'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.karaf.shell.console',
+    '//cli:onos-cli',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/openflow/device/BUCK b/providers/openflow/device/BUCK
new file mode 100644
index 0000000..b243b36
--- /dev/null
+++ b/providers/openflow/device/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-of-provider-device'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+    '//protocols/openflow/api:onos-of-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/openflow/flow/BUCK b/providers/openflow/flow/BUCK
new file mode 100644
index 0000000..299e97d
--- /dev/null
+++ b/providers/openflow/flow/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-of-provider-flow'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+    '//protocols/openflow/api:onos-of-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/openflow/group/BUCK b/providers/openflow/group/BUCK
new file mode 100644
index 0000000..0636c42
--- /dev/null
+++ b/providers/openflow/group/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-of-provider-group'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+    '//protocols/openflow/api:onos-of-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/openflow/message/BUCK b/providers/openflow/message/BUCK
new file mode 100644
index 0000000..139062a
--- /dev/null
+++ b/providers/openflow/message/BUCK
@@ -0,0 +1,32 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-of-provider-message'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+    '//protocols/openflow/api:onos-of-api',
+    '//apps/cpman/api:onos-app-cpman-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/openflow/meter/BUCK b/providers/openflow/meter/BUCK
new file mode 100644
index 0000000..2d9cc70
--- /dev/null
+++ b/providers/openflow/meter/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-of-provider-meter'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+    '//protocols/openflow/api:onos-of-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/openflow/packet/BUCK b/providers/openflow/packet/BUCK
new file mode 100644
index 0000000..0356876
--- /dev/null
+++ b/providers/openflow/packet/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-of-provider-packet'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:openflowj',
+    '//protocols/openflow/api:onos-of-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/ovsdb/device/BUCK b/providers/ovsdb/device/BUCK
new file mode 100644
index 0000000..e9aa0b6
--- /dev/null
+++ b/providers/ovsdb/device/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-ovsdb-provider-device'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/ovsdb/host/BUCK b/providers/ovsdb/host/BUCK
new file mode 100644
index 0000000..4b4dc05
--- /dev/null
+++ b/providers/ovsdb/host/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-ovsdb-provider-host'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/ovsdb/tunnel/BUCK b/providers/ovsdb/tunnel/BUCK
new file mode 100644
index 0000000..c88cbf6
--- /dev/null
+++ b/providers/ovsdb/tunnel/BUCK
@@ -0,0 +1,32 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-ovsdb-provider-tunnel'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/pcep/topology/BUCK b/providers/pcep/topology/BUCK
new file mode 100644
index 0000000..91564cf
--- /dev/null
+++ b/providers/pcep/topology/BUCK
@@ -0,0 +1,32 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-pcep-provider-topology'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//apps/pcep-api:onos-app-pcep-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/pcep/tunnel/BUCK b/providers/pcep/tunnel/BUCK
new file mode 100644
index 0000000..1b2fe6e
--- /dev/null
+++ b/providers/pcep/tunnel/BUCK
@@ -0,0 +1,35 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-pcep-provider-tunnel'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//apps/pcep-api:onos-app-pcep-api',
+    '//incubator/api:onos-incubator-api',
+    '//protocols/pcep/pcepio:onos-pcep-pcepio',
+    '//protocols/pcep/api:onos-pcep-controller-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/rest/device/BUCK b/providers/rest/device/BUCK
new file mode 100644
index 0000000..b710097
--- /dev/null
+++ b/providers/rest/device/BUCK
@@ -0,0 +1,35 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-restsb-provider-device'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//apps/pcep-api:onos-app-pcep-api',
+    '//incubator/api:onos-incubator-api',
+    '//protocols/rest/api:onos-restsb-api',
+    '//lib:javax.ws.rs-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/snmp/alarm/BUCK b/providers/snmp/alarm/BUCK
new file mode 100644
index 0000000..6695f13
--- /dev/null
+++ b/providers/snmp/alarm/BUCK
@@ -0,0 +1,37 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-snmp-provider-alarm'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.servicemix.bundles.snmp4j',
+    '//lib:snmp-core',
+    '//lib:bti7000',
+    '//lib:mibs-net-snmp',
+    '//lib:mibs-rfc',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/providers/snmp/device/BUCK b/providers/snmp/device/BUCK
new file mode 100644
index 0000000..1f05085
--- /dev/null
+++ b/providers/snmp/device/BUCK
@@ -0,0 +1,37 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-snmp-provider-device'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:org.apache.servicemix.bundles.snmp4j',
+    '//lib:snmp-core',
+    '//lib:bti7000',
+    '//lib:mibs-net-snmp',
+    '//lib:mibs-rfc',
+    '//protocols/ovsdb/api:onos-ovsdb-api',
+    '//protocols/ovsdb/rfc:onos-ovsdb-rfc',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/utils/junit/BUCK b/utils/junit/BUCK
new file mode 100644
index 0000000..b5394e5
--- /dev/null
+++ b/utils/junit/BUCK
@@ -0,0 +1,32 @@
+SRC = 'src/main/java/org/onlab/junit/'
+TEST = 'src/test/java/org/onlab/junit/'
+CURRENT_NAME = 'onlab-junit'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+SRC_DEPS = [
+    '//lib:junit',
+    '//lib:hamcrest-all',
+    '//lib:guava',
+]
+
+TEST_DEPS = [
+    '//lib:guava-testlib',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = SRC_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = SRC_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/utils/misc/BUCK b/utils/misc/BUCK
new file mode 100644
index 0000000..0832322
--- /dev/null
+++ b/utils/misc/BUCK
@@ -0,0 +1,28 @@
+SRC = 'src/main/java/org/onlab/**/'
+TEST = 'src/test/java/org/onlab/**/'
+CURRENT_NAME = 'onlab-misc'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:COMPILE',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/utils/osgi/BUCK b/utils/osgi/BUCK
new file mode 100644
index 0000000..195bf3d
--- /dev/null
+++ b/utils/osgi/BUCK
@@ -0,0 +1,28 @@
+SRC = 'src/main/java/org/onlab/osgi/'
+TEST = 'src/test/java/org/onlab/osgi/'
+CURRENT_NAME = 'onlab-osgi'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:COMPILE',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+  name = CURRENT_NAME,
+  srcs = glob([SRC + '/*.java']),
+  deps = COMPILE_DEPS,
+  visibility = ['PUBLIC'],
+)
+
+java_test(
+  name = 'tests',
+  srcs = glob([TEST + '/*.java']),
+  deps = COMPILE_DEPS +
+         TEST_DEPS +
+         [CURRENT_TARGET],
+  source_under_test = [CURRENT_TARGET],
+)
diff --git a/utils/rest/BUCK b/utils/rest/BUCK
new file mode 100644
index 0000000..d070641
--- /dev/null
+++ b/utils/rest/BUCK
@@ -0,0 +1,32 @@
+SRC = 'src/main/java/org/onlab/**/'
+TEST = 'src/test/java/org/onlab/**/'
+CURRENT_NAME = 'onlab-rest'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:COMPILE',
+    '//utils/osgi:onlab-osgi',
+    '//utils/misc:onlab-misc',
+    '//lib:javax.ws.rs-api',
+    '//lib:jersey-server',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/web/api/BUCK b/web/api/BUCK
new file mode 100644
index 0000000..49b4f96
--- /dev/null
+++ b/web/api/BUCK
@@ -0,0 +1,31 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-rest'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:javax.ws.rs-api',
+    '//utils/rest:onlab-rest',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)
diff --git a/web/gui/BUCK b/web/gui/BUCK
new file mode 100644
index 0000000..c00da6c
--- /dev/null
+++ b/web/gui/BUCK
@@ -0,0 +1,40 @@
+SRC = 'src/main/java/org/onosproject/**/'
+TEST = 'src/main/java/org/onosproject/**/'
+
+CURRENT_NAME = 'onos-gui'
+CURRENT_TARGET = ':' + CURRENT_NAME
+
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//lib:javax.ws.rs-api',
+    '//lib:servlet-api',
+    '//lib:jetty-websocket',
+    '//lib:jetty-util',
+    '//lib:jersey-media-multipart',
+    '//incubator/api:onos-incubator-api',
+    '//incubator/net:onos-incubator-net',
+    '//utils/rest:onlab-rest',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+]
+
+java_library(
+    name = CURRENT_NAME,
+    srcs = glob([SRC + '/*.java']),
+    deps = COMPILE_DEPS,
+    visibility = ['PUBLIC'],
+    resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+)
+
+java_test(
+    name = 'tests',
+    srcs = glob([TEST + '/*.java']),
+    deps = COMPILE_DEPS +
+           TEST_DEPS +
+           [CURRENT_TARGET],
+    source_under_test = [CURRENT_TARGET],
+)