当前位置: 首页 > 知识库问答 >
问题:

Bazel Maven迁移传递依赖关系范围

章城
2023-03-14

理想情况下,在我的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",
            ],
)

但遗憾的是,这会导致大量编译错误,因为传递性DEP没有作为上述声明的一部分加载。最后,我必须像在https://gist.github.com/kameshsampath/8a4bdc8b22d85bbe3f243fa1b816e464#file-src_main_build中那样进行定义

src_main_build是src/main/BUILD包下的构建文件,third_party_BUILD是third_party/BUILD包下的构建文件

共有1个答案

陆翔飞
2023-03-14

Bazel希望您声明所有直接依赖项。即。如果直接使用jar a中的类,则需要将其放在直接依赖项中。

您正在寻找的是一个部署JAR。这有点难听,但实际上可以这样做(在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)并重新公开它。

 类似资料:
  • 问题内容: 我在ivaven.xml中添加了一个依赖项(让我们将其命名为A),它在maven Central中具有一个pom文件。Ivy使用ibiblio解决了Maven依赖关系。添加到ivy.xml的依赖项(A)具有传递的依赖项(B)。到目前为止,到目前为止很好。常春藤无法解决传递性依赖项(B)的依赖项(C)。 我在ivy.xml中定义了A,如下所示: 在B的pom文件中,在编译和测试范围中都定

  • 我试图排除gradle中的传递依赖项 我看到这个错误 null 在类型为org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency的DefaultExternalModuleDependency{group='org.apache.kafka',name='kafka-streams',version

  • 我正在从一个使用Android-Maven-Plugin的Maven项目中构建一个Android应用程序。在这个项目中,我使用了新的beta版数据绑定库。 它包含在Android SDK的本地m2repository中(extras/Android/m2repository)。这个存储库中的库打包为AAR类型。 附注:对于我自己的本地构建,我有几个解决方案(例如重新打包为jar),但我更喜欢一个更

  • null null 尝试强制升级的错误日志:“无法解析配置”:reading-condermination-server-quarkus-impl:TestCompileClasspath“的所有文件。 无法解析JUnit:JUnit:4.13。要求方:project:reading-concermination-server-quarkus-impl>找不到满足版本约束的“junit:junit

  • 我有一个奇怪的问题,< code > mvn clean install-d project . version = 1 或< code>jenkins build运行正常,但当我在IDE中打开模块时,intellij变得非常愤怒,这影响了开发。 我在intellij日志中看到以下问题 POM 代码受版权保护,所以不能透露,但这是一个基本大纲 < li>fabric-common:基本模块(用于绑

  • 我正在尝试构建一个简单的REST服务来学习OSGI。我正在使用Spark Servlet来处理请求。 我将 spark core 作为依赖项嵌入,在 maven 中构建了我的项目,并在部署时在 Karaf 中出现了布线包错误。 看起来我一个接一个地跟踪程序包,一个一个地解决每个错误,仅仅解决依赖关系就需要大约2个小时。显然我做错了什么。。 我应该如何执行此操作,以便使用 spark servlet