首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bazel方面如何从java_library目标获取源文件列表?

Bazel是一个开源的构建工具,用于构建和测试软件项目。它支持多种编程语言,并提供了丰富的构建规则和工具链。

要从java_library目标获取源文件列表,可以使用Bazel提供的查询语言和内置函数。以下是一种可能的方法:

  1. 首先,确保你的BUILD文件中定义了java_library目标,例如:
代码语言:txt
复制
java_library(
    name = "my_library",
    srcs = glob(["src/main/java/**/*.java"]),
    ...
)
  1. 然后,在命令行中运行以下Bazel查询命令:
代码语言:txt
复制
bazel query 'deps(//path/to:my_library)' --output=build

其中,//path/to:my_library是你的java_library目标的路径和名称。

  1. 运行上述命令后,你将获得一个BUILD文件,其中包含了java_library目标及其所有依赖项的定义。在该文件中,你可以找到源文件列表。
  2. 在该BUILD文件中,java_library目标的源文件列表通常以srcs属性的形式存在。你可以根据需要使用这些源文件列表。

需要注意的是,以上方法假设你已经熟悉Bazel的基本用法,并且已经正确配置了你的BUILD文件和WORKSPACE文件。

关于Bazel的更多信息和详细用法,请参考腾讯云的相关产品和文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何列表获取元素

有两种方法可用于列表获取元素,这涉及到两个命令,分别是lindex和lassign。...lassign接收至少两个变量,第一个是列表变量,第二个是其他变量,也就是将列表中的元素分配给这些变量。例如: ? 可以看到此时lassign比lindex要快捷很多。...情形1:列表元素的个数比待分配变量个数多 例如,上例中只保留待分配变量x和y,可以看到lassign会返回一个值c,这个值其实就是列表中未分发的元素。而变量x和y的值与上例保持一致。 ?...综上所述,可以看到在使用lassign时要格外小心,确保变量个数与列表长度一致,或变量个数小于列表长度,否则会出现待分配变量最终被赋值为空字符串的情形。...思考一下: 如何用foreach语句实现对变量赋值,其中所需值来自于一个给定的列表

17.2K20

自定义规则实现将多个静态库合并为一个动态库或静态库

例如 cc_binary 规则可能: 输入(Inputs):获取一组 .cpp 文件 动作(Action):基于输入运行 g++ 输出(Output):返回一个可执行文件 Bazel 的角度来看,g...Depsets 可能包含重复的值,但是使用 to_list() 成员函数可以获取一个没有重复项的元素列表,遍历所以成员。..., OutputGroupInfo]>,即包含一个目标目标的三个信息体,目标里结构具体可以参考官方文档并获取相关信息,比如用 {Target}.files.to_list() 可以获取 Target...直接生成的一组文件列表,意思就是比如 A 目标,直接生成的就是 libA.a。...目标 A 的依赖目标 E 信息在 CcInfo 结构体内,这里先不展开如何获取了,这里只做个提示: x = dep_target[CcInfo].linking_context.linker_inputs.to_list

5.1K20

谷歌的Bazel构建工具

语言支持丰富:Bazel支持多种编程语言,包括Java、C++、Python等,方便开发者使用。 2. 规则清晰明确:Bazel使用称为BUILD文件的规则文件来描述如何构建目标项目。...四、案例分析 为了更直观地展示Bazel在软件开发中的应用,让我们以一个简单的C++项目为例。假设我们有一个简单的C++程序,包含多个源文件和头文件,我们需要使用Bazel来构建和测试这个项目。...首先,我们需要创建一个BUILD文件来描述如何构建我们的项目。在这个文件中,我们可以定义目标及其依赖项。...,它依赖于三个源文件和两个头文件,以及一个名为libanotherlib的库。...如果一切顺利,Bazel将生成一个可执行文件或其他目标文件。

27910

Spotify 如何切换到 Bazel 进行 iOS App 构建

在采用 Bazel 之前,Spotify 使用基于 YAML 的自定义 Ruby DSL,开发人员可以声明式地添加新模块,包括构建目标的规范、构建它所需的源文件、资源和依赖项。...Balestra 说,因为可以重用相同的 DSL 脚本来生成 BUILD.bazel 文件而不是 Xcode.pxbproj 文件,这有助于确保我们无缝地切换到 Bazel。...他提到,切换到 Bazel 将构建加测试时间 80 分钟降低到了 20 分钟。 耗时最长的配置开始,我们将 CI 配置一个接一个地迁移到 Bazel。...其中有一个配置包含超过 800 个测试目标、近 300 万行代码,使用 Xcode 构建花费的时间在 45 分钟以上。迁移到 Bazel 之后不到 10 分钟就可以构建完成。...这使得他们可以直接 Bazel 构建文件生成 Xcode 项目,而不是使用遗留的 Ruby/YAML 构建系统,这样就可以减少在本地构建成功但在 CI 中失败的情况,从而降低维护和故障排除的成本。

