diff --git a/.gitignore b/.gitignore
index 7c3fce7fde322e959a7f0c222a6ed848bcbe9662..04d93fe9e741a241120379be3c19a7de0be453dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@ bin
 *.iml
 .idea
 local.properties
+bazel-*
diff --git a/3rdparty/BUILD b/3rdparty/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/3rdparty/jvm/com/google/code/findbugs/BUILD b/3rdparty/jvm/com/google/code/findbugs/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..2a23982e6f02fada213930e0004a199cc4019b45
--- /dev/null
+++ b/3rdparty/jvm/com/google/code/findbugs/BUILD
@@ -0,0 +1,12 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "jsr305",
+    exports = [
+        "//external:jar/com/google/code/findbugs/jsr305"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/com/google/guava/BUILD b/3rdparty/jvm/com/google/guava/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..3cb65a2e3668f4046003f6d7ed529b65bd25bf6c
--- /dev/null
+++ b/3rdparty/jvm/com/google/guava/BUILD
@@ -0,0 +1,15 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "guava",
+    exports = [
+        "//external:jar/com/google/guava/guava"
+    ],
+    runtime_deps = [
+        "//3rdparty/jvm/com/google/code/findbugs:jsr305"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/commons_pool/BUILD b/3rdparty/jvm/commons_pool/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..0bbfd10c7500107d020814500cc66eb0ad09549d
--- /dev/null
+++ b/3rdparty/jvm/commons_pool/BUILD
@@ -0,0 +1,12 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "commons_pool",
+    exports = [
+        "//external:jar/commons_pool/commons_pool"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/dnsjava/BUILD b/3rdparty/jvm/dnsjava/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..7ac97e03db55e04c84acb0cf2192977a80cc36bd
--- /dev/null
+++ b/3rdparty/jvm/dnsjava/BUILD
@@ -0,0 +1,15 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "dnsjava",
+    exports = [
+        "//external:jar/dnsjava/dnsjava"
+    ],
+    runtime_deps = [
+        "//3rdparty/jvm/junit:junit"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/io/netty/BUILD b/3rdparty/jvm/io/netty/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..42fed0c4a07e5be8c3be7b2d2f0b853472e25b5d
--- /dev/null
+++ b/3rdparty/jvm/io/netty/BUILD
@@ -0,0 +1,12 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "netty",
+    exports = [
+        "//external:jar/io/netty/netty"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/junit/BUILD b/3rdparty/jvm/junit/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..7be4bd9660b8c19473bb1334a692a9cb64e8c51f
--- /dev/null
+++ b/3rdparty/jvm/junit/BUILD
@@ -0,0 +1,12 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "junit",
+    exports = [
+        "//external:jar/junit/junit"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/org/apache/commons/BUILD b/3rdparty/jvm/org/apache/commons/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..3c6c77d78a79ae9da1976b0f7d3df7e036c70638
--- /dev/null
+++ b/3rdparty/jvm/org/apache/commons/BUILD
@@ -0,0 +1,76 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "com_springsource_org_apache_commons_codec",
+    exports = [
+        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_codec"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
+
+java_library(
+    name = "com_springsource_org_apache_commons_httpclient",
+    exports = [
+        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_httpclient"
+    ],
+    runtime_deps = [
+        ":com_springsource_org_apache_commons_codec",
+        ":com_springsource_org_apache_commons_logging"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
+
+java_library(
+    name = "com_springsource_org_apache_commons_io",
+    exports = [
+        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_io"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
+
+java_library(
+    name = "com_springsource_org_apache_commons_lang",
+    exports = [
+        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_lang"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
+
+java_library(
+    name = "com_springsource_org_apache_commons_logging",
+    exports = [
+        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_logging"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
+
+java_library(
+    name = "com_springsource_org_apache_commons_net",
+    exports = [
+        "//external:jar/org/apache/commons/com_springsource_org_apache_commons_net"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/org/apache/ws/commons/BUILD b/3rdparty/jvm/org/apache/ws/commons/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..c538d3b9e856646a04acae5cb8e54a19ec712543
--- /dev/null
+++ b/3rdparty/jvm/org/apache/ws/commons/BUILD
@@ -0,0 +1,16 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "ws_commons_util",
+    exports = [
+        "//external:jar/org/apache/ws/commons/ws_commons_util"
+    ],
+    runtime_deps = [
+        "//3rdparty/jvm/junit:junit",
+        "//3rdparty/jvm/xml_apis:xml_apis"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/org/mockito/BUILD b/3rdparty/jvm/org/mockito/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..025c073b30ae29c160405728404a8d5788c6c6d2
--- /dev/null
+++ b/3rdparty/jvm/org/mockito/BUILD
@@ -0,0 +1,12 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "mockito_all",
+    exports = [
+        "//external:jar/org/mockito/mockito_all"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/org/ros/rosjava_bootstrap/BUILD b/3rdparty/jvm/org/ros/rosjava_bootstrap/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..b74ab7035f9b7a750f989066e8010b2bcf693f92
--- /dev/null
+++ b/3rdparty/jvm/org/ros/rosjava_bootstrap/BUILD
@@ -0,0 +1,33 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "gradle_plugins",
+    exports = [
+        "//external:jar/org/ros/rosjava_bootstrap/gradle_plugins"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
+
+java_library(
+    name = "message_generation",
+    exports = [
+        "//external:jar/org/ros/rosjava_bootstrap/message_generation"
+    ],
+    runtime_deps = [
+        "//3rdparty/jvm/com/google/guava:guava",
+        "//3rdparty/jvm/commons_pool:commons_pool",
+        "//3rdparty/jvm/io/netty:netty",
+        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_codec",
+        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_io",
+        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_lang",
+        ":gradle_plugins"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/org/ros/rosjava_messages/BUILD b/3rdparty/jvm/org/ros/rosjava_messages/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..c0c6fb5aec94593948f72144ca8dec6c6c572255
--- /dev/null
+++ b/3rdparty/jvm/org/ros/rosjava_messages/BUILD
@@ -0,0 +1,31 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "rosgraph_msgs",
+    exports = [
+        "//external:jar/org/ros/rosjava_messages/rosgraph_msgs"
+    ],
+    runtime_deps = [
+        "//3rdparty/jvm/org/ros/rosjava_bootstrap:message_generation",
+        ":std_msgs"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
+
+java_library(
+    name = "std_msgs",
+    exports = [
+        "//external:jar/org/ros/rosjava_messages/std_msgs"
+    ],
+    runtime_deps = [
+        "//3rdparty/jvm/org/ros/rosjava_bootstrap:message_generation"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/jvm/xml_apis/BUILD b/3rdparty/jvm/xml_apis/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..473c5ce2f3516bc5c06f4714c3b941971d405913
--- /dev/null
+++ b/3rdparty/jvm/xml_apis/BUILD
@@ -0,0 +1,12 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+java_library(
+    name = "xml_apis",
+    exports = [
+        "//external:jar/xml_apis/xml_apis"
+    ],
+    visibility = [
+        "//visibility:public"
+    ]
+)
+
+
diff --git a/3rdparty/workspace.bzl b/3rdparty/workspace.bzl
new file mode 100644
index 0000000000000000000000000000000000000000..4fbcb05bf9dc05a8d8794572be04939077d67605
--- /dev/null
+++ b/3rdparty/workspace.bzl
@@ -0,0 +1,37 @@
+# Do not edit. bazel-deps autogenerates this file from dependencies.yaml.
+
+def declare_maven(hash):
+    native.maven_jar(
+        name = hash["name"],
+        artifact = hash["artifact"],
+        sha1 = hash["sha1"],
+        repository = hash["repository"]
+    )
+    native.bind(
+        name = hash["bind"],
+        actual = hash["actual"]
+    )
+
+def maven_dependencies(callback = declare_maven):
+    callback({"artifact": "com.google.code.findbugs:jsr305:1.3.9", "lang": "java", "sha1": "40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf", "repository": "https://jcenter.bintray.com/", "name": "com_google_code_findbugs_jsr305", "actual": "@com_google_code_findbugs_jsr305//jar", "bind": "jar/com/google/code/findbugs/jsr305"})
+    callback({"artifact": "com.google.guava:guava:12.0", "lang": "java", "sha1": "5bc66dd95b79db1e437eb08adba124a3e4088dc0", "repository": "https://jcenter.bintray.com/", "name": "com_google_guava_guava", "actual": "@com_google_guava_guava//jar", "bind": "jar/com/google/guava/guava"})
+    callback({"artifact": "commons-pool:commons-pool:1.6", "lang": "java", "sha1": "4572d589699f09d866a226a14b7f4323c6d8f040", "repository": "https://jcenter.bintray.com/", "name": "commons_pool_commons_pool", "actual": "@commons_pool_commons_pool//jar", "bind": "jar/commons_pool/commons_pool"})
+    callback({"artifact": "dnsjava:dnsjava:2.1.1", "lang": "java", "sha1": "5708df81cf6dbff545695f0be6380b7bbc85accc", "repository": "https://jcenter.bintray.com/", "name": "dnsjava_dnsjava", "actual": "@dnsjava_dnsjava//jar", "bind": "jar/dnsjava/dnsjava"})
+    callback({"artifact": "io.netty:netty:3.5.13.Final", "lang": "java", "sha1": "389edea561995909d5df3e70fb2c49954ac79a54", "repository": "https://jcenter.bintray.com/", "name": "io_netty_netty", "actual": "@io_netty_netty//jar", "bind": "jar/io/netty/netty"})
+# duplicates in junit:junit fixed to 4.8.2
+# - org.apache.ws.commons:ws-commons-util:1.0.1 wanted version 3.8.1
+# - dnsjava:dnsjava:2.1.1 wanted version 3.8.2
+    callback({"artifact": "junit:junit:4.8.2", "lang": "java", "sha1": "c94f54227b08100974c36170dcb53329435fe5ad", "repository": "https://jcenter.bintray.com/", "name": "junit_junit", "actual": "@junit_junit//jar", "bind": "jar/junit/junit"})
+    callback({"artifact": "org.apache.commons:com.springsource.org.apache.commons.codec:1.3.0", "lang": "java", "sha1": "f8690570eb0913d750262bb4223eed30b0d619ed", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_codec", "actual": "@org_apache_commons_com_springsource_org_apache_commons_codec//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_codec"})
+    callback({"artifact": "org.apache.commons:com.springsource.org.apache.commons.httpclient:3.1.0", "lang": "java", "sha1": "c493a925a091ac3d8f449d9265fe12482dabb2a7", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_httpclient", "actual": "@org_apache_commons_com_springsource_org_apache_commons_httpclient//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_httpclient"})
+    callback({"artifact": "org.apache.commons:com.springsource.org.apache.commons.io:1.4.0", "lang": "java", "sha1": "51097cd000ec88214ff181c9f059947de1cf4a35", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_io", "actual": "@org_apache_commons_com_springsource_org_apache_commons_io//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_io"})
+    callback({"artifact": "org.apache.commons:com.springsource.org.apache.commons.lang:2.4.0", "lang": "java", "sha1": "686e3713650c8e3a5d98723b4d3e239586bf9822", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_lang", "actual": "@org_apache_commons_com_springsource_org_apache_commons_lang//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_lang"})
+    callback({"artifact": "org.apache.commons:com.springsource.org.apache.commons.logging:1.1.1", "lang": "java", "sha1": "7657caf2c78e1d79c74d36f2ae128a115f7cc180", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_logging", "actual": "@org_apache_commons_com_springsource_org_apache_commons_logging//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_logging"})
+    callback({"artifact": "org.apache.commons:com.springsource.org.apache.commons.net:2.0.0", "lang": "java", "sha1": "03e78766072ff5a5cf3f5431d973c430c94ec612", "repository": "https://jcenter.bintray.com/", "name": "org_apache_commons_com_springsource_org_apache_commons_net", "actual": "@org_apache_commons_com_springsource_org_apache_commons_net//jar", "bind": "jar/org/apache/commons/com_springsource_org_apache_commons_net"})
+    callback({"artifact": "org.apache.ws.commons:ws-commons-util:1.0.1", "lang": "java", "sha1": "126e80ff798fece634bc94e61f8be8a8da00be60", "repository": "https://jcenter.bintray.com/", "name": "org_apache_ws_commons_ws_commons_util", "actual": "@org_apache_ws_commons_ws_commons_util//jar", "bind": "jar/org/apache/ws/commons/ws_commons_util"})
+    callback({"artifact": "org.mockito:mockito-all:1.8.5", "lang": "java", "sha1": "a927d8ae3b8d22eb745a74f94e59ce3882f2b524", "repository": "https://jcenter.bintray.com/", "name": "org_mockito_mockito_all", "actual": "@org_mockito_mockito_all//jar", "bind": "jar/org/mockito/mockito_all"})
+    callback({"artifact": "org.ros.rosjava_bootstrap:gradle_plugins:0.3.0", "lang": "java", "sha1": "9915d897f3b5049e99b268068978a1bca0ae7b5d", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_bootstrap_gradle_plugins", "actual": "@org_ros_rosjava_bootstrap_gradle_plugins//jar", "bind": "jar/org/ros/rosjava_bootstrap/gradle_plugins"})
+    callback({"artifact": "org.ros.rosjava_bootstrap:message_generation:0.3.0", "lang": "java", "sha1": "5141e448f0ea6a2d6f539219d4fc9b296ff07ca4", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_bootstrap_message_generation", "actual": "@org_ros_rosjava_bootstrap_message_generation//jar", "bind": "jar/org/ros/rosjava_bootstrap/message_generation"})
+    callback({"artifact": "org.ros.rosjava_messages:rosgraph_msgs:1.11.2", "lang": "java", "sha1": "adb731dd5181976b23c217872f61c724a3af70fe", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_messages_rosgraph_msgs", "actual": "@org_ros_rosjava_messages_rosgraph_msgs//jar", "bind": "jar/org/ros/rosjava_messages/rosgraph_msgs"})
+    callback({"artifact": "org.ros.rosjava_messages:std_msgs:0.5.11", "lang": "java", "sha1": "a0191f0506dfecfc471eb199a119691717801c0e", "repository": "https://github.com/rosjava/rosjava_mvn_repo/raw/master", "name": "org_ros_rosjava_messages_std_msgs", "actual": "@org_ros_rosjava_messages_std_msgs//jar", "bind": "jar/org/ros/rosjava_messages/std_msgs"})
+    callback({"artifact": "xml-apis:xml-apis:1.0.b2", "lang": "java", "sha1": "3136ca936f64c9d68529f048c2618bd356bf85c9", "repository": "https://jcenter.bintray.com/", "name": "xml_apis_xml_apis", "actual": "@xml_apis_xml_apis//jar", "bind": "jar/xml_apis/xml_apis"})
diff --git a/WORKSPACE b/WORKSPACE
new file mode 100644
index 0000000000000000000000000000000000000000..381ef5913501e6ecee10c3d1b982bd00fd5e6ff1
--- /dev/null
+++ b/WORKSPACE
@@ -0,0 +1,5 @@
+workspace(name = "com_github_rosjava_rosjava_bootstrap")
+
+load("//3rdparty:workspace.bzl", "maven_dependencies")
+
+maven_dependencies()
diff --git a/dependencies.yaml b/dependencies.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..abbdd2c2746087cf2ba21289480ee83372f9f8ed
--- /dev/null
+++ b/dependencies.yaml
@@ -0,0 +1,80 @@
+# If you edit this file, follow these instructions to generate the output
+# files:
+#
+# cd ..
+# git clone https://github.com/johnynek/bazel-deps
+# cd bazel-deps
+# bazel build src/scala/com/github/johnynek/bazel_deps:parseproject_deploy.jar
+# cd ../rosjava_bootstrap
+# ../bazel-deps/gen_maven_deps.sh generate -r $PWD -s 3rdparty/workspace.bzl -d dependencies.yaml
+
+options:
+  languages: [ "java" ]
+  resolvers:
+    - id: "jcenter"
+      type: "default"
+      url: https://jcenter.bintray.com/
+    - id: "rosjava_mvn_repo"
+      type: "default"
+      url: https://github.com/rosjava/rosjava_mvn_repo/raw/master
+  resolverCache: bazel_output_base
+  transitivity: runtime_deps
+  versionConflictPolicy: highest
+  buildHeader:
+    - "# Do not edit. bazel-deps autogenerates this file from dependencies.yaml."
+
+dependencies:
+  commons-pool:
+    commons-pool:
+      lang: java
+      version: "1.6"
+  com.google.guava:
+    guava:
+      lang: java
+      version: "12.0"
+  dnsjava:
+    dnsjava:
+      lang: java
+      version: "2.1.1"
+  io.netty:
+    netty:
+      lang: java
+      version: "3.5.13.Final"
+  junit:
+    junit:
+      lang: java
+      version: "4.8.2"
+  org.apache.commons:
+    com.springsource.org.apache.commons.codec:
+      lang: java
+      version: "1.3.0"
+    com.springsource.org.apache.commons.httpclient:
+      lang: java
+      version: "3.1.0"
+    com.springsource.org.apache.commons.io:
+      lang: java
+      version: "1.4.0"
+    com.springsource.org.apache.commons.lang:
+      lang: java
+      version: "2.4.0"
+    com.springsource.org.apache.commons.logging:
+      lang: java
+      version: "1.1.1"
+    com.springsource.org.apache.commons.net:
+      lang: java
+      version: "2.0.0"
+  org.apache.ws.commons:
+    ws-commons-util:
+      lang: java
+      version: "1.0.1"
+  org.mockito:
+    mockito-all:
+      lang: java
+      version: "1.8.5"
+  org.ros.rosjava_messages:
+    rosgraph_msgs:
+      lang: java
+      version: "1.11.2"
+    std_msgs:
+      lang: java
+      version: "0.5.11"
diff --git a/message_generation/BUILD.bazel b/message_generation/BUILD.bazel
new file mode 100644
index 0000000000000000000000000000000000000000..bb56c7d50eaadf79efd9edb15bc70cc2dcda7a38
--- /dev/null
+++ b/message_generation/BUILD.bazel
@@ -0,0 +1,103 @@
+package(default_visibility = ["//visibility:public"])
+
+java_library(
+    name = "message_generation",
+    srcs = glob([
+        "src/main/**/*.java",
+    ]),
+    deps = [
+        "//3rdparty/jvm/com/google/guava",
+        "//3rdparty/jvm/commons_pool",
+        "//3rdparty/jvm/io/netty",
+        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_codec",
+        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_io",
+        "//3rdparty/jvm/org/apache/commons:com_springsource_org_apache_commons_lang",
+    ],
+)
+
+java_test(
+    name = "ArrayFieldTest",
+    size = "small",
+    srcs = ["src/test/java/org/ros/internal/message/field/ArrayFieldTest.java"],
+    deps = [
+        ":message_generation",
+        "//3rdparty/jvm/io/netty",
+        "//3rdparty/jvm/junit",
+    ],
+)
+
+java_test(
+    name = "MessageInterfaceBuilderTest",
+    size = "small",
+    srcs = ["src/test/java/org/ros/internal/message/MessageInterfaceBuilderTest.java"],
+    deps = [
+        ":message_generation",
+        "//3rdparty/jvm/junit",
+    ],
+)
+
+java_test(
+    name = "Md5GeneratorTest",
+    size = "small",
+    srcs = ["src/test/java/org/ros/internal/message/Md5GeneratorTest.java"],
+    resources = glob(["src/test/resources/**/*"]),
+    deps = [
+        ":message_generation",
+        "//3rdparty/jvm/junit",
+    ],
+)
+
+java_test(
+    name = "MessageTest",
+    size = "small",
+    srcs = ["src/test/java/org/ros/internal/message/MessageTest.java"],
+    resources = glob(["src/test/resources/**/*"]),
+    deps = [
+        ":message_generation",
+        "//3rdparty/jvm/com/google/guava",
+        "//3rdparty/jvm/junit",
+    ],
+)
+
+java_test(
+    name = "RawMessageSerializationTest",
+    size = "small",
+    srcs = ["src/test/java/org/ros/internal/message/RawMessageSerializationTest.java"],
+    resources = glob(["src/test/resources/**/*"]),
+    deps = [
+        ":message_generation",
+        "//3rdparty/jvm/com/google/guava",
+        "//3rdparty/jvm/io/netty",
+        "//3rdparty/jvm/junit",
+    ],
+)
+
+java_test(
+    name = "ServiceTest",
+    size = "small",
+    srcs = ["src/test/java/org/ros/internal/message/ServiceTest.java"],
+    deps = [
+        ":message_generation",
+        "//3rdparty/jvm/junit",
+    ],
+)
+
+java_test(
+    name = "DurationTest",
+    size = "small",
+    srcs = ["src/test/java/org/ros/message/DurationTest.java"],
+    deps = [
+        ":message_generation",
+        "//3rdparty/jvm/junit",
+    ],
+)
+
+java_test(
+    name = "TimeTest",
+    size = "small",
+    srcs = ["src/test/java/org/ros/message/TimeTest.java"],
+    deps = [
+        ":message_generation",
+        "//3rdparty/jvm/junit",
+    ],
+)