首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将bazel配置为使用特定JVM版本构建/测试

将bazel配置为使用特定JVM版本构建/测试
EN

Stack Overflow用户
提问于 2019-11-25 13:22:38
回答 1查看 3.1K关注 0票数 4

我正在评估Bazel,并尝试对其进行配置,以便它使用与其构建不同的JDK构建和测试我的scala项目。

以下是来自我的bazel info输出的相关行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java-home: /nix/store/09x4mnxfzppwq1yjaakrfa6aj3rp7sw8-openjdk-11.0.4-ga/lib/openjdk
java-runtime: OpenJDK Runtime Environment (build 11.0.3-internal+0-adhoc..jdk11u-jdk-11.0.3-ga) by Oracle Corporation
java-vm: OpenJDK 64-Bit Server VM (build 11.0.3-internal+0-adhoc..jdk11u-jdk-11.0.3-ga, mixed mode) by Oracle Corporation
max-heap-size: 8325MB
package_path: %workspace%
release: release 1.1.0- (@non-git)

虽然我的包管理器似乎使用了openjdk的最新版本构建了Bazel,但我希望构建/测试的项目应该使用安装在:/usr/lib/jvm/java-8-openjdk下面的JDK。

通过深入研究各种github问题,我得到了以下解决方案,它允许我获得绿色构建:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bazel test \
    --define=ABSOLUTE_JAVABASE=/usr/lib/jvm/java-8-openjdk \
    --host_javabase=@bazel_tools//tools/jdk:absolute_javabase \
    --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla \
    --java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla \
    --test_timeout=10 --test_output=all //...

然而,我仍对以下几点感到困惑:

  • 如何在一个项目的基础上永久设置这个选项,这样我就不必总是提供这些选项了?
  • ,我可以这样做吗,以至于intellij Bazel插件会自动获得它呢?
  • ,上面的设置到底是什么,是否有一个更简单的方法来实现相同的结果?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-25 14:06:44

如何在项目的基础上永久地设置这个选项,这样我就不必总是提供这些选项了?我是否可以这样做,使intellij插件将自动获得它?

是。将此添加到所有构建的<project root>/.bazelrc中,以便使用本地JDK:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
build --define=ABSOLUTE_JAVABASE=/usr/lib/jvm/java-8-openjdk
build --host_javabase=@bazel_tools//tools/jdk:absolute_javabase
build --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla
build --java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla

IntelliJ插件将自动获取这些插件。

或者,将它们分组到.bazelrc配置(如local_jdk )下,您可以使用bazel build //:target --config=local_jdk进行选择,这样默认的无配置构建就不会受到影响。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
build:local_jdk --define=ABSOLUTE_JAVABASE=/usr/lib/jvm/java-8-openjdk
build:local_jdk --host_javabase=@bazel_tools//tools/jdk:absolute_javabase
build:local_jdk --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla
build:local_jdk --java_toolchain=@bazel_tools//tools/jdk:toolchain_vanilla

--host_javabase定义了Java用于主机工具编译的JDK的位置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ bazel query --output=build @bazel_tools//tools/jdk:absolute_javabase

java_runtime(
  name = "absolute_javabase",
  tags = ["__JAVA_RULES_MIGRATION_DO_NOT_USE_WILL_BREAK__"],
  generator_name = "absolute_javabase",
  generator_function = "java_runtime",
  generator_location = "tools/jdk/BUILD:75",
  java_home = "$(ABSOLUTE_JAVABASE)",
)

--host_java_toolchain定义了用于主机工具编译的一组Java工具。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ bazel query --output=build @bazel_tools//tools/jdk:toolchain_vanilla

java_toolchain(
  name = "toolchain_vanilla",
  tags = ["__JAVA_RULES_MIGRATION_DO_NOT_USE_WILL_BREAK__"],
  generator_name = "toolchain_vanilla",
  generator_function = "default_java_toolchain",
  generator_location = "tools/jdk/BUILD:367",
  source_version = "",
  target_version = "",
  bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath"],
  misc = ["-XDskipDuplicateBridges=true", "-g", "-parameters"],
  jvm_opts = [],
  javac_supports_workers = True,
  javac = ["@bazel_tools//tools/jdk:javac_jar"],
  tools = ["@bazel_tools//tools/jdk:java_compiler_jar", "@bazel_tools//tools/jdk:jdk_compiler_jar"],
  javabuilder = ["@bazel_tools//tools/jdk:vanillajavabuilder"],
  singlejar = ["@bazel_tools//tools/jdk:singlejar"],
  genclass = ["@bazel_tools//tools/jdk:genclass"],
  ijar = ["@bazel_tools//tools/jdk:ijar"],
  header_compiler = ["@bazel_tools//tools/jdk:turbine"],
  header_compiler_direct = ["@bazel_tools//tools/jdk:turbine_direct"],
  forcibly_disable_header_compilation = True,
)

