我正在尝试在具有deps和传递依赖项的项目之一上使用generate_workspace
。生成generate_workspace.bzl
后,我将其复制到WORKSPACE并按照bazel文档中的说明进行操作。虽然我看到在java_library阶段generate_workspace.bzl
我的项目中列出的deps及其传递deps无法解析传递deps ..当我在IDEA中导入相同的项目时,我没有看到正确加载的jar。
我怀疑的是,我看到generate_workspace.bzl正在将其临时代表添加为runtime_deps
,这意味着它们仅在短暂enter code here
ime
我在这里创建了所有文件的要点 https://gist.github.com/kameshsampath/8a4bdc8b22d85bbe3f243fa1b816e464
理想情况下,在我的maven项目中,我只需要https://gist.github.com/kameshsampath/8a4bdc8b22d85bbe3f243fa1b816e464#file-src_main_build-L8-L9,虽然generate_workspace.bzl已正确解析,但如果我的src / main / BUILD看起来像
,我认为它已经足够了java_binary(
name = "main",
srcs = glob(["java/**/*.java"]),
resources = glob(["resources/**"]),
main_class = "com.redhat.developers.DemoApplication",
# FIXME why I should import all the jars when they are transitive to spring boot starter
deps = [
"//third_party:org_springframework_boot_spring_boot_starter_actuator",
"//third_party:org_springframework_boot_spring_boot_starter_web",
],
)
但遗憾的是,由于传递deps没有作为上述声明的一部分加载,因此会产生大量编译错误。最后我必须像https://gist.github.com/kameshsampath/8a4bdc8b22d85bbe3f243fa1b816e464#file-src_main_build
src_main_build是包src / main / BUILD下的BUILD文件 third_party_BUILD是包在third_party / BUILD
下的BUILD答案 0 :(得分:1)
Bazel希望您声明所有直接依赖项。即如果您直接使用jar A中的类,则需要将其置于直接依赖项中。
您正在寻找的是一个部署jar。这有点hacky但你实际上可以这样做(在third_party/BUILD
中):
java_binary(
name = "org_springframework_boot_spring_boot_starter_actuator_bin",
main_class = "not.important",
runtime_deps = [":org_springframework_boot_spring_boot_starter_actuator"], )
java_import(
name = "springframework_actuator",
jars = [":org_springframework_boot_spring_boot_starter_actuator_bin_deploy.jar"],
)
这会将jar中除neverlink之外的所有依赖项(_deploy.jar
)捆绑在一起并重新展开。
答案 1 :(得分:0)
更新:rules_jvm_external
是Bazel团队维护的官方规则集,用于以过渡方式获取和解决工件。
您可以找到Spring Boot here的示例。 WORKSPACE文件中的声明如下所示:
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
artifacts = [
"org.hamcrest:hamcrest-library:1.3",
"org.springframework.boot:spring-boot-autoconfigure:2.1.3.RELEASE",
"org.springframework.boot:spring-boot-test-autoconfigure:2.1.3.RELEASE",
"org.springframework.boot:spring-boot-test:2.1.3.RELEASE",
"org.springframework.boot:spring-boot:2.1.3.RELEASE",
"org.springframework.boot:spring-boot-starter-web:2.1.3.RELEASE",
"org.springframework:spring-beans:5.1.5.RELEASE",
"org.springframework:spring-context:5.1.5.RELEASE",
"org.springframework:spring-test:5.1.5.RELEASE",
"org.springframework:spring-web:5.1.5.RELEASE",
],
repositories = [
"https://jcenter.bintray.com",
]
)