19920

作为TensorFlow的底层语言,你会用C+构建深度神经网络吗?

当我写上一篇文章的时候,我的目标是仅使用 TensorFlow 中的 C++ API 和 CuDNN 来实现基本的深度神经网络(DNN)。在实践中,我意识到在这个过程中我们忽略了很多东西。...在本文中,我将展示如何使用 TensorFlow 在 C++ 上构建深度神经网络,并通过车龄、公里数和使用油品等条件为宝马 1 系汽车进行估价。...你需要从 TensorFlow 源文件开始构建: 随后你需要进行配置,如选择是否使用 GPU,你需要这样运行配置脚本: 现在我们要创建接收 TensorFlow 模型代码的文件。...读取数据 这些数据法国网站 leboncoin.fr 上摘取,随后被清理和归一化,并被存储于 CSV 文件中。我们的目标是读取这些数据。...它们 CSV 文件中生成一个浮点型的二维数组,并用于馈送到神经网络。 data_set.h data_set.cc 我们必须在 bazel BUILD 文件中添加这两个文件。

1.2K80

Istio实战系列-Envoy Proxy构建分析

但这个库中并不包含Envoy自身的源代码,因此这个库在构建时会Github上下载Envoy源码进行联合编译。 编译工具 Envoy采用了Bazel进行构建。...为了理解Envoy的编译过程,我们需要先了解Bazel的几个基础概念 workspace: 文件系统中的一个目录,该目录中包含了用于编译软件所需的所有源文件。...target: 生成的目标,一般是一个lib或者二进制文件。 target是一个构建规则(build rule)的实例,一般包含构建所需的源文件,构建目标的名称。...编译Envoy 首先参考Bazel的官方文档安装Bazel,并且需要安装gcc等相关工具。...在执行//src/envoy:envoy这个target时,发现该target依赖这个外部repository,根据http_archive中的描述,指定的url下载该依赖的源码,并进行编译。

1.7K10

repository_rule() vs rule()

构建阶段来看,rule() 规则可以依赖 repository_rule() 生成的 BUILD 文件中的目标或者 bzl 文件等。...因此构建的阶段来看,repository_rule 可以做的事情很多,比如包括: 创建/删除文件 执行本地可执行文件,并获取执行结果 创建软链接 下载解压文件 读取本地文件内容 实现自动化的 BUILD...: URL 下载文件,并使其可用作文件组(file group) http_jar: URL 下载一个 .jar 扩展名包,并以 java_import 的形式提供 和内置的 repository...:执行参数列表给出的命令,执行命令具有超时限制,默认为600秒。...最后实现 go_binary,将输入(源文件)传入规则,并调用具体的动作实现最后的可执行文件生成。

2.3K20

连1.0版本都没有,Uber为什么会采用这样一项新技术?

本文技术和社交两方面简单介绍了“Uber 是如何使用 Zig 的”,而主要的篇幅是介绍“我把 Zig 带到 Uber 的经验”。 本文要点: Uber 使用 Zig 来编译其 C/C++ 代码。... Go Monorepo 创建伊始,C++ 工具链就不是封闭式的:Bazel 会使用它在系统上发现的任何东西。...主机和目标平台是解耦的。不管是什么主机,针对目标平台linux-aarch64和darwin-x86_64的设置都是一样的。...我集成了zig ar,完善了文档,并 在 Zig 邮件列表中宣布了我创建的 bazel-zig-cc 分叉。至此,它对我的小项目是有效的。...原文链接: https://jakstys.lt/2022/how-uber-uses-zig/ 点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

1.4K20

使用Zig在arm64上引导Uber的基础设施

我们考虑运行一个“并行区域”,它具备 arm64 架构,但在其他方面与生产环境是分离的(并且质量要求更为宽松,方便我们快速前进)。...在进行交叉编译时,主机和目标是不同的平台(例如, macOS arm64 (M1) 编译成 x86_64 Linux)。有时候,目标机器可能无法编译代码,但可以运行。...下图显示了如何通过原生编译(左)和交叉编译(右)将源文件 main.c 编译成可执行文件。 图 1:输入文件 main.c 原生编译(左)或交叉编译(右)为 aarch64 架构。...基础镜像包含许多 Go 代码库编译出来的内部工具。因此,我们遇到了一个先有鸡还是先有蛋的问题:如何为我们的第一个 arm64 构建主机编译工具?...-linux-gnu-gcc),而 Clang 接受目标平台作为命令行参数(-target ): 表面上看,用 GCC 和 Clang 交叉编译 C 源文件似乎很容易,但背后都发生了什么?

