java - 使用 Bazel 中其他模块的“src/test”下的实用程序测试类
问题描述
所以我正在将一个多模块项目从 maven 迁移到 Bazel,我遇到了以下问题:
我的模块 A 包含“src/test”下的一些实用程序测试类,模块 B 使用它们。在 maven 中,我们使用 maven-jar-plugin 生成一个test-jar,它作为依赖项包含在模块 B 中。但我不确定如何将其迁移到 Bazel。
到目前为止,我的 bazel 配置如下所示:
模块 B:
java_library(
name = "moduleB-lib",
srcs = glob(["src/main/java/**/*.java"]),
visibility = ["//visibility:public"],
deps = [
"//path/to/moduleA:lib"
],
)
java_library(
name = "test-dep",
srcs = glob(["**/src/test/java/**/*.java"]),
visibility = ["//visibility:public"],
deps = [
":moduleB-lib",
"@maven:junit-dependencies"
],
)
java_test(
name = "tests",
args = ["--select-package=org.test"],
main_class = "org.junit.platform.console.ConsoleLauncher",
use_testrunner = False,
visibility = ["//visibility:public"],
runtime_deps = [":test-dep"],
)
但这不起作用,因为模块 B 无法看到这些实用程序类
error: cannot find symbol
解决方案
所以我终于找到了解决方案,实际上这很容易:
java_library(
name = "moduleB-lib",
srcs = glob(["src/main/java/**/*.java"]),
visibility = ["//visibility:public"],
deps = [
"//path/to/moduleA:lib"
],
)
java_library(
name = "test-dep",
srcs = glob(["**/src/test/java/**/*.java"]),
visibility = ["//visibility:public"],
deps = [
":moduleB-lib",
"//path/to/moduleA:test-dep",
"@maven:junit-dependencies"
],
)
java_test(
name = "tests",
args = ["--select-package=org.test"],
main_class = "org.junit.platform.console.ConsoleLauncher",
use_testrunner = False,
visibility = ["//visibility:public"],
runtime_deps = [":test-dep"],
)
为了使它工作,我刚刚从模块 A 中添加了 test-dependencies 的 java-library。
推荐阅读
- python - 努力从 QTableWidget 导出 csv 数据
- difference - jags 输出与 as.mcmc 输出的有效样本大小
- java - 尽管修改了与其他 JavaFX 程序一起使用的 VM 选项,HTMLEditor 仍会导致调用目标异常
- c - 关于警告:“注意:预期的'const int **'但参数的类型是'int **'”
- swift - 用 Swift 中 NSTextView 上的 Markdown 替换子字符串
- android - textwatcher中的多个edittext
- google-cloud-storage - GCS 二进制上传 - 下载时不播放音频文件
- html - 当使用css悬停在按钮上时,我将如何更改按钮的文本?
- angular - Angular 配置环境使用引号保留对象键
- spring-mvc - 无法在 Spring MVC 中将 ID 从 View 发送到 Controller