Kurallar
- java_binary
 - java_import
 - java_library
 - java_test
 - java_package_configuration
 - java_plugin
 - java_runtime
 - java_toolchain
 
java_binary
Kural kaynağını görüntülemejava_binary(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, neverlink, output_licenses, plugins, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
  Java arşivi ("jar dosyası") ve kuralın adıyla aynı olan bir sarmalayıcı kabuk komut dosyası oluşturur.
  Sarmalayıcı kabuk komut dosyası, diğer şeylerin yanı sıra ikilinin bağlı olduğu her kitaplık için bir JAR dosyası içeren bir sınıf yolu kullanır. Sarmalayıcı kabuk komut dosyası çalıştırılırken, Bazel'in --java_runtime_version işaretiyle belirtilen sürüm yerine boş olmayan JAVABIN ortam değişkenleri kullanılır.
  Sarmalayıcı komut dosyası, birkaç benzersiz işaret kabul eder. Sarmalayıcı tarafından kabul edilen yapılandırılabilir işaretlerin ve ortam değişkenlerinin listesi için java_stub_template.txt bölümüne bakın.
Örtülü çıkış hedefleri
name.jar: İkili programın doğrudan bağımlılıklarına karşılık gelen sınıf dosyalarını ve diğer kaynakları içeren bir Java arşivi.name-src.jar: Kaynakları ("source jar") içeren bir arşiv.name_deploy.jar: Dağıtıma uygun bir Java arşivi (yalnızca açıkça istenirse oluşturulur).Kuralınız için
<name>_deploy.jarhedefi oluşturmak,java -jarkomutuyla veya sarmalama komut dosyasının--singlejarseçeneğiyle çalıştırılmasına olanak tanıyan bir manifest içeren bağımsız bir JAR dosyası oluşturur. Sarmalayıcı komut dosyasını kullanmak,java -jar'ya tercih edilir. Çünkü bu komut dosyası, JVM işaretlerini ve yerel kitaplıkları yükleme seçeneklerini de iletir.Dağıtım JAR'ı, sınıf yolunu ikilinin sarmalayıcı komut dosyasından baştan sona arayan bir sınıf yükleyici tarafından bulunabilecek tüm sınıfları içerir. Ayrıca, bağımlılıklar için gereken yerel kitaplıkları da içerir. Bunlar, çalışma zamanında JVM'ye otomatik olarak yüklenir.
Hedefiniz bir başlatıcı özelliği belirtiyorsa _deploy.jar, normal bir JAR dosyası yerine yerel bir ikili dosya olur. Bu, başlatıcıyı ve kuralınızın yerel (C++) bağımlılıklarını içerir. Tüm bağımlılıklar statik bir ikiliye bağlanır. Gerçek jar dosyasının baytları, bu yerel ikili programa eklenerek hem yürütülebilir hem de Java kodunu içeren tek bir ikili blob oluşturulur. Elde edilen jar dosyasını, yerel ikili dosyaları çalıştırdığınız gibi doğrudan çalıştırabilirsiniz.
name_deploy-src.jar: Hedefin geçişli kapanışından toplanan kaynakları içeren bir arşiv. Bu sınıflar, kavanozların eşleşen kaynak kavanozu olmadığı durumlar hariç,deploy.jariçindeki sınıflarla eşleşir.
Uygulamanın ana giriş noktası olan kaynak dosyanın adını (uzantısı hariç) kullanmanız önerilir. Örneğin, giriş noktanızın adı Main.java ise adınız Main olabilir.
  deps özelliği, srcs içermeyen bir java_binary kuralında kullanılamaz. Bu tür bir kural için runtime_deps tarafından sağlanan bir main_class gerekir.
Aşağıdaki kod snippet'inde yaygın bir hata gösterilmektedir:
java_binary(
    name = "DontDoThis",
    srcs = [
        ...,
        "GeneratedJavaFile.java",  # a generated .java file
    ],
    deps = [":generating_rule",],  # rule that generates that file
)
Bunun yerine şunları yapın:
java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
name | 
        
           Ad; zorunlu Bu hedef için benzersiz bir ad.  | 
      
          deps
         | 
        
                     Etiket listesi; varsayılan değer  deps ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.
         | 
      
          srcs
         | 
        
                     Etiket listesi; varsayılan değer  
 
 
Kurallar: Kural (genellikle  
Bu bağımsız değişken,   | 
      
          data
         | 
        
                     Etiket listesi; varsayılan değer  data
ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.
         | 
      
          resources
         | 
        
                     Etiket listesi; varsayılan değer  Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir. 
Kaynaklar belirtilmişse derleme tarafından oluşturulan normal   | 
      
          add_exports
         | 
        
                     Dize listesi; varsayılan değer  module veya package'ye erişmesine izin verin.
Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.  | 
      
          add_opens
         | 
        
                     Dize listesi; varsayılan değer  module veya package öğesine yansıtıcı olarak erişmesine izin verin.
Bu, javac ve JVM --add-opens= işaretlerine karşılık gelir.  | 
      
          bootclasspath
         | 
        
                     Etiket; varsayılan değer   | 
      
          classpath_resources
         | 
        
                     Etiket listesi; varsayılan değer  
Java ağacının kök dizininde bulunması gereken kaynakların listesi. Bu özelliğin tek amacı, kaynaklarının tam olarak   | 
      
          create_executable
         | 
        
                     Boole değeri; varsayılan değer  java_single_jar politikasını kullanın.
         | 
      
          deploy_env
         | 
        
                     Etiket listesi; varsayılan değer  java_binary hedeflerinin listesi.
Başka bir java_binary tarafından yüklenecek bir eklenti oluştururken bu özelliği ayarlayın.Bu özelliği ayarlamak, bu ikili dosyanın çalışma zamanı sınıf yolundaki (ve dağıtım JAR'ındaki) tüm bağımlılıkları, bu ikili dosya ile deploy_env içinde belirtilen hedefler arasında paylaşılanları hariç tutar.
         | 
      
          deploy_manifest_lines
         | 
        
                     Dize listesi; varsayılan değer  META-INF/manifest.mf hedefi için oluşturulan *_deploy.jar dosyasına eklenecek satırların listesi. Bu özelliğin içeriği, "Değişken yap" yerine koyma işlemine tabi değildir.
         | 
      
          javacopts
         | 
        
                     Dize listesi; varsayılan değer  Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir.  | 
      
          jvm_flags
         | 
        
                     Dize listesi; varsayılan değer  Bir Java ikilisi için sarmalayıcı komut dosyası, CLASSPATH tanımı (tüm bağımlı JAR'ları bulmak için) içerir ve doğru Java yorumlayıcısını çağırır.
Sarmalayıcı komut dosyası tarafından oluşturulan komut satırı, ana sınıfın adını ve ardından  Bu özelliğin   | 
      
          launcher
         | 
        
                     Etiket; varsayılan değer  bin/java programı yerine Java programınızı çalıştırmak için kullanılacak bir ikili dosya belirtin.
Hedef bir cc_binary olmalıdır. 
Java Invocation API'yi uygulayan tüm cc_binary bu özelliğin değeri olarak belirtilebilir.
Bazel, varsayılan olarak normal JDK başlatıcıyı (bin/java veya java.exe) kullanır. İlgili  Yerel (C++, SWIG, JNI) bağımlılıklarınızın, JDK başlatıcıyı mı yoksa başka bir başlatıcıyı mı kullandığınıza bağlı olarak farklı şekilde oluşturulacağını unutmayın: 
 Varsayılan JDK başlatıcısı dışında bir başlatıcı kullanıldığında   | 
      
          main_class
         | 
        
                     Dize; varsayılan değer  main() yönteminin bulunduğu sınıfın adı.
Bir kural bu seçeneği kullanıyorsa srcs=[...] listesine ihtiyacı yoktur.
Bu nedenle, bu özellik sayesinde, bir veya daha fazla main() yöntemi içeren bir Java kitaplığından yürütülebilir bir dosya oluşturulabilir.
Bu özelliğin değeri, kaynak dosya değil sınıf adıdır. Sınıf, çalışma zamanında kullanılabilir olmalıdır: Bu kural tarafından (  | 
      
          neverlink
         | 
        
                     Boole değeri; varsayılan değer   | 
      
          plugins
         | 
        
                     Etiket listesi; varsayılan değer  java_plugin, bu kural her oluşturulduğunda çalıştırılır. Kitaplıklar, exported_plugins kullanan bağımlılıklardan da eklentileri devralabilir. Eklenti tarafından oluşturulan kaynaklar, bu kuralın ortaya çıkan JAR'ına dahil edilir.
         | 
      
          resource_strip_prefix
         | 
        
                     Dize; varsayılan değer  
Belirtilirse bu yol öneki,   | 
      
          runtime_deps
         | 
        
                     Etiket listesi; varsayılan değer  deps gibi bunlar da çalışma zamanı sınıf yolunda görünür ancak bunlardan farklı olarak derleme zamanı sınıf yolunda görünmez. Yalnızca çalışma zamanında gereken bağımlılıklar burada listelenmelidir. Bağımlılık analizi araçları, hem runtime_deps hem de deps içinde görünen hedefleri yoksaymalıdır.
         | 
      
          stamp
         | 
        
                     Tam sayı; varsayılan değer  
 Damgalı ikili dosyalar, bağımlılıkları değişmediği sürece yeniden oluşturulmaz.  | 
      
          use_launcher
         | 
        
                     Boole değeri; varsayılan değer  Bu özellik yanlış olarak ayarlanırsa bu hedef için launcher özelliği ve ilgili   | 
      
          use_testrunner
         | 
        
                     Boole değeri; varsayılan değer  com.google.testing.junit.runner.BazelTestRunner) sınıfını Java programı için ana giriş noktası olarak kullanın ve test sınıfını bazel.test_suite sistem özelliğinin değeri olarak test çalıştırıcıya sağlayın.
Bu özelliği, varsayılan davranışı ( java_test kuralları için test çalıştırıcıyı kullanmak, java_binary kuralları için kullanmamak) geçersiz kılmak için kullanabilirsiniz.  Bu işlemi yapmanız pek olası değildir.  Bir kullanım alanı, AllTest
başka bir kural tarafından çağrılan kurallar içindir (örneğin, testleri çalıştırmadan önce bir veritabanı oluşturmak için).  AllTest
kuralı java_binary olarak bildirilmelidir ancak yine de ana giriş noktası olarak test çalıştırıcıyı kullanmalıdır.
Test çalıştırıcı sınıfının adı, main_class özelliğiyle geçersiz kılınabilir.
         | 
      
java_import
Kural kaynağını görüntülemejava_import(name, deps, data, add_exports, add_opens, compatible_with, constraints, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, toolchains, visibility)
  Bu kural, önceden derlenmiş .jar dosyalarının java_library ve java_binary kuralları için kitaplık olarak kullanılmasına izin verir.
Örnekler
    java_import(
        name = "maven_model",
        jars = [
            "maven_model/maven-aether-provider-3.2.3.jar",
            "maven_model/maven-model-3.2.3.jar",
            "maven_model/maven-model-builder-3.2.3.jar",
        ],
    )
Bağımsız değişkenler
| Özellikler | |
|---|---|
name | 
        
           Ad; zorunlu Bu hedef için benzersiz bir ad.  | 
      
          deps
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          data
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          add_exports
         | 
        
                     Dize listesi; varsayılan değer  module veya package'ye erişmesine izin verin.
Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.  | 
      
          add_opens
         | 
        
                     Dize listesi; varsayılan değer  module veya package öğesine yansıtıcı olarak erişmesine izin verin.
Bu, javac ve JVM --add-opens= işaretlerine karşılık gelir.  | 
      
          constraints
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          exports
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          jars
         | 
        
                     Etiketlerin listesi; zorunlu Bu hedefe bağlı Java hedeflerine sağlanan JAR dosyalarının listesi. | 
      
          neverlink
         | 
        
                     Boole değeri; varsayılan değer  tools.jar verilebilir.
         | 
      
          proguard_specs
         | 
        
                     Etiket listesi; varsayılan değer  android_binary hedefine eklenirler.
Burada yer alan dosyalar yalnızca idempotent kurallar içermelidir. Bu kurallar -dontnote, -dontwarn, assumenosideeffects ve -keep ile başlayan kurallardır. Diğer seçenekler, çelişkili olmayan birleştirme işlemleri sağlamak için yalnızca android_binary'nın proguard_specs dosyasında görünebilir.
         | 
      
          runtime_deps
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          srcjar
         | 
        
                     Etiket; varsayılan değer   | 
      
java_library
Kural kaynağını görüntülemejava_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)
Bu kural, kaynakları derleyip .jar dosyasına bağlar.
Örtülü çıkışlar
libname.jar: Sınıf dosyalarını içeren bir Java arşivi.libname-src.jar: Kaynakları ("source jar") içeren bir arşiv.
Bağımsız değişkenler
| Özellikler | |
|---|---|
name | 
        
           Ad; zorunlu Bu hedef için benzersiz bir ad.  | 
      
          deps
         | 
        
                     Etiket listesi; varsayılan değer  deps ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.
   
  Buna karşılık,   | 
      
          srcs
         | 
        
                     Etiket listesi; varsayılan değer  
 
 
Kurallar: Kural (genellikle  
 Yukarıda açıklanan dosya türlerinden en az biri olduğu sürece diğer tüm dosyalar yoksayılır. Aksi takdirde hata oluşur. 
Bu bağımsız değişken,   | 
      
          data
         | 
        
                     Etiket listesi; varsayılan değer  data ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.
  Bazel,   | 
      
          resources
         | 
        
                     Etiket listesi; varsayılan değer  Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir. 
Kaynaklar belirtilmişse derleme tarafından oluşturulan normal   | 
      
          add_exports
         | 
        
                     Dize listesi; varsayılan değer  module veya package'ye erişmesine izin verin.
Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.  | 
      
          add_opens
         | 
        
                     Dize listesi; varsayılan değer  module veya package öğesine yansıtıcı olarak erişmesine izin verin.
Bu, javac ve JVM --add-opens= işaretlerine karşılık gelir.  | 
      
          bootclasspath
         | 
        
                     Etiket; varsayılan değer   | 
      
          exported_plugins
         | 
        
                     Etiket listesi; varsayılan değer  java_plugin listesi (ör. ek açıklama işlemcileri).
  Belirtilen   | 
      
          exports
         | 
        
                     Etiket listesi; varsayılan değer  
  Burada listelenen kurallar, üst kurallar tarafından açıkça kullanılıyormuş gibi üst kurallarda kullanılabilir. Bu durum, normal (dışa aktarılmamış)  
  Özet: Aralarında  
  A'nın B'ye, B'nin de C'ye bağlı olduğunu varsayalım. Bu durumda, C, A'nın geçişli bağımlılığıdır. Bu nedenle, C'nin kaynaklarını değiştirmek ve A'yı yeniden oluşturmak her şeyi doğru şekilde yeniden oluşturur. Ancak A, C'deki sınıfları kullanamaz. Buna izin vermek için A'nın  Dışa aktarılan kitaplıkların kapatılması, tüm doğrudan üst kurallar için kullanılabilir. Biraz farklı bir örnek ele alalım: A, B'ye bağlıdır, B, C ve D'ye bağlıdır ve C'yi dışa aktarır ancak D'yi dışa aktarmaz. Artık A, C'ye erişebilir ancak D'ye erişemez. Şimdi, C ve D bazı kitaplıkları (sırasıyla C' ve D') dışa aktardıysa A yalnızca C'ye erişebilir ancak D'ye erişemez. 
  Önemli: Dışa aktarılan bir kural normal bir bağımlılık değildir. Önceki örnekten devam edersek B, C'yi dışa aktarıyor ve C'yi de kullanmak istiyorsa C'yi kendi   | 
      
          javabuilder_jvm_flags
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          javacopts
         | 
        
                     Dize listesi; varsayılan değer  Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir.  | 
      
          neverlink
         | 
        
                     Boole değeri; varsayılan değer  tools.jar verilebilir.
   Çalışma zamanı kitaplığı derleme kitaplığından farklıysa yalnızca JLS'nin derleyicilerin satır içi yapmasını yasakladığı yerlerde farklı olduğundan emin olmanız gerekir (bu, JLS'nin gelecekteki tüm sürümleri için geçerli olmalıdır).  | 
      
          plugins
         | 
        
                     Etiket listesi; varsayılan değer  java_plugin, bu kural her oluşturulduğunda çalıştırılır. Kitaplıklar, exported_plugins kullanan bağımlılıklardan da eklentileri devralabilir. Eklenti tarafından oluşturulan kaynaklar, bu kuralın ortaya çıkan JAR'ına dahil edilir.
         | 
      
          proguard_specs
         | 
        
                     Etiket listesi; varsayılan değer  android_binary hedefine eklenirler.
Burada yer alan dosyalar yalnızca idempotent kurallar içermelidir. Bu kurallar -dontnote, -dontwarn, assumenosideeffects ve -keep ile başlayan kurallardır. Diğer seçenekler, çelişkili olmayan birleştirme işlemleri sağlamak için yalnızca android_binary'nın proguard_specs dosyasında görünebilir.
         | 
      
          resource_strip_prefix
         | 
        
                     Dize; varsayılan değer  
Belirtilirse bu yol öneki,   | 
      
          runtime_deps
         | 
        
                     Etiket listesi; varsayılan değer  deps gibi bunlar da çalışma zamanı sınıf yolunda görünür ancak bunlardan farklı olarak derleme zamanı sınıf yolunda görünmez. Yalnızca çalışma zamanında gereken bağımlılıklar burada listelenmelidir. Bağımlılık analizi araçları, hem runtime_deps hem de deps içinde görünen hedefleri yoksaymalıdır.
         | 
      
java_test
Kural kaynağını görüntülemejava_test(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, plugins, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)
java_test() kuralı, Java testini derler. Test, test kodunuzun etrafındaki ikili sarmalayıcıdır. Derlenen ana sınıf yerine test çalıştırıcının ana yöntemi çağrılır.
Örtülü çıkış hedefleri
name.jar: Java arşivi.name_deploy.jar: Dağıtıma uygun bir Java arşivi. (Yalnızca açıkça istenirse oluşturulur.) Daha fazla bilgi için java_binary'denname_deploy.jarçıkışının açıklamasına bakın.
java_binary() bağımsız değişkenleri ile ilgili bölüme bakın. Bu kural, tüm test kurallarında ortak olan tüm özellikleri (*_test) de destekler.
Örnekler
java_library(
    name = "tests",
    srcs = glob(["*.java"]),
    deps = [
        "//java/com/foo/base:testResources",
        "//java/com/foo/testing/util",
    ],
)
java_test(
    name = "AllTests",
    size = "small",
    runtime_deps = [
        ":tests",
        "//util/mysql",
    ],
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
name | 
        
           Ad; zorunlu Bu hedef için benzersiz bir ad.  | 
      
          deps
         | 
        
                     Etiket listesi; varsayılan değer  deps ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.
         | 
      
          srcs
         | 
        
                     Etiket listesi; varsayılan değer  
 
 
Kurallar: Kural (genellikle  
Bu bağımsız değişken,   | 
      
          data
         | 
        
                     Etiket listesi; varsayılan değer  data
ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.
         | 
      
          resources
         | 
        
                     Etiket listesi; varsayılan değer  Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir. 
Kaynaklar belirtilmişse derleme tarafından oluşturulan normal   | 
      
          add_exports
         | 
        
                     Dize listesi; varsayılan değer  module veya package'ye erişmesine izin verin.
Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.  | 
      
          add_opens
         | 
        
                     Dize listesi; varsayılan değer  module veya package öğesine yansıtıcı olarak erişmesine izin verin.
Bu, javac ve JVM --add-opens= işaretlerine karşılık gelir.  | 
      
          bootclasspath
         | 
        
                     Etiket; varsayılan değer   | 
      
          classpath_resources
         | 
        
                     Etiket listesi; varsayılan değer  
Java ağacının kök dizininde bulunması gereken kaynakların listesi. Bu özelliğin tek amacı, kaynaklarının tam olarak   | 
      
          create_executable
         | 
        
                     Boole değeri; varsayılan değer  java_single_jar politikasını kullanın.
         | 
      
          deploy_manifest_lines
         | 
        
                     Dize listesi; varsayılan değer  META-INF/manifest.mf hedefi için oluşturulan *_deploy.jar dosyasına eklenecek satırların listesi. Bu özelliğin içeriği, "Değişken yap" yerine koyma işlemine tabi değildir.
         | 
      
          javacopts
         | 
        
                     Dize listesi; varsayılan değer  Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir.  | 
      
          jvm_flags
         | 
        
                     Dize listesi; varsayılan değer  Bir Java ikilisi için sarmalayıcı komut dosyası, CLASSPATH tanımı (tüm bağımlı JAR'ları bulmak için) içerir ve doğru Java yorumlayıcısını çağırır.
Sarmalayıcı komut dosyası tarafından oluşturulan komut satırı, ana sınıfın adını ve ardından  Bu özelliğin   | 
      
          launcher
         | 
        
                     Etiket; varsayılan değer  bin/java programı yerine Java programınızı çalıştırmak için kullanılacak bir ikili dosya belirtin.
Hedef bir cc_binary olmalıdır. 
Java Invocation API'yi uygulayan tüm cc_binary bu özelliğin değeri olarak belirtilebilir.
Bazel, varsayılan olarak normal JDK başlatıcıyı (bin/java veya java.exe) kullanır. İlgili  Yerel (C++, SWIG, JNI) bağımlılıklarınızın, JDK başlatıcıyı mı yoksa başka bir başlatıcıyı mı kullandığınıza bağlı olarak farklı şekilde oluşturulacağını unutmayın: 
 Varsayılan JDK başlatıcısı dışında bir başlatıcı kullanıldığında   | 
      
          main_class
         | 
        
                     Dize; varsayılan değer  main() yönteminin bulunduğu sınıfın adı.
Bir kural bu seçeneği kullanıyorsa srcs=[...] listesine ihtiyacı yoktur.
Bu nedenle, bu özellik sayesinde, bir veya daha fazla main() yöntemi içeren bir Java kitaplığından yürütülebilir bir dosya oluşturulabilir.
Bu özelliğin değeri, kaynak dosya değil sınıf adıdır. Sınıf, çalışma zamanında kullanılabilir olmalıdır: Bu kural tarafından (  | 
      
          neverlink
         | 
        
                     Boole değeri; varsayılan değer   | 
      
          plugins
         | 
        
                     Etiket listesi; varsayılan değer  java_plugin, bu kural her oluşturulduğunda çalıştırılır. Kitaplıklar, exported_plugins kullanan bağımlılıklardan da eklentileri devralabilir. Eklenti tarafından oluşturulan kaynaklar, bu kuralın ortaya çıkan JAR'ına dahil edilir.
         | 
      
          resource_strip_prefix
         | 
        
                     Dize; varsayılan değer  
Belirtilirse bu yol öneki,   | 
      
          runtime_deps
         | 
        
                     Etiket listesi; varsayılan değer  deps gibi bunlar da çalışma zamanı sınıf yolunda görünür ancak bunlardan farklı olarak derleme zamanı sınıf yolunda görünmez. Yalnızca çalışma zamanında gereken bağımlılıklar burada listelenmelidir. Bağımlılık analizi araçları, hem runtime_deps hem de deps içinde görünen hedefleri yoksaymalıdır.
         | 
      
          stamp
         | 
        
                     Tam sayı; varsayılan değer  
 Damgalı ikili dosyalar, bağımlılıkları değişmediği sürece yeniden oluşturulmaz.  | 
      
          test_class
         | 
        
                     Dize; varsayılan değer  
  Varsayılan olarak, bu bağımsız değişken tanımlanmamışsa eski mod kullanılır ve bunun yerine test bağımsız değişkenleri kullanılır. İlk bağımsız değişkene geri dönmemek için  
  Bu özellik, bu test tarafından çalıştırılacak bir Java sınıfının adını belirtir. Bu ayarın yapılması nadiren gerekir. Bu bağımsız değişken atlanırsa hedefteki  
  JUnit3 için test sınıfının  
  Bu özellik, birkaç   | 
      
          use_launcher
         | 
        
                     Boole değeri; varsayılan değer  Bu özellik yanlış olarak ayarlanırsa bu hedef için launcher özelliği ve ilgili   | 
      
          use_testrunner
         | 
        
                     Boole değeri; varsayılan değer  com.google.testing.junit.runner.BazelTestRunner) sınıfını Java programı için ana giriş noktası olarak kullanın ve test sınıfını bazel.test_suite sistem özelliğinin değeri olarak test çalıştırıcıya sağlayın.
Bu özelliği, varsayılan davranışı ( java_test kuralları için test çalıştırıcıyı kullanmak, java_binary kuralları için kullanmamak) geçersiz kılmak için kullanabilirsiniz.  Bu işlemi yapmanız pek olası değildir.  Bir kullanım alanı, AllTest
başka bir kural tarafından çağrılan kurallar içindir (örneğin, testleri çalıştırmadan önce bir veritabanı oluşturmak için).  AllTest
kuralı java_binary olarak bildirilmelidir ancak yine de ana giriş noktası olarak test çalıştırıcıyı kullanmalıdır.
Test çalıştırıcı sınıfının adı, main_class özelliğiyle geçersiz kılınabilir.
         | 
      
java_package_configuration
Kural kaynağını görüntülemejava_package_configuration(name, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, javacopts, output_licenses, packages, restricted_to, system, tags, target_compatible_with, testonly, toolchains, visibility)
Bir paket grubuna uygulanacak yapılandırma.
Yapılandırmalar java_toolchain.javacopts'ye eklenebilir.
Örnek:
java_package_configuration(
    name = "my_configuration",
    packages = [":my_packages"],
    javacopts = ["-Werror"],
)
package_group(
    name = "my_packages",
    packages = [
        "//com/my/project/...",
        "-//com/my/project/testing/...",
    ],
)
java_toolchain(
    ...,
    package_configuration = [
        ":my_configuration",
    ]
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
name | 
        
           Ad; zorunlu Bu hedef için benzersiz bir ad.  | 
      
          data
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          javacopts
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          output_licenses
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          packages
         | 
        
                     Etiket listesi; varsayılan değer  package_group'ların kümesi.
         | 
      
          system
         | 
        
                     Etiket; varsayılan değer   | 
      
java_plugin
Kural kaynağını görüntülemejava_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
  java_plugin, Bazel tarafından çalıştırılan Java derleyicisi için eklentileri tanımlar. Yalnızca ek açıklama işleyicileri desteklenir. Bir java_library veya java_binary kuralı, plugins özelliği aracılığıyla bunlara bağlı olarak eklentileri çalıştırabilir. Bir java_library, exported_plugins kullanarak doğrudan kendisine bağlı olan kitaplıklara eklentileri otomatik olarak da aktarabilir.
Örtülü çıkış hedefleri
libname.jar: Java arşivi.
Bağımsız değişkenler, processor_class ve generates_api bağımsız değişkenlerinin eklenmesi dışında java_library()'ninkilerin bir alt kümesidir (ve aynı anlamsal yapıya sahiptir).
Bağımsız değişkenler
| Özellikler | |
|---|---|
name | 
        
           Ad; zorunlu Bu hedef için benzersiz bir ad.  | 
      
          deps
         | 
        
                     Etiket listesi; varsayılan değer  deps ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.
   
  Buna karşılık,   | 
      
          srcs
         | 
        
                     Etiket listesi; varsayılan değer  
 
 
Kurallar: Kural (genellikle  
 Yukarıda açıklanan dosya türlerinden en az biri olduğu sürece diğer tüm dosyalar yoksayılır. Aksi takdirde hata oluşur. 
Bu bağımsız değişken,   | 
      
          data
         | 
        
                     Etiket listesi; varsayılan değer  data ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.
  Bazel,   | 
      
          resources
         | 
        
                     Etiket listesi; varsayılan değer  Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir. 
Kaynaklar belirtilmişse derleme tarafından oluşturulan normal   | 
      
          add_exports
         | 
        
                     Dize listesi; varsayılan değer  module veya package'ye erişmesine izin verin.
Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.  | 
      
          add_opens
         | 
        
                     Dize listesi; varsayılan değer  module veya package öğesine yansıtıcı olarak erişmesine izin verin.
Bu, javac ve JVM --add-opens= işaretlerine karşılık gelir.  | 
      
          bootclasspath
         | 
        
                     Etiket; varsayılan değer   | 
      
          generates_api
         | 
        
                     Boole değeri; varsayılan değer  Bir kural, API oluşturan bir ek açıklama işlemcisini kullanıyorsa buna bağlı diğer kurallar, derleme işlemleri oluşturma kuralından sonra planlanırsa yalnızca oluşturulan kodu referans alabilir. Bu özellik, --java_header_compilation etkinleştirildiğinde Bazel'e planlama kısıtlamaları getirmesini bildirir. UYARI: Bu özellik, derleme performansını etkiler. Yalnızca gerekirse kullanın.  | 
      
          javabuilder_jvm_flags
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          javacopts
         | 
        
                     Dize listesi; varsayılan değer  Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir.  | 
      
          neverlink
         | 
        
                     Boole değeri; varsayılan değer  tools.jar verilebilir.
   Çalışma zamanı kitaplığı derleme kitaplığından farklıysa yalnızca JLS'nin derleyicilerin satır içi yapmasını yasakladığı yerlerde farklı olduğundan emin olmanız gerekir (bu, JLS'nin gelecekteki tüm sürümleri için geçerli olmalıdır).  | 
      
          output_licenses
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          plugins
         | 
        
                     Etiket listesi; varsayılan değer  java_plugin, bu kural her oluşturulduğunda çalıştırılır. Kitaplıklar, exported_plugins kullanan bağımlılıklardan da eklentileri devralabilir. Eklenti tarafından oluşturulan kaynaklar, bu kuralın ortaya çıkan JAR'ına dahil edilir.
         | 
      
          processor_class
         | 
        
                     Dize; varsayılan değer   | 
      
          proguard_specs
         | 
        
                     Etiket listesi; varsayılan değer  android_binary hedefine eklenirler.
Burada yer alan dosyalar yalnızca idempotent kurallar içermelidir. Bu kurallar -dontnote, -dontwarn, assumenosideeffects ve -keep ile başlayan kurallardır. Diğer seçenekler, çelişkili olmayan birleştirme işlemleri sağlamak için yalnızca android_binary'nın proguard_specs dosyasında görünebilir.
         | 
      
          resource_strip_prefix
         | 
        
                     Dize; varsayılan değer  
Belirtilirse bu yol öneki,   | 
      
java_runtime
Kural kaynağını görüntülemejava_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, exec_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)
Java çalışma zamanı için yapılandırmayı belirtir.
Örnek:
java_runtime(
    name = "jdk-9-ea+153",
    srcs = glob(["jdk9-ea+153/**"]),
    java_home = "jdk9-ea+153",
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
name | 
        
           Ad; zorunlu Bu hedef için benzersiz bir ad.  | 
      
          srcs
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          default_cds
         | 
        
                     Etiket; varsayılan değer  java_runtime için varsayılan CDS arşivi. Bir java_binary hedefi için hermetik etkinleştirildiğinde java_runtime varsayılan CDS, hermetik dağıtım JAR'ına paketlenir.
         | 
      
          hermetic_srcs
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          hermetic_static_libs
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          java
         | 
        
                     Etiket; varsayılan değer   | 
      
          java_home
         | 
        
                     Dize; varsayılan değer  srcs ve java özellikleri boş olmalıdır.
         | 
      
          lib_ct_sym
         | 
        
                     Etiket; varsayılan değer  --release ile derleme için gereken lib/ct.sym dosyası. Belirtilmezse ve srcs içinde yolu /lib/ct.sym ile biten tam olarak bir dosya varsa bu dosya kullanılır.
         | 
      
          lib_modules
         | 
        
                     Etiket; varsayılan değer   | 
      
          output_licenses
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          version
         | 
        
                     Tam sayı; varsayılan değer  Runtime.version().feature() tarafından döndürülen tam sayı.
         | 
      
java_toolchain
Kural kaynağını görüntülemejava_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_javacopts, compatible_with, deprecation, deps_checker, distribs, exec_compatible_with, exec_properties, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_builtin_processors, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_cancellation, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jspecify_implicit_deps, jspecify_javacopts, jspecify_packages, jspecify_processor, jspecify_processor_class, jspecify_stubs, jvm_opts, licenses, misc, oneversion, oneversion_allowlist, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, proguard_allowlister, reduced_classpath_incompatible_processors, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, toolchains, tools, turbine_data, turbine_jvm_opts, visibility, xlint)
Java derleyicisi için yapılandırmayı belirtir. Kullanılacak araç zinciri, --java_toolchain bağımsız değişkeni aracılığıyla değiştirilebilir. Java derleyicinizi ayarlamak istemediğiniz sürece normalde bu tür kurallar yazmamalısınız.
Örnekler
Basit bir örnek:
java_toolchain(
    name = "toolchain",
    source_version = "7",
    target_version = "7",
    bootclasspath = ["//tools/jdk:bootclasspath"],
    xlint = [ "classfile", "divzero", "empty", "options", "path" ],
    javacopts = [ "-g" ],
    javabuilder = ":JavaBuilder_deploy.jar",
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
name | 
        
           Ad; zorunlu Bu hedef için benzersiz bir ad.  | 
      
          android_lint_data
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          android_lint_jvm_opts
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          android_lint_opts
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          android_lint_package_configuration
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          android_lint_runner
         | 
        
                     Etiket; varsayılan değer   | 
      
          bootclasspath
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          compatible_javacopts
         | 
        
                     null; varsayılan değer   | 
      
          deps_checker
         | 
        
                     Etiket; varsayılan değer   | 
      
          forcibly_disable_header_compilation
         | 
        
                     Boole değeri; varsayılan değer   | 
      
          genclass
         | 
        
                     Etiket; varsayılan değer   | 
      
          header_compiler
         | 
        
                     Etiket; varsayılan değer   | 
      
          header_compiler_builtin_processors
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          header_compiler_direct
         | 
        
                     Etiket; varsayılan değer  Bu araç, ek açıklama işlemeyi desteklemez.  | 
      
          ijar
         | 
        
                     Etiket; varsayılan değer   | 
      
          jacocorunner
         | 
        
                     Etiket; varsayılan değer   | 
      
          java_runtime
         | 
        
                     Etiket; varsayılan değer   | 
      
          javabuilder
         | 
        
                     Etiket; varsayılan değer   | 
      
          javabuilder_data
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          javabuilder_jvm_opts
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          javac_supports_multiplex_workers
         | 
        
                     Boole değeri; varsayılan değer   | 
      
          javac_supports_worker_cancellation
         | 
        
                     Boole değeri; varsayılan değer   | 
      
          javac_supports_worker_multiplex_sandboxing
         | 
        
                     Boole değeri; varsayılan değer   | 
      
          javac_supports_workers
         | 
        
                     Boole değeri; varsayılan değer   | 
      
          javacopts
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          jspecify_implicit_deps
         | 
        
                     Etiket; varsayılan değer   | 
      
          jspecify_javacopts
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          jspecify_packages
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          jspecify_processor
         | 
        
                     Etiket; varsayılan değer   | 
      
          jspecify_processor_class
         | 
        
                     Dize; varsayılan değer   | 
      
          jspecify_stubs
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          jvm_opts
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          misc
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          oneversion
         | 
        
                     Etiket; varsayılan değer   | 
      
          oneversion_allowlist
         | 
        
                     Etiket; varsayılan değer   | 
      
          oneversion_allowlist_for_tests
         | 
        
                     Etiket; varsayılan değer   | 
      
          oneversion_whitelist
         | 
        
                     Etiket; varsayılan değer   | 
      
          package_configuration
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          proguard_allowlister
         | 
        
                     Etiket; varsayılan değer   | 
      
          reduced_classpath_incompatible_processors
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          singlejar
         | 
        
                     Etiket; varsayılan değer   | 
      
          source_version
         | 
        
                     Dize; varsayılan değer   | 
      
          target_version
         | 
        
                     Dize; varsayılan değer   | 
      
          timezone_data
         | 
        
                     Etiket; varsayılan değer   | 
      
          tools
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          turbine_data
         | 
        
                     Etiket listesi; varsayılan değer   | 
      
          turbine_jvm_opts
         | 
        
                     Dize listesi; varsayılan değer   | 
      
          xlint
         | 
        
                     Dize listesi; varsayılan değer   |