Bazel 如何组织第三方java_库规则?
我有许多Bazel 如何组织第三方java_库规则?,bazel,Bazel,我有许多BUILD文件需要Jetty或其他常见Java库(SLF4J、Lucene、Guava等)。其中每一个都有一组它引用的其他jar。我想知道在大型项目中组织这些声明及其依赖关系的最佳实践 例如,使用generate_workspaceviabazel run//src/tools/generate_workspace--artifact=org.eclipse.jetty:jetty server:9.3.8.v20160314 # The following dependencies w
BUILD
文件需要Jetty或其他常见Java库(SLF4J、Lucene、Guava等)。其中每一个都有一组它引用的其他jar。我想知道在大型项目中组织这些声明及其依赖关系的最佳实践
例如,使用generate_workspace
viabazel run//src/tools/generate_workspace--artifact=org.eclipse.jetty:jetty server:9.3.8.v20160314
# The following dependencies were calculated from:
# org.eclipse.jetty:jetty-server:9.3.8.v20160314
java_library(
name = "org_eclipse_jetty_jetty_http",
visibility = ["//visibility:public"],
exports = [
"@org_eclipse_jetty_jetty_http//jar",
"@org_eclipse_jetty_jetty_util//jar",
],
)
java_library(
name = "org_eclipse_jetty_jetty_util",
visibility = ["//visibility:public"],
exports = [
"@org_eclipse_jetty_jetty_util//jar",
],
)
java_library(
name = "javax_servlet_javax_servlet_api",
visibility = ["//visibility:public"],
exports = [
"@javax_servlet_javax_servlet_api//jar",
],
)
java_library(
name = "org_eclipse_jetty_jetty_server",
visibility = ["//visibility:public"],
exports = [
"@org_eclipse_jetty_jetty_server//jar",
"@javax_servlet_javax_servlet_api//jar",
"@org_eclipse_jetty_jetty_http//jar",
"@org_eclipse_jetty_jetty_io//jar",
"@org_eclipse_jetty_jetty_util//jar",
],
)
java_library(
name = "org_eclipse_jetty_jetty_io",
visibility = ["//visibility:public"],
exports = [
"@org_eclipse_jetty_jetty_io//jar",
"@org_eclipse_jetty_jetty_util//jar",
],
)
和WORKSPACE
# The following dependencies were calculated from:
# org.eclipse.jetty:jetty-server:9.3.8.v20160314
# org.eclipse.jetty:jetty-server:jar:9.3.8.v20160314
maven_jar(
name = "org_eclipse_jetty_jetty_http",
artifact = "org.eclipse.jetty:jetty-http:9.3.8.v20160314",
)
# org.eclipse.jetty:jetty-http:jar:9.3.8.v20160314
# org.eclipse.jetty:jetty-io:jar:9.3.8.v20160314
maven_jar(
name = "org_eclipse_jetty_jetty_util",
artifact = "org.eclipse.jetty:jetty-util:9.3.8.v20160314",
)
# org.eclipse.jetty:jetty-server:jar:9.3.8.v20160314
maven_jar(
name = "javax_servlet_javax_servlet_api",
artifact = "javax.servlet:javax.servlet-api:3.1.0",
)
maven_jar(
name = "org_eclipse_jetty_jetty_server",
artifact = "org.eclipse.jetty:jetty-server:9.3.8.v20160314",
)
# org.eclipse.jetty:jetty-server:jar:9.3.8.v20160314
maven_jar(
name = "org_eclipse_jetty_jetty_io",
artifact = "org.eclipse.jetty:jetty-io:9.3.8.v20160314",
)
档案
我在许多项目中都依赖jetty server和jetty util。有没有比在每个
构建
文件中重复此信息更好的做法?通常,您会将生成的构建文件
放在工作区的根目录中(工作区文件旁边),然后在其他构建文件中,您会引用它们需要依赖的任何目标。例如,在src/main/java/com/your project/subcomponent/BUILD中,您可能会说:
java_library(
name = "my-servlet",
srcs = glob(["*.java"]),
deps = [
"//:javax_servlet_javax_servlet_api",
# other deps...
],
)