2017-04-11 41 views
2

對於java_library,我可以設置生成規則javacopts屬性。似乎沒有成爲java_proto_libraryjava_lite_proto_library類似的事情。你怎麼能得到一個java_proto_library 1.7兼容輸出?

可以圍繞此設置-source-target選擇通過-javacopt標誌的javac到BAZEL,但我寧願它在構建文件編碼。

+0

你確定它不是反正_already_ 1.7兼容輸出? –

+0

啊我應該提到。將jar放入Android項目導致dx抱怨類文件版本。這在使用通過'--javacopt'標誌設置的選項構建時沒有發生。 – kamalmarhubi

+0

@LouisWasserman的Java PROTOS採取額外javacopt從java_toolchain的無證compatible_javacopts,這是不是在巴澤爾的//工具/ JDK填充:工具鏈。所以,我認爲彙編不會是1.7兼容的。我們應該修改工具鏈嗎? – user1071136

回答

2

你可以添加一個JDK7工具鏈,然後建立與它的一切。例如,添加this到構建文件:

java_toolchain(
    name = "jdk7", 
    bootclasspath = ["@bazel_tools//tools/jdk:bootclasspath"], 
    encoding = "UTF-8", 
    extclasspath = ["@bazel_tools//tools/jdk:extdir"], 
    genclass = ["@bazel_tools//tools/jdk:GenClass_deploy.jar"], 
    header_compiler = ["@bazel_tools//tools/jdk:turbine_deploy.jar"], 
    ijar = ["@bazel_tools//tools/jdk:ijar"], 
    javabuilder = ["@bazel_tools//tools/jdk:JavaBuilder_deploy.jar"], 
    javac = ["@bazel_tools//third_party/java/jdk/langtools:javac_jar"], 
    javac_supports_workers = 1, 
    jvm_opts = [ 
     "-XX:+TieredCompilation", 
     "-XX:TieredStopAtLevel=1", 
    ], 
    singlejar = ["@bazel_tools//tools/jdk:SingleJar_deploy.jar"], 
    source_version = "7", 
    target_version = "7", 
    visibility = ["//visibility:public"], 
) 

然後用建:

bazel build --java_toolchain=//whatever:jdk7 //your:target 
+0

感謝@kristina! – kamalmarhubi