26730

如何挖掘 Bazel 的极致性能

,返回值是 CAS 缺失的 Digest 列表。...如何高效使用 Bazel Bazel 为了正确性和高性能,做了很多优秀的设计,那么我们如何正确的使用这些能力,让我们的构建性能“起飞”呢, 我们将从本地研发和 CI pipeline 两种场景进行分析...使用时应该信任 bazel 的增量构建机制,即便是远端仓库同步了代码,也可以直接 build,无须先通过 bazel build 清理环境。...如何衡量任务调度的好与坏,一方面尽量让 Action 均匀分布,避免排队时间过长,另一方面尽量利用 worker 的本地文件缓存,减少重复的文件下载。...总 结 本文原理方面介绍了 Bazel 高性能的原因,从实践方面针对本地研发和 CI pipeline 两种场景给出了建议。

50220

Spotify 移动工程平台迁移:将 Android 和 iOS 代码库迁移到 Bazel

根据移动工程战略计划,该团队将他们的 Android 和 iOS 代码库迁移到了谷歌的开源构建系统 Bazel 上。...来自 Spotify 移动工程团队的 Mariana Ardoino 和 Raul Herbster 在一篇博客文章中探讨了迁移中获得的经验教训。...通常,当迁移的范围未知时,关注价值并理解迁移的目标是有意义的。该团队建议概念验证 (POC) 入手,并与利益相关者一起验证,而不是在一开始就确定所有可能的场景。...团队建议持续评估迁移进度,通过展示迁移的积极影响来激励团队,并调整方法以实现某些迁移目标。...点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

39230

Rust + Android 的集成开发设计

但是,当 AOSP 迁移到 Bazel 构建系统时(译注:Bazel 是 AOSP 的下一代构建系统,Soong 和 Make 都将迁移),这些设计决策和思路是同样适用的。...当第三方 crate 可能对广泛的社区更有益时,我们的目标是将 crate 优先引入。...安全的角度来看,这在添加或更新第三方代码时,会带来额外的负担,因为需要仔细检查 build.rs 脚本文件。...源码生成 crate 与 C/C++ 编译器不同,rustc 只接受代表二进制或库入口点的单个源文件。它希望源码树的结构能够自动发现所有必需的源文件。...在不久的将来,我们计划在站点 source.android.com 上添加文档,说明如何在 Soong 中定义和使用 Rust 模块。

2.1K10

AirbnbBuck 迁移到 Bazel,大幅改善开发者体验

他们的 iOS 开发管道开始,Airbnb 的工程师们主要关注两个方面的问题:构建配置和 IDE 集成。...Bazel 和 Buck 有一些相似之处,包括相似的目录结构和命令行调用,最重要的是使用相同的配置语言 Starlark,这在某种程度上简化了构建配置的迁移。...尽管 Buck 和 Bazel 有相似之处,但它们在所提供的规则方面有所不同。...Buck 提供了一个read_config函数来读取命令行参数,而 Bazel 不支持这个函数,因此 Bazel 和 Buck 之间出现了不匹配。...在 IDE 集成方面,Airbnb 工程师的目标是用一个以 Bazel 为中心的解决方案替换他们现有的以 Buck 为中心的解决方案来创建 Xcode 项目,同时又可以使用他们围绕 Buck 开发所使用的工具

9610

GN语言和操作

另一个列表中减去一个列表将删除第二个列表中的每个项目): a = [ "first", "second", "third", "first" ] b = a - [ "first" ] # [ "second...内置的目标类型(请参阅gn help以获取更多帮助)是: 类型说明action运行一个脚本来生成一个文件action_foreach为每个源文件运行一次脚本bundle_data声明数据加入到Mac /...目标可以根据需要添加或删除。所以在实践中你通常会使用configs += ":myconfig"追加到默认列表。 请参阅gn help config有关如何声明和应用配置的更多信息。 3....典型的用例是传递一个比当前平台的命令行限制长的文件名列表。请参阅gn help read_file以及gn help write_file如何读取和写入文件。如果可能,应该避免这些功能。...Chromium还在一个目标中编译多种语言,因此指定目标名称前缀的语言类型被删除(例如,cc_library)。

1.5K10
领券