--java_toolchain定义了用于为目标编译Java的一组Java。它独立于--host_java_toolchain来分离编译主机工具和实际源代码编译。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59040291

复制
相关文章
Twemproxy测试用例以及压测结果
1、前端使用 Twemproxy 做代理,后端的 Redis 数据能基本上根据 key 来进行比较均衡的分布。后端一台 Redis 挂掉后,Twemproxy 能够自动摘除。恢复后,Twemproxy 能够自动识别、恢复并重新加入到 Redis 组中重新使用。
小程故事多
2018/08/22
1.2K0
Twemproxy测试用例以及压测结果
测试用例_测试用例编写
对一个测试工程师来说,测试用例的设计编写是一项必须掌握的能力,但有效的设计和熟练的编写测试用例却是一个十分复杂的技术,测试用例编写者不仅要掌握软件测试技术和流程,而且要对整个软件不管从业务,还是对软件的设计、程序模块的结构、功能规格说明等都要有透彻的理解。
全栈程序员站长
2022/09/20
4.8K0
测试用例_测试用例编写
教你Selenium 测试用例编写
编写Selenium测试用例就是模拟用户在浏览器上的一系列操作,通过脚本来完成自动化测试。
hogwartstester
2022/06/30
5190
API测试用例的编写
在API的自动化测试维度中,测试维度分为两个维度,一个是单独的对API的验证,客户端发送一个请求后,服务端得到客户端的请求并且响应回复给客户端;另外一个维度是基于业务场景的测试,基于业务场景的也就是说编编写的API的测试用例是基于产品的业务逻辑。
Criss@陈磊
2019/10/16
7450
技术分享 | Selenium 测试用例编写
编写Selenium测试用例就是模拟用户在浏览器上的一系列操作,通过脚本来完成自动化测试。
霍格沃兹测试开发
2022/04/20
4170
Mock测试用例_测试用例库
近期在重构一些旧项目,看到之前同事编写的测试用例是使用注入SpringJUnit4ClassRunner 直接注册实现层然后测试需要操作的方法是否可运行。虽然这样说是可以达到测试的想法。但是如果要使用在入口的业务控制层,还要有预期的测试结果,那岂不是要写一大堆逻辑来验证了。。因此使用该方案是很笨重的,测试起来也麻烦。然而bug率还是没降低多少。。
全栈程序员站长
2022/09/19
1.7K0
Mock测试用例_测试用例库
API测试用例的编写
在API的自动化测试维度中,测试维度分为两个维度,一个是单独的对API的验证,客户端发送一个请求后,服务端得到客户端的请求并且响应回复给客户端;另外一个维度是基于业务场景的测试,基于业务场景的也就是说编编写的API的测试用例是基于产品的业务逻辑,关于这点在我出版的书《Python自动化测试实战》测试案例实战中都有丰富的代码案例,
测试小兵
2019/10/17
7650
​技术分享 | Selenium 测试用例编写
编写Selenium测试用例就是模拟用户在浏览器上的一系列操作,通过脚本来完成自动化测试。
Hogwarts_测试
2022/04/20
4000
API测试用例的编写
在API的自动化测试维度中,测试维度分为两个维度,一个是单独的对API的验证,客户端发送一个请求后,服务端得到客户端的请求并且响应回复给客户端;另外一个维度是基于业务场景的测试,基于业务场景的也就是说编编写的API的测试用例是基于产品的业务逻辑,关于这点在我出版的书《Python自动化测试实战》测试案例实战中都有丰富的代码案例,这里就不详细的再说明。抛开两个维度的思考点,作为测试团队的工作内容,首先要保障产品的业务逻辑是可以使用的,只要这样,产品才能够给客户带来价值,在基本的业务逻辑稳定的基础上,再一步需要思考的是整个系统的稳定性,抗压性和系统的承载负载的能力。那么在工程效率的角度上来思考,使用代码或者工具都不是核心,核心是如何使用这些工具或者代码来提升测试的效率,优化研发的流程,并持续的改进,从而达到过程中的改进。不管工具还是代码,对产品完整性的测试,都要考虑产品的业务逻辑,也就是产品的场景,而如何通过API的自动化测试方式来达到产品的业务场景的测试,在单元测试框架的视频里面我特别的说到了七个点,每个点都举了案例,其中最核心的一个点就是编写的每个测试用例都必须得有断言同时基于API的测试要基于产品的业务逻辑来进行,而单纯的测试API是没有多少意义的,比如一个登录的业务场景,登录接口好的就能够证明登录的业务场景是好的吗?很显然不能。
无涯WuYa
2019/10/13
9840
技术分享 | Selenium 测试用例编写
编写Selenium测试用例就是模拟用户在浏览器上的一系列操作,通过脚本来完成自动化测试。
霍格沃兹测试开发Muller老师
2022/05/19
3520
python执行测试用例_平台测试用例
通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。 pytest默认运行用例的顺序是按模块和用例命名的 ASCII 编码顺序执行的,这就意味着每次运行用例的顺序都是一样的。 app 测试里面有个 monkey 测试,随机在页面点点点,不按常理的点点点能找到更多的不稳定性 bug。那么我们在写pytest用例的时候,既然每个用例都是相互独立的, 那就可以打乱用例的顺序随机执行,用到 pytest 的插件 pytest-random-order 可以实现此目的,github 地址https://github.com/jbasko/pytest-random-order
全栈程序员站长
2022/09/19
2K0
python执行测试用例_平台测试用例
测试用例_因果图_测试用例图
​ 界面中有多个控件,控件之间有组合或者限制关系,为了弄清楚不同的输入组合会对应怎样不同的输出结果,可以使用因果图或判定表法。
全栈程序员站长
2022/09/21
1.4K0
测试用例_因果图_测试用例图
软件测试用例包括_白盒测试用例
每个测试用例都有1个或多个测试步骤(List[step]),每个测试步骤对应一个API请求或其他用例的引用。
全栈程序员站长
2022/09/19
9620
软件测试用例包括_白盒测试用例
优测优分享 | 这样做测试用例评审更高效
最近的用例评审让我感受颇深,以下是我对于测试用例评审的一些感受,发出来供大家讨论学习。
优测云服务平台
2020/01/07
1.5K0
优测优分享 | 这样做测试用例评审更高效
pytest指定用例_测试用例怎么编写
测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果. 有些同学在写用例的时候,用例写了先后顺序, 有先后顺序后,后面还会有新的问题(如:上个用例返回数据作为下个用例传参,等等一系列的问题。。。) github 上有个pytest-ordering插件可以控制用例的执行顺序,github插件地址https://github.com/ftobia/pytest-ordering
全栈程序员站长
2022/09/16
2840
测试用例(功能用例)——完整demo(一千多条测试用例)
本文档的预期读者包括:最终用户,项目负责人,评审人员,产品人员,软件设计开发人员,测试人员。
红目香薰
2022/11/30
7.8K1
测试用例(功能用例)——完整demo(一千多条测试用例)
简化测试用例
软件测试已经发展成为IT行业中的一个重要领域。无可否认,从头开始开发新软件需要巨大的付出,但还要付出更大的努力的检验软件质量。逐行分析代码可能很麻烦。这些错误在计算机语言中被称为“BUG”,可能使任何开发人员都“彻夜难眠”。
FunTester
2020/04/03
7510
简化测试用例
登录测试用例
(4)中英文、特殊字符、空格、长度限制 - 一般情况下,登录账户和密码不允许输入中文
wangmcn
2022/10/30
8840
软件测试用例编写方法_软件测试用例包括
HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例 格式关系如下图所示:
全栈程序员站长
2022/09/19
7540
软件测试用例编写方法_软件测试用例包括
软件测试(测试用例)—写用例无压力
主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。
伤心的辣条
2022/12/14
1.3K0
软件测试(测试用例)—写用例无压力

相似问题

测试用例未获得被测方法抛出的异常

123

用robot.api添加测试用例

19

手动测试用例与Selenium测试用例的映射

10

OO Selenium测试用例?

21

Selenium Webdriver测试用例-未按顺序执行的测试用例

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文