Как включить анализатор конфигурации Skylark в свое приложение?
Мне нравится идея настройки моего Java-приложения с ограниченным кодом Python. Этот ограниченный язык конфигурации Python называется Skylark. Я нашел библиотеку Go для поддержки Skylark, но мне нужна библиотека Java.
Какой Maven-артефакт из проекта Bazel или Buck я могу добавить к своему pom.xml
раздел зависимостей, чтобы получить библиотеку поддержки Skylark?
1 ответ
Пока не решен № 2367, у меня сработало следующее. Создайте Skylark_deploy.jar с помощью Bazel и добавьте его в свой проект Maven в качестве системной зависимости. Это приводит к тому, что ваш путь к классам, по сути, является беспорядком, но он быстро настраивается и позволяет проводить практические эксперименты.
Предупреждение: Skylark еще не стабилизировал свой API, поэтому все, что находится под com.google.devtools, может быть изменено без предварительного уведомления.
Построить 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,4 МБ.
Добавьте его в свой проект Maven как системную зависимость
<systemPath>${project.basedir}/lib/Skylark_deploy.jar</systemPath>
Или используйте Gradle
compile files('lib/Skylark_deploy.jar')
См. https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/skylark/Skylark.java для первоначального вдохновения.
См. 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 для еще лучшего вдохновения.