2017-08-05 1 views
1

J'essaie de comprendre comment utiliser bazel pour construire des projets java/scala, donc j'ai créé un projet de jouet qui a quelques classes triviales et un test qui utilise le cadre scalatest. J'ai essayé d'importer toutes les dépendances transitif de maven en créant le fichier d'espace de travail suivant:Importer et utiliser un fichier jarre exernal de maven en utilisant bazel

workspace(name = "scala_bazel_example") 

git_repository(
    name = "io_bazel_rules_scala", 
    remote = "git://github.com/bazelbuild/rules_scala", 
    commit = "aaa6c7d4db4f231a541f20a60760420f4bdd11e8" 
) 

load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories") 

scala_repositories() 

maven_jar(
    name = "junit", 
    artifact = "junit:junit:4.11", 
) 

maven_jar(
    name = "org_scalatest", 
    artifact = "org.scalatest:scalatest_2_11:3.0.1", 
) 

maven_jar(
    name = "org_hamcrest", 
    artifact = "org.hamcrest:hamcrest-core:1.3", 
) 

selon https://docs.bazel.build/versions/master/be/workspace.html#maven_jar

Alors j'ai essayé de construire mon test avec le fichier BUILD suivant:

scala_test(
    name = "example-test", 
    srcs = glob(["**/*.scala"]), 
    deps = [ 
    "@org_scalatest//jar", 
    "@junit//jar", 
    "@org_hamcrest//jar", 
    "//src/scala/main/src/com/foo/util:example-lib"] 
) 

en référençant les bocaux externes comme suggéré dans le lien comme <name>//jar.

Cependant, quand je construis, je reçois l'erreur suivante:

$ bazel build :example-test 
ERROR: /home/ubuntu/.cache/bazel/_bazel_ubuntu/c83ae3b365c8d335f0b135ef3a055202/external/io_bazel_rules_scala/third_party/plugin/src/main/BUILD:5:1: in scala_library_for_plugin_bootstrapping rule @io_bazel_rules_scala//third_party/plugin/src/main:dependency_analyzer: 
Traceback (most recent call last): 
     File "/home/ubuntu/.cache/bazel/_bazel_ubuntu/c83ae3b365c8d335f0b135ef3a055202/external/io_bazel_rules_scala/third_party/plugin/src/main/BUILD", line 5 
       scala_library_for_plugin_bootstrapping(name = 'dependency_analyzer') 
     File "/home/ubuntu/.cache/bazel/_bazel_ubuntu/c83ae3b365c8d335f0b135ef3a055202/external/io_bazel_rules_scala/scala/scala.bzl", line 576, in _scala_library_impl 
       _lib(ctx, True) 
     File "/home/ubuntu/.cache/bazel/_bazel_ubuntu/c83ae3b365c8d335f0b135ef3a055202/external/io_bazel_rules_scala/scala/scala.bzl", line 503, in _lib 
       _collect_jars_from_common_ctx(ctx) 
     File "/home/ubuntu/.cache/bazel/_bazel_ubuntu/c83ae3b365c8d335f0b135ef3a055202/external/io_bazel_rules_scala/scala/scala.bzl", line 486, in _collect_jars_from_common_ctx 
       _collect_jars(ctx.attr.deps + auto_deps + extr..., ...) 
     File "/home/ubuntu/.cache/bazel/_bazel_ubuntu/c83ae3b365c8d335f0b135ef3a055202/external/io_bazel_rules_scala/scala/scala.bzl", line 463, in _collect_jars 
       _collect_jars_when_dependency_analyzer_is_off(dep_targets) 
     File "/home/ubuntu/.cache/bazel/_bazel_ubuntu/c83ae3b365c8d335f0b135ef3a055202/external/io_bazel_rules_scala/scala/scala.bzl", line 422, in _collect_jars_when_dependency_analyzer_is_off 
       java_provider.compile_jars 
'java_common.provider' object has no attribute 'compile_jars' 
Available attributes: transitive_runtime_jars. 
ERROR: Analysis of target '//src/scala/test/src/com/foo/util:example-test' failed; build aborted. 
INFO: Elapsed time: 0.287s 

Est-ce que quelqu'un a une idée de ce que je fais mal? J'ai cherché autour et ne pouvais pas trouver un exemple clair qui a montré comment écrire un ensemble de base de fichiers WORKSPACE et BUILD pour construire un petit projet en fonction de quelques dépendances explicites de maven.

+0

Quelle est la sortie de 'bazel version'? Votre exemple fonctionne pour moi avec bazel 0.5.3. Vos fichiers WORKSPACE et BUILD semblent corrects. – Adam

+0

La version est 0.5.1. – jonderry

Répondre

2

L'erreur que vous voyez est due à un changement de rupture entre bazel 0.5.1 et bazel 0.5.2 qui a cassé les règles de scala. Au moment de l'écriture, le README dans https://github.com/bazelbuild/rules_scala indique "vous devez avoir bazel 0.5.2 ou plus tard".

Vos fichiers BUILD et WORKSPACE sont corrects.