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

标签 java bazel buck pants skylark

我喜欢使用受限的 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以获得最初的灵感。 ( lark 曾一度更名为星雀。)

参见https://github.com/google/copybara/blob/d4f9bd37ddf6eb51f1072ffb4e61332f7c410624/java/com/google/copybara/config/SkylarkParser.java然后https://github.com/google/copybara/blob/d4f9bd37ddf6eb51f1072ffb4e61332f7c410624/java/com/google/copybara/Core.java以获得更好的灵感。

关于java - 如何在我的应用程序中包含 Skylark 配置解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49108709/

相关文章:

java - 仅在窗口调整大小完成后重绘 JPanel

c++ - bazel c++ 创建并链接共享库

java - 来自不同降压模块的注释处理器的聚合输出

java - Hibernate - 在一个事务中保存多个对象

java - 在 Java 环境中检测重复上传文件的最佳方法?

使用 Bazel 和 GTest 的 C++ 项目

c++ - Bazel 使用 OpenCV 3.3 依赖项构建

buck - Buck 有平台名称宏吗?

java - Apache Mina SSHD 认证和加密