Merge branch 'stable-2.14'

* stable-2.14:
  Remove duplicated test dependencies declaration
  Simplify the way to retrieve project.py script from bazlets
  Use project.py from bazlets
  Document a simpler syntax to execute the tests in standalone mode
  Remove duplicated external dependencies definitions

Change-Id: I68b6a6525df4fb080f3a69f397a461a97943d80d
diff --git a/BUILD b/BUILD
index a9d055d..7b92317 100644
--- a/BUILD
+++ b/BUILD
@@ -27,16 +27,17 @@
         "high-availability",
         "local",
     ],
-    deps = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
+    deps = [
         ":high-availability__plugin_test_deps",
-        ":high-availability__plugin",
     ],
 )
 
 java_library(
     name = "high-availability__plugin_test_deps",
     visibility = ["//visibility:public"],
-    exports = [
+    testonly = 1,
+    exports = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
+        ":high-availability__plugin",
         "@byte-buddy//jar",
         "@mockito//jar",
         "@objenesis//jar",
diff --git a/WORKSPACE b/WORKSPACE
index 2d2c629..77d1f08 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -2,7 +2,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "763b6626d7e8de51c20dc144b691a049b3c90262",
+    commit = "87908ae95402aa78dcb29075a7822509c9d04af6",
     #local_path = "/home/ehugare/workspaces/bazlets",
 )
 
@@ -24,28 +24,5 @@
 # Load release Plugin API
 #gerrit_api()
 
-load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", "maven_jar")
-
-maven_jar(
-    name = "wiremock",
-    artifact = "com.github.tomakehurst:wiremock-standalone:2.5.1",
-    sha1 = "9cda1bf1674c8de3a1116bae4d7ce0046a857d30",
-)
-
-maven_jar(
-    name = "mockito",
-    artifact = "org.mockito:mockito-core:2.7.21",
-    sha1 = "23e9f7bfb9717e849a05b84c29ee3ac723f1a653",
-)
-
-maven_jar(
-    name = "byte-buddy",
-    artifact = "net.bytebuddy:byte-buddy:1.6.11",
-    sha1 = "8a8f9409e27f1d62c909c7eef2aa7b3a580b4901",
-)
-
-maven_jar(
-    name = "objenesis",
-    artifact = "org.objenesis:objenesis:2.5",
-    sha1 = "612ecb799912ccf77cba9b3ed8c813da086076e9",
-)
+load("//:external_plugin_deps.bzl", "external_plugin_deps")
+external_plugin_deps()
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
index df16a96..f0f3237 100644
--- a/src/main/resources/Documentation/build.md
+++ b/src/main/resources/Documentation/build.md
@@ -38,13 +38,13 @@
 To execute the tests run:
 
 ```
-  bazel test high_availability_tests
+  bazel test //...
 ```
 
 This project can be imported into the Eclipse IDE:
 
 ```
-  ./tools/eclipse/project.py
+  ./tools/eclipse/project.sh
 ```
 
 ## Build in Gerrit tree
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl
new file mode 100644
index 0000000..2eabedb
--- /dev/null
+++ b/tools/bzl/maven_jar.bzl
@@ -0,0 +1 @@
+load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", "maven_jar")
diff --git a/tools/eclipse/BUILD b/tools/eclipse/BUILD
index a70caed..fa4ea16 100644
--- a/tools/eclipse/BUILD
+++ b/tools/eclipse/BUILD
@@ -1,24 +1,17 @@
-load("//tools/bzl:plugin.bzl", "PLUGIN_DEPS", "PLUGIN_TEST_DEPS")
 load("//tools/bzl:classpath.bzl", "classpath_collector")
 
 java_library(
     name = "classpath",
-    runtime_deps = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
-        "@wiremock//jar",
-        "@mockito//jar",
-        "@byte-buddy//jar",
-        "@objenesis//jar",
-        "//:high-availability__plugin",
+    testonly = 1,
+    runtime_deps = [
+        "//:high-availability__plugin_test_deps"
     ],
 )
 
 classpath_collector(
     name = "main_classpath_collect",
-    deps = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
-        "@wiremock//jar",
-        "@mockito//jar",
-        "@byte-buddy//jar",
-        "@objenesis//jar",
-        "//:high-availability__plugin",
+    testonly = 1,
+    deps = [
+        "//:high-availability__plugin_test_deps"
     ],
 )
diff --git a/tools/eclipse/project.py b/tools/eclipse/project.py
deleted file mode 100755
index 88ca4b0..0000000
--- a/tools/eclipse/project.py
+++ /dev/null
@@ -1,179 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2016 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
-# TODO(davido): use Google style for importing instead:
-# import optparse
-#
-# optparse.OptionParser
-from optparse import OptionParser
-from os import environ, path, makedirs
-from subprocess import CalledProcessError, check_call, check_output
-from xml.dom import minidom
-import re
-import sys
-
-MAIN = '//tools/eclipse:classpath'
-JRE = '/'.join([
-  'org.eclipse.jdt.launching.JRE_CONTAINER',
-  'org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType',
-  'JavaSE-1.8',
-])
-# Map of targets to corresponding classpath collector rules
-cp_targets = {
-  MAIN: '//tools/eclipse:main_classpath_collect',
-}
-
-ROOT = path.abspath(__file__)
-while not path.exists(path.join(ROOT, 'WORKSPACE')):
-  ROOT = path.dirname(ROOT)
-
-opts = OptionParser()
-opts.add_option('--name', help='name of the generated project',
-                action='store', default='sync-index', dest='project_name')
-args, _ = opts.parse_args()
-
-def retrieve_ext_location():
-  return check_output(['bazel', 'info', 'output_base']).strip()
-
-def gen_primary_build_tool():
-  bazel = check_output(['which', 'bazel']).strip()
-  with open(path.join(ROOT, ".primary_build_tool"), 'w') as fd:
-    fd.write("bazel=%s\n" % bazel)
-    fd.write("PATH=%s\n" % environ["PATH"])
-
-def _query_classpath(target):
-  deps = []
-  t = cp_targets[target]
-  try:
-    check_call(['bazel', 'build', t])
-  except CalledProcessError:
-    exit(1)
-  name = 'bazel-bin/tools/eclipse/' + t.split(':')[1] + '.runtime_classpath'
-  deps = [line.rstrip('\n') for line in open(name)]
-  return deps
-
-def gen_project(name='gerrit', root=ROOT):
-  p = path.join(root, '.project')
-  with open(p, 'w') as fd:
-    print("""\
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-  <name>%(name)s</name>
-  <buildSpec>
-    <buildCommand>
-      <name>org.eclipse.jdt.core.javabuilder</name>
-    </buildCommand>
-  </buildSpec>
-  <natures>
-    <nature>org.eclipse.jdt.core.javanature</nature>
-  </natures>
-</projectDescription>\
-    """ % {"name": name}, file=fd)
-
-def gen_classpath(ext):
-  def make_classpath():
-    impl = minidom.getDOMImplementation()
-    return impl.createDocument(None, 'classpath', None)
-
-  def classpathentry(kind, path, src=None, out=None, exported=None):
-    e = doc.createElement('classpathentry')
-    e.setAttribute('kind', kind)
-    # TODO(davido): Remove this and other exclude BUILD files hack
-    # when this Bazel bug is fixed:
-    # https://github.com/bazelbuild/bazel/issues/1083
-    if kind == 'src':
-      e.setAttribute('excluding', '**/BUILD')
-    e.setAttribute('path', path)
-    if src:
-      e.setAttribute('sourcepath', src)
-    if out:
-      e.setAttribute('output', out)
-    if exported:
-      e.setAttribute('exported', 'true')
-    doc.documentElement.appendChild(e)
-
-  doc = make_classpath()
-  src = set()
-  lib = set()
-
-  # Classpath entries are absolute for cross-cell support
-  java_library = re.compile('bazel-out/local-fastbuild/bin/lib[^/]+[.]jar$')
-  srcs = re.compile('(.*/external/[^/]+)/jar/(.*)[.]jar')
-  for p in _query_classpath(MAIN):
-    m = java_library.match(p)
-    if m:
-      src.add(".")
-    else:
-      if p.startswith("external"):
-        p = path.join(ext, p)
-      lib.add(p)
-
-  for s in sorted(src):
-    out = None
-
-    if s.startswith('lib/'):
-      out = 'eclipse-out/lib'
-
-    p = path.join(s, 'java')
-    if path.exists(p):
-      classpathentry('src', p, out=out)
-      continue
-
-    for env in ['main', 'test']:
-      o = None
-      if out:
-        o = out + '/' + env
-      elif env == 'test':
-        o = 'eclipse-out/test'
-
-      for srctype in ['java', 'resources']:
-        p = path.join(s, 'src', env, srctype)
-        if path.exists(p):
-          classpathentry('src', p, out=o)
-
-  for libs in [lib]:
-    for j in sorted(libs):
-      s = None
-      m = srcs.match(j)
-      if m:
-        prefix = m.group(1)
-        suffix = m.group(2)
-        p = path.join(prefix, "src", "%s-src.jar" % suffix)
-        if path.exists(p):
-          s = p
-      classpathentry('lib', j, s)
-
-  classpathentry('con', JRE)
-  classpathentry('output', 'eclipse-out/classes')
-
-  p = path.join(ROOT, '.classpath')
-  with open(p, 'w') as fd:
-    doc.writexml(fd, addindent='\t', newl='\n', encoding='UTF-8')
-
-try:
-  ext_location = retrieve_ext_location()
-  gen_project(args.project_name)
-  gen_classpath(ext_location)
-  gen_primary_build_tool()
-
-  try:
-    check_call(['bazel', 'build', MAIN])
-  except CalledProcessError:
-    exit(1)
-except KeyboardInterrupt:
-  print('Interrupted by user', file=sys.stderr)
-  exit(1)
diff --git a/tools/eclipse/project.sh b/tools/eclipse/project.sh
new file mode 100755
index 0000000..66d75fb
--- /dev/null
+++ b/tools/eclipse/project.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# Copyright (C) 2017 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.
+`bazel query @com_googlesource_gerrit_bazlets//tools/eclipse:project --output location | sed s/BUILD:.*//`project.py -n high-availability -r .