如何在我的应用程序中包含 Skylark 配置解析器?

How do I include a Skylark configuration parser in my application?

我喜欢使用受限 Python 代码配置我的 Java 应用程序的想法。这种受限制的 Python 配置语言被称为 Skylark。我找到了一个 Go library for Skylark support,但我需要一个 Java。

我可以将 bazel 项目或 buck 项目中的哪个 Maven 工件添加到我的 pom.xml 依赖项部分以获取 Skylark 支持库?

#2367 解决之前,以下对我有用。使用 Bazel 构建 Skylark_deploy.jar 并将其作为系统依赖项添加到您的 Maven 项目中。从本质上讲,这会导致您的类路径变得一团糟,但它可以快速设置并启用实际实验。

警告:Skylark 尚未稳定其 API,因此 com.google.devtools 下的任何内容都可能发生未经通知的更改。

使用 Bazel

构建 Skylark_deploy.jar
git clone git@github.com:bazelbuild/bazel.git --depth 1
cd bazel
bazel build //src/main/java/com/google/devtools/skylark:Skylark
bazel build //src/main/java/com/google/devtools/skylark:Skylark_deploy.jar

检查它是否有效,下面两个命令中的任何一个都应该启动 Skylark REPL

bazel-bin/src/main/java/com/google/devtools/skylark/Skylark
java -jar bazel-bin/src/main/java/com/google/devtools/skylark/Skylark_deploy.jar

Skylark_deploy.jar 当前大小为 9.4MiB。

将其作为系统依赖项添加到您的 Maven 项目中

<systemPath>${project.basedir}/lib/Skylark_deploy.jar</systemPath>

或使用Gradle

compile files('lib/Skylark_deploy.jar')

请参阅 https://github.com/bazelbuild/bazel/blob/0f99c3cc0b7b82e198c8f365254493fc4713edcd/src/main/java/com/google/devtools/starlark/cmd/Starlark.java 以获取初步灵感。 (Skylark 曾一度更名为 Starlark。)

请参阅 https://github.com/google/copybara/blob/d4f9bd37ddf6eb51f1072ffb4e61332f7c410624/java/com/google/copybara/config/SkylarkParser.java and then https://github.com/google/copybara/blob/d4f9bd37ddf6eb51f1072ffb4e61332f7c410624/java/com/google/copybara/Core.java 以获得更好的灵感。