Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bazel 如何组织第三方java_库规则?_Bazel - Fatal编程技术网

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
via
bazel 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...
    ],
)