Implement Bazel build

TEST PLAN:
  $ bazel test gitiles-servlet/...

Run debug version:
  $ sh {path/to/src}/tools/run_bazel_dev.sh

TODO:

 * publishing maven artifacts.
 * check out Bazel's generate_workspace.
 * intellij/eclipse project generation

Change-Id: I288011ce622536ce72c59a1961f962db9fe9e761
diff --git a/lib/BUILD b/lib/BUILD
new file mode 100644
index 0000000..595854e
--- /dev/null
+++ b/lib/BUILD
@@ -0,0 +1,24 @@
+package(
+    default_visibility = ["//visibility:public"],
+)
+
+[java_library(
+    name = n,
+    exports = ["@%s//jar" % n.replace("-", "_")],
+) for n in [
+    "autolink",
+    "commonmark",
+    "commons-lang",
+    "cm-autolink",
+    "gfm-strikethrough",
+    "gfm-tables",
+    "jsr305",
+    "jgit-archive-library",
+    "joda-time",
+    "servlet-api_2_5",
+    "servlet-api_3_0",
+    "truth",
+    "gson",
+    "guava",
+    "prettify",
+]]
diff --git a/lib/guice/BUILD b/lib/guice/BUILD
new file mode 100644
index 0000000..6646fce
--- /dev/null
+++ b/lib/guice/BUILD
@@ -0,0 +1,25 @@
+package(
+    default_visibility = ["//visibility:public"],
+)
+
+java_library(
+    name = "guice",
+    exports = [
+        ":aopalliance",
+        ":guice-assistedinject",
+        ":guice_library",
+        ":javax-inject",
+        ":multibindings",
+    ],
+)
+
+[java_library(
+    name = n,
+    runtime_deps = ["@%s//jar" % n.replace("-", "_")],
+) for n in [
+    "guice_library",
+    "guice-assistedinject",
+    "multibindings",
+    "javax-inject",
+    "aopalliance",
+]]
diff --git a/lib/jetty/BUILD b/lib/jetty/BUILD
new file mode 100644
index 0000000..2c97028
--- /dev/null
+++ b/lib/jetty/BUILD
@@ -0,0 +1,55 @@
+package(
+    default_visibility = ["//visibility:public"],
+)
+
+java_library(
+    name = "servlet",
+    exports = [
+        ":security",
+        "//lib:servlet-api_3_0",  # Different from the rest of gitiles-server.
+        "@servlet//jar",
+    ],
+)
+
+java_library(
+    name = "security",
+    exports = [
+        ":server",
+        "@security//jar",
+    ],
+)
+
+java_library(
+    name = "server",
+    exports = [
+        ":continuation",
+        ":http",
+        "@server//jar",
+    ],
+)
+
+java_library(
+    name = "continuation",
+    exports = ["@continuation//jar"],
+)
+
+java_library(
+    name = "http",
+    exports = [
+        ":io",
+        "@http//jar",
+    ],
+)
+
+java_library(
+    name = "io",
+    exports = [
+        ":util",
+        "@io//jar",
+    ],
+)
+
+java_library(
+    name = "util",
+    exports = ["@util//jar"],
+)
diff --git a/lib/jgit/BUILD b/lib/jgit/BUILD
new file mode 100644
index 0000000..9fd1d4f
--- /dev/null
+++ b/lib/jgit/BUILD
@@ -0,0 +1,42 @@
+package(
+    default_visibility = ["//visibility:public"],
+)
+
+java_library(
+    name = "jgit-servlet",
+    exports = ["@jgit_servlet//jar"],
+)
+
+java_library(
+    name = "jgit",
+    exports = ["@jgit//jar"],
+)
+
+java_library(
+    name = "jgit-archive",
+    exports = [
+        ":commons-compress",
+        ":jgit-archive_library",
+        ":tukaani-xz",
+    ],
+)
+
+java_library(
+    name = "tukaani-xz",
+    exports = ["@tukaani_xz//jar"],
+)
+
+java_library(
+    name = "commons-compress",
+    exports = ["@commons_compress//jar"],
+)
+
+java_library(
+    name = "jgit-archive_library",
+    exports = ["@jgit_archive_library//jar"],
+)
+
+java_library(
+    name = "junit",
+    exports = ["@jgit_junit//jar"],
+)
diff --git a/lib/junit/BUILD b/lib/junit/BUILD
new file mode 100644
index 0000000..c2a6fcc
--- /dev/null
+++ b/lib/junit/BUILD
@@ -0,0 +1,13 @@
+package(
+    default_visibility = ["//visibility:public"],
+)
+
+java_library(
+    name = "junit",
+    exports = ["@junit//jar"],
+)
+
+java_library(
+    name = "hamcrest-core",
+    exports = ["@hamcrest_core//jar"],
+)
diff --git a/lib/slf4j/BUILD b/lib/slf4j/BUILD
new file mode 100644
index 0000000..4a27aac
--- /dev/null
+++ b/lib/slf4j/BUILD
@@ -0,0 +1,16 @@
+package(
+    default_visibility = ["//visibility:public"],
+)
+
+java_library(
+    name = "slf4j-api",
+    exports = ["@slf4j_api//jar"],
+)
+
+java_library(
+    name = "slf4j-simple",
+    runtime_deps = [
+        ":slf4j-api",
+        "@slf4j_simple//jar",
+    ],
+)
diff --git a/lib/soy/BUILD b/lib/soy/BUILD
new file mode 100644
index 0000000..4f19143
--- /dev/null
+++ b/lib/soy/BUILD
@@ -0,0 +1,9 @@
+package(
+    default_visibility = ["//visibility:public"],
+)
+
+java_library(
+    name = "soy",
+    exports = ["@soy//jar"],
+    runtime_deps = ["@icu4j//jar"],
+)