Как построить сам кинжал

Проект Dagger использует систему http://bazel.build/ для сборки. Я установил bazel на Fedora, он запускает и собирает проект, но, очевидно, у dagger есть код Java 1.8, а bazel нацелен на java 7.

Существует файл build_def.bzl, и целевая версия java определяется следующим образом:
SOURCE_7_TARGET_7 = ["-source 1.7 -target 1.7"]

меняя его на
SOURCE_7_TARGET_7 = ["-source 1.8 -target 1.8"]

не помогает. И ветки master, и rc11 не могут быть скомпилированы из-за одной и той же ошибки (компилятор java жалуется на то, что целевая версия 1.7 не поддерживает лямбду и ссылку на метод). На вики или странице проекта нет руководства по созданию кинжала, и я незнаком с Базелем. Интересно, нужно ли что-то вроде retrolambda добавить в путь времени выполнения сборки, но с bazel это не так просто.

Образец вывода:

$> bazel build :all

INFO: Found 8 targets...
ERROR: /home/user/dagger/java/dagger/internal/codegen/BUILD:44:1: Building java/dagger/internal/codegen/libcodegen.jar (116 source files) failed: java failed: error executing command external/local_jdk/bin/java -Xbootclasspath/p:external/bazel_tools/third_party/java/jdk/langtools/javac-9-dev-r4023-2.jar -XX:+TieredCompilation '-XX:TieredStopAtLevel=1' -jar ... (remaining 2 argument(s) skipped): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.
java/dagger/internal/codegen/AbstractComponentWriter.java:612: error: method references are not supported in -source 1.7
  (use -source 8 or higher to enable method references)
java/dagger/internal/codegen/AnnotationExpression.java:80: error: lambda expressions are not supported in -source 1.7
  (use -source 8 or higher to enable lambda expressions)
java/dagger/internal/codegen/AnnotationSpecs.java:41: error: method references are not supported in -source 1.7
  (use -source 8 or higher to enable method references)

# Rest of output removed for brevity, the error above repeats for many more files.

1 ответ

У меня была установлена ​​неправильная версия базеля. Сборка так же проста, как и запуск:

bazel build :all

Я уже установил Oracle JDK 8 на мою машину (Fedora) и скачал этот выпуск bazel (bazel-0.5.0-without-jdk-installer-linux-x86_64.sh).

Другие вопросы по тегам