2017-04-11 1 views
2

java_libraryの場合、ビルドルールにjavacopts属性を設定できます。 java_proto_libraryまたはjava_lite_proto_libraryには類似したものはありません。java_proto_libraryの1.7互換出力を取得するにはどうすればよいですか?

私ははbazelする-javacoptフラグ経由javacに-source-targetオプションを設定することで、この周りが作業することができますが、私はむしろそれがBUILDファイルにエンコードされなければならないと思います。

+0

あなたはそれがとにかく1.7互換の出力を_already_ないですか? –

+0

ああ私は言及すべきだった。 jarをAndroidプロジェクトにドロップすると、dxがクラスファイルのバージョンについて不平を言った。これは '--javacopt'フラグで設定されたオプションでビルドするときには発生しませんでした。 – kamalmarhubi

+0

@LouisWasserman Java protosは、java_toolchainの文書化されていないcompatible_javacoptsからjavacoptを追加します。これは、Bazelの// tools/jdk:toolchainには埋め込まれていません。だから、コンパイルは1.7互換ではないと思う。ツールチェーンを変更する必要がありますか? – user1071136

答えて

2

JDK7ツールチェーンを追加して、すべてをビルドすることができます。その後、

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"], 
) 

としてビルドする:例えば、ビルドファイルにthisを追加

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

ありがとう@kristina! – kamalmarhubi

関連する問題