0

所以BUILD结构如下:

爪哇:

/src/java/com/abc/code/Code.java

资源:

/src/resources/com/abc/code/application.properties

构建文件组

filegroup(
    name = "properties",
    srcs = glob(["application.properties"])
    visibility = ["//visibility:public"],
)

应用程序的构建使用文件组作为资源/类路径_资源

java_binary(
    name = "app",
    classpath_resources = [
        "//src/resources/com/abc/code:properties",
    ],
    # resources = [
    #     "//src/resources/com/abc/code:properties",
    # ],
    main_class = "com.abc.code.Code",
    runtime_deps = [
        ":app_bin",
    ],
)

回来null_Code.class.getResourceAsStream("application.properties");

在检查生成的 jar 之后,发现 application.properties 位于顶部/

jar tf poc_delivery_system_app.jar
META-INF/
META-INF/MANIFEST.MF
application.properties

然后更新 Code.class.getResourceAsStream("/application.properties");有效的代码,

问题是为什么application.properties在顶层而不是像/com/abc/code/application.properties

4

1 回答 1

0

资源具有以下资源

srcs = glob(["application.properties"])

所以,他们确实在源头上。

如果要将它们放在子目录中,请将 BUILD 文件$WORKSPACE/src/resources/BUILD放在

filegroup(
  name = "resources",
  srcs = glob(["**/*.properties"]),
)

然后java lib将

  resources = [
     "//src/resources",
  ],
于 2020-12-16T20:26:54.700 回答