bazel: Add explicit targets for library dependencies

This provides a place to declare visibility restrictions and
transitive dependencies for each library.

Other targets should only declare dependencies on what they directly
use, making dependencies easier to maintain.

Trim the dependencies of org.eclipse.jgit:jgit to follow that rule.
It declares dependencies on Apache httpcomponents and the servlet
API but doesn't use them.

Tested:
* 'bazel build //...' succeeds
* applying the change https://gerrit-review.googlesource.com/90843
  to a copy of Gerrit, following the instructions there, and running
  'bazel test //...' in that copy of Gerrit still succeeds

Change-Id: I3ab958ce8b3227019cdbe4cc81e0f042e1541034
This commit is contained in:
Jonathan Nieder 2017-03-19 17:41:26 -07:00
parent 5e5fbb6035
commit bc5014faec
7 changed files with 72 additions and 14 deletions

60
lib/BUILD Normal file
View File

@ -0,0 +1,60 @@
java_library(
name = "commons-compress",
visibility = ["//org.eclipse.jgit.archive:__pkg__"],
exports = ["@commons_compress//jar"],
)
java_library(
name = "gson",
visibility = ["//org.eclipse.jgit.lfs.server:__pkg__"],
exports = ["@gson//jar"],
)
java_library(
name = "httpclient",
visibility = ["//org.eclipse.jgit.http.apache:__pkg__"],
exports = ["@httpclient//jar"],
)
java_library(
name = "httpcore",
visibility = [
"//org.eclipse.jgit.http.apache:__pkg__",
"//org.eclipse.jgit.lfs.server:__pkg__",
],
exports = ["@httpcore//jar"],
)
java_library(
name = "javaewah",
visibility = ["//visibility:public"],
exports = ["@javaewah//jar"],
)
java_library(
name = "jsch",
visibility = ["//org.eclipse.jgit:__pkg__"],
exports = ["@jsch//jar"],
)
java_library(
name = "junit",
visibility = ["//org.eclipse.jgit.junit:__pkg__"],
exports = ["@junit//jar"],
)
java_library(
name = "servlet-api",
visibility = [
"//org.eclipse.jgit.http.apache:__pkg__",
"//org.eclipse.jgit.http.server:__pkg__",
"//org.eclipse.jgit.lfs.server:__pkg__",
],
exports = ["@servlet_api_3_1//jar"],
)
java_library(
name = "slf4j-api",
visibility = ["//visibility:public"],
exports = ["@log_api//jar"],
)

View File

@ -9,8 +9,8 @@ java_library(
resource_strip_prefix = "org.eclipse.jgit.archive/resources",
resources = glob(["resources/**"]),
deps = [
"//lib:commons-compress",
# We want these deps to be provided_deps
"//org.eclipse.jgit:jgit",
"@commons_compress//jar",
],
)

View File

@ -6,8 +6,8 @@ java_library(
resource_strip_prefix = "org.eclipse.jgit.http.apache/resources",
resources = glob(["resources/**"]),
deps = [
"//lib:httpclient",
"//lib:httpcore",
"//org.eclipse.jgit:jgit",
"@httpclient//jar",
"@httpcore//jar",
],
)

View File

@ -6,8 +6,8 @@ java_library(
resource_strip_prefix = "org.eclipse.jgit.http.server/resources",
resources = glob(["resources/**"]),
deps = [
"//lib:servlet-api",
# We want these deps to be provided_deps
"//org.eclipse.jgit:jgit",
"@servlet_api_3_1//jar",
],
)

View File

@ -6,8 +6,8 @@ java_library(
resource_strip_prefix = "org.eclipse.jgit.junit/resources",
resources = glob(["resources/**"]),
deps = [
"//lib:junit",
# We want these deps to be provided_deps
"//org.eclipse.jgit:jgit",
"@junit//jar",
],
)

View File

@ -6,12 +6,12 @@ java_library(
resource_strip_prefix = "org.eclipse.jgit.lfs.server/resources",
resources = glob(["resources/**"]),
deps = [
"//lib:gson",
"//lib:httpcore",
"//lib:servlet-api",
"//lib:slf4j-api",
"//org.eclipse.jgit.http.apache:http-apache",
"//org.eclipse.jgit:jgit",
"//org.eclipse.jgit.lfs:jgit-lfs",
"@gson//jar",
"@httpcore//jar",
"@log_api//jar",
"@servlet_api_3_1//jar",
],
)

View File

@ -18,11 +18,9 @@ java_library(
resources = RESOURCES,
deps = [
":insecure_cipher_factory",
"@httpclient//jar",
"@javaewah//jar",
"@jsch//jar",
"@log_api//jar",
"@servlet_api_3_1//jar",
"//lib:javaewah",
"//lib:jsch",
"//lib:slf4j-api",
],
)