J'essaye de construire un paquet de publication relativement autonome (disons que c'est un tarball, mais pourrait être un RPM/Deb) qui contient mon code (qui est empaqueté dans un pot), ainsi que des jars mon code a été compilé avec et utilise à l'exécution. (Disons que ce sont le même ensemble pour la simplicité.)Jars dépendant de l'empaquetage avec Bazel
J'ai MyPackage (qui a un tas de fichiers .java) et disons que cela dépend directement des pots externes A et B, et B dépend du pot externe C. Je reçois A, B et C de maven_jars.
Je l'ai déjà mis en place des règles comme celui-ci:
En MyPackage/BUILD:
java_library(
name = "MyPackage",
srcs = glob(["src/main/java/**/*.java"]),
deps = ["//MyPackage/artifacts:compile_jars"],
)
et MyPackage/objets/BUILD:
java_library(
name = "compile_jars",
visibility = ["//MyPackage:__pkg__"],
exports = ["libdeps_A", "libdeps_B"]
)
java_library(
name = "libdeps_A",
exports = ["@org.someone.A//jar"],
)
java_library(
name = "libdeps_B",
exports = ["@org.secondparty.B//jar", ":libdeps_C"],
)
java_library(
name = "libdeps_C",
exports = ["@org.thirdperson.C//jar"],
)
Cependant, le libMyPackage construit .jar (comme prévu) ne contient pas les fichiers de libdeps_ [ABC], il ne contient que les fichiers .class des objets de src/main/java de MyPackage.
J'ai une autre règle qui utilise avec succès: MyPackage pour le mettre dans lib/dir de mon tarball. Ma question est de savoir s'il existe un moyen d'adresser l'ensemble des fichiers (jars) qui viennent de parcourir la // règle MyPackage/artefacts: compile_jars pour que je puisse les placer dans l'archive tar.
Cela semble très similaire à ce que fait la cible de sortie implicite _deploy.jar de java_binary. Je ne pense pas que je puisse l'utiliser, cependant, parce que mon point d'entrée n'a pas de routine "principale". (Il utilise onStart de Google Play)
Je pourrais certainement écrire une certaine automatisation qui ferait une autre forme de // MyPackage/artefacts: compile_jars cible hors de l'information qui est dans MyPackage/artefacts/BUILD, mais je me demande si je ré-invente une roue?
Merci, Sean