我想将我的一些Bazel目标交叉构建到Scala 2.12和2.13。作为更复杂的一点,我需要能够表达跨目标依赖关系(例如,一些2.13目标可能对2.12目标具有Bazel依赖关系)。
注:这不是常规的库依赖项(例如,当编译2.13JAR时,依赖2.12构建的JAR显示在类路径上),因为这几乎肯定会导致由于在类路径上具有两个不兼容版本的Scala标准库而引起的问题。这只是我需要构建依赖JAR的一个例子,这样我就可以在2.13目标中的一些集成测试中使用它。
目前为止我在网上找到的...
- This issue from
rules_scala
似乎不支持将Scala版本烘焙到目标中,而是必须全局选择Scala版本。 - This Databricks post有一个跨构建部分,这正是我所希望的(例如,每个支持的Scala版本的每个库生成一个目标),但该帖子中的片段似乎没有任何可运行的Bazel代码支持。
- This later post by Databricks也暗示了
cross_scala_lib
规则,但也没有任何附带的代码。
1条答案
按热度按时间lzfw57am1#
写了一篇博客文章cross build anything with Bazel,使用Scala交叉构建作为例子,同时使用传统的WORKSPACE方法和新的MODULE.bazel方法。
有关工作示例,请参见https://github.com/eed3si9n/gigahorse/pull/85。