[英]Can I make bazel java_binary rule replace default jar with with _deploy.jar
[英]bazel run *_deploy.jar fails with “cannot execute binary file”
給定以下BUILD
文件
java_library(
name='target_lib',
srcs=['target.java',],
)
java_binary(
name='target',
runtime_deps=[':target_lib',],
main_class='com.example.target',
)
我可以執行bazel run //path:target
上java_binary
,它成功地執行我的應用程序; 但是,當嘗試執行bazel run //path:target_deploy.jar
它失敗並顯示“無法執行二進制文件”
我正在MacOS上嘗試這樣做(如果那很重要)
另外,如果我手動嘗試執行java -jar bazel-bin/path/target_deploy.jar
我會發現清單未指定main_class
。 不確定是否相關。
Bazel版本信息:
$ bazel version
Build label: 0.26.1-homebrew
Build target: bazel-out/darwin-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Thu Jun 6 18:36:29 2019 (1559846189)
Build timestamp: 1559846189
Build timestamp as int: 1559846189
這按預期工作。 bazel run
實際上並不執行部署jar,而是一個存根腳本,該腳本為目標的依賴關系圖確定的jar設置運行時環境。 如果您將文件標簽(例如//x/y:deploy.jar
)傳遞給bazel run
,則Bazel將嘗試將其作為獨立的二進制文件執行,而無需java -jar
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.