2017-09-21 1 views
1

J'essaie d'utiliser le generate_workspace sur l'un des projets qui a des dépendances et des transitions. Une fois le generate_workspace.bzl a été généré et je l'ai copié à l'ESPACE DE TRAVAIL et a suivi les instructions dans les docs de bazel. Bien que je vois les deps et leurs transitifs énumérés dans le generate_workspace.bzl mon projet pendant la phase de java_library n'est pas capable de résoudre les opérations transitives .. quand j'importe le même projet dans IDEA je ne vois pas les jars correctement chargés.Migration de Bazel Maven Dépendances transitives Portée

Mon doute est pour les DEPS que je vois le generate_workspace.bzl ajoute ses DEPS de transitve comme runtime_deps ce qui signifie qu'ils ne sont disponibles que pendant avorton enter code here ime

J'ai créé essentiel de tous les fichiers ici https://gist.github.com/kameshsampath/8a4bdc8b22d85bbe3f243fa1b816e464

Idéalement

dans mon projet Maven j'ai juste besoin https://gist.github.com/kameshsampath/8a4bdc8b22d85bbe3f243fa1b816e464#file-src_main_build-L8-L9, bien que generate_workspace.bzl a décidé à juste titre je pensais que son assez si mon src/main/BUILD ressemble

java_binary(
     name = "main", 
     srcs = glob(["java/**/*.java"]), 
     resources = glob(["resources/**"]), 
     main_class = "com.redhat.developers.DemoApplication", 
     # FIXME why I should import all the jars when they are transitive to spring boot starter 
     deps = [ 
      "//third_party:org_springframework_boot_spring_boot_starter_actuator", 
      "//third_party:org_springframework_boot_spring_boot_starter_web", 
      ], 
) 

Mais malheureusement, cela donne beaucoup d'erreurs de compilation car les téléchargements transitifs ne sont pas chargés dans le cadre de la déclaration ci-dessus. finalement, je dois définir comme la façon dont je l'ai fait dans le https://gist.github.com/kameshsampath/8a4bdc8b22d85bbe3f243fa1b816e464#file-src_main_build

src_main_build est un fichier BUILD sous paquet src/main/CONSTRUIRE third_party_BUILD est le BUILD sous third_party paquet/CONSTRUIRE

+0

Je pense qu'un extrait irait un long chemin ici. En outre, voyez-vous une utilisation des "exportations"? – Ittai

+0

@Ittai a ajouté les extraits de code et le lien vers gist – Kamesh

Répondre

1

Bazel vous attend de déclarer toutes vos dépendances directes . C'est à dire. Si vous utilisez directement une classe de jar A, vous devez l'avoir dans vos dépendances directes.

Ce que vous cherchez est un pot de déploiement. C'est un peu hacky mais vous pouvez réellement le faire de cette façon (en third_party/BUILD):

java_binary(
    name = "org_springframework_boot_spring_boot_starter_actuator_bin", 
    main_class = "not.important", 
    runtime_deps = [":org_springframework_boot_spring_boot_starter_actuator"],) 

java_import(
    name = "springframework_actuator", 
    jars = [":org_springframework_boot_spring_boot_starter_actuator_bin_deploy.jar"], 
) 

Ce regrouperons toutes les dépendances, sauf celui neverlink dans un bocal (le _deploy.jar) et réexposer il.

+0

Damien, ne peut-il pas simplement utiliser "deps", puis itérer à travers quelques avertissements de strict-deps? Cela lui passera à travers les quelques obstacles dont il a besoin transitivement, mais lui donnera encore un graphique de dépendance plus propre – Ittai

+0

Damien, a eu une erreur 'ERREUR:/Utilisateurs/kameshs/​​MyLabs/bazel/bazel-demos/printemps-boot-bazel-demo/src/main/BUILD: 7: 14: dans l'attribut deps de la règle java_binary // src/main: main: java_binary rule '// third_party: org_springframework_boot_spring_boot_starter_web _bin' est égaré ici (cc_binary attendu, cc_bibliothèque, genrule, genproto, java_import, java_library , java_proto_library, java_lite_proto_library, proto_library, sh_binary ou sh_library) et '// third_party: org_springframework_boot_spring_boot_starter_web_bin' n'a pas de fournisseurs obligatoires: 'link_params' ou 'java_common.provider'. – Kamesh

+0

Kamesh: pouvez-vous donner le contenu de vos fichiers de construction? Ittai: oui il pourrait et devrait avoir un graphe propre mais il veut pouvoir importer 2 pots ... –