Bazel build не работает над проектом Maven
Я новичок в Bazel и изучаю его сборку, в настоящее время я пытаюсь сделать сборку Bazel из проекта Maven, пожалуйста, посоветуйте мне, как заставить его работать, спасибо.
Вот файл WORKSPACE, который я пытаюсь определить:
maven_jar(
name = "junit",
artifact = "junit:junit:3.8.1",
)
maven_jar(
name = "log4j1",
artifact = "org.apache.logging.log4j:log4j-core:2.6.2",
)
maven_jar(
name = "log4j2",
artifact = "org.apache.logging.log4j:log4j-api:2.6.2",
)
.....
Вот файл BUILD, который я пытаюсь определить:
package(default_visibility = ["//visibility:public"])
java_binary(
name = "everything",
srcs = glob(["src/main/java/**/*.java"]),
resources = glob(["src/main/resources/**"]),
main_class = "src/main/java/com/test/test/test/App",
deps = [
"@junit//jar",
"@log4j1//jar",
"@log4j2//jar",
"@jackson//jar",
"@jsonsimple//jar",
"@commonsdbutils//jar",
"@commons//jar",
"@guava//jar",
"@poi//jar"],
)
Вот я получил результаты сборки Bazel:
mbp:bazel_test me$ bazel build //:everything
INFO: Analysed target //:everything (1 packages loaded).
INFO: Found 1 target...
ERROR: /Users/me/git/test/test/BUILD:4:1: Building everything-class.jar (104 source files) failed (Exit 1)
src/main/java/com/test/test/test/Testapp.java:13: error: cannot find symbol
import org.apache.poi.ss.usermodel.Cell;
^
symbol: class Cell
location: program package org.apache.poi.ss.usermodel
.....
Target //:everything failed to build
1 ответ
Я вижу две проблемы здесь:
main_class
Атрибут должен использовать точки вместо слешей:java_binary( name = "everything", srcs = glob(["src/main/java/**/*.java"]), main_class = "src.main.java.com.test.test.test.App", ...
Нет никаких
org.apache.poi.ss.usermodel.Cell
класс в пои банку.Найдите название банки:
$ bazel query --output=build @poi//jar ... java_import( name = "jar", visibility = ["//visibility:public"], jars = ["@poi//jar:poi-ooxml-3.9.jar"], srcjar = "@poi//jar:poi-ooxml-3.9-sources.jar", )
Расположение пакета
$(bazel info output_base)/external/poi
и теперь мы знаем (изsrcs
атрибут вbazel query
вывод выше) что файл называетсяpoi-ooxml-3.9.jar
:$ unzip -l $(bazel info output_base)/external/poi/jar/poi-ooxml-3.9.jar | grep "org.apache.poi.ss.usermodel" 0 2012-11-26 17:14 org/apache/poi/ss/usermodel/ 2970 2012-11-26 17:14 org/apache/poi/ss/usermodel/WorkbookFactory.class