Java Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Kurallar

java_binary

Kural kaynağını görüntüleme
java_binary(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, neverlink, output_licenses, package_metadata, 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ğerlerinin 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 herhangi bir JAVABIN ortam değişkeni 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.jar hedefi oluşturmak, java -jar komutuyla veya sarmalama komut dosyasının --singlejar seç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. Oluşan jar dosyasını, yerel bir ikili dosyayı çalıştırır 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.jar iç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 []'dir.

Hedefe bağlanacak diğer kitaplıkların listesi. 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 []'dir.

Hedefi oluşturmak için işlenen kaynak dosyaların listesi. Bu özellik neredeyse her zaman gereklidir. Aşağıdaki istisnaları inceleyin.

.java türündeki kaynak dosyalar derlenir. Oluşturulan .java dosyalar söz konusu olduğunda, dosyanın adını değil, oluşturma kuralının adını buraya girmeniz genellikle önerilir. Bu, okunabilirliği artırmakla kalmaz, kuralı gelecekteki değişikliklere karşı daha dirençli hale getirir: Üretim kuralı gelecekte farklı dosyalar oluşturursa yalnızca bir yeri düzeltmeniz gerekir: üretim kuralının outs kısmı. Üretim kuralı, işlem yapmadığı için deps içinde listelenmemelidir.

.srcjar türündeki kaynak dosyalar açılır ve derlenir. (Bu, genrule ile bir dizi .java dosyası oluşturmanız gerektiğinde kullanışlıdır.)

Kurallar: Kural (genellikle genrule veya filegroup) yukarıda listelenen dosyalardan herhangi birini oluşturursa bu dosyalar, kaynak dosyalar için açıklanan şekilde kullanılır.

Bu bağımsız değişken, çalışma zamanı sınıf yolundaki bir sınıfı main_class özelliği belirtmediği veya runtime_deps bağımsız değişkenini belirtmediğiniz sürece neredeyse her zaman gereklidir.

data

Etiket listesi; varsayılan değer []'dir.

Bu kitaplığın çalışma zamanında ihtiyaç duyduğu dosyaların listesi. 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 []'dir.

Bir Java jar'ına dahil edilecek veri dosyalarının listesi.

Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir.

Kaynaklar belirtilmişse derleme tarafından oluşturulan normal .class dosyalarıyla birlikte JAR'a paketlenir. Jar dosyasındaki kaynakların konumu proje yapısı tarafından belirlenir. Bazel önce Maven'in standart dizin düzenini ("src" dizinini, ardından "resources" dizini torunu) arar. Bu bulunamazsa Bazel, "java" veya "javatests" adlı en üstteki dizini arar (örneğin, bir kaynak <workspace root>/x/java/y/java/z konumundaysa kaynağın yolu y/java/z olur). Bu sezgisel yöntem geçersiz kılınamaz ancak resource_strip_prefix özelliği, kaynak dosyaları için belirli bir alternatif dizini belirtmek üzere kullanılabilir.

add_exports

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen module veya package öğesine erişmesine izin verin.

Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.

add_opens

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen 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 None'dir.

Kısıtlanmış API, kullanmayın.
classpath_resources

Etiket listesi; varsayılan değer []'dir.

BAŞKA YOL YOKSA BU SEÇENEĞİ KULLANMAYIN)

Java ağacının kök dizininde bulunması gereken kaynakların listesi. Bu özelliğin tek amacı, kaynaklarının tam olarak "myconfig.xml" olarak sınıf yolunda bulunmasını gerektiren üçüncü taraf kitaplıklarını desteklemektir. Ad alanı çakışması tehlikesi nedeniyle yalnızca ikili dosyalara izin verilir, kitaplıklara izin verilmez.

create_executable

Boole değeri; varsayılan değer True'dır.

Bu politikanın desteği sonlandırıldı. Lütfen bunun yerine java_single_jar politikasını kullanın.
deploy_env

Etiket listesi; varsayılan değer []'dir.

Bu ikilinin dağıtım ortamını temsil eden diğ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

Dizelerin listesi; varsayılan değer []'dır.

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

Dizelerin listesi; varsayılan değer []'dır.

Bu ikili için ek derleyici seçenekleri. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir.

Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir.

jvm_flags

Dizelerin listesi; varsayılan değer []'dır.

Bu ikiliyi çalıştırmak için oluşturulan sarmalayıcı komut dosyasına yerleştirilecek işaretlerin listesi. $(location) ve "Make variable" yerine koyma ve Bourne shell belirteçleştirme işlemine tabidir.

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 "$@" karakterini içerir. Böylece, sınıf adından sonra diğer bağımsız değişkenleri iletebilirsiniz. Ancak JVM tarafından ayrıştırılması amaçlanan bağımsız değişkenler, komut satırındaki sınıf adından önce belirtilmelidir. jvm_flags içeriği, sınıf adı listelenmeden önce sarmalayıcı komut dosyasına eklenir.

Bu özelliğin *_deploy.jarçıktılar*_deploy.jar üzerinde hiçbir etkisi olmadığını unutmayın.

launcher

Etiket; varsayılan değer None'dir.

JDK ile birlikte gelen normal 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 --java_launcher Bazel işareti yalnızca launcher özelliği belirtilmemiş olan java_binary ve java_test hedeflerini etkiler.

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:

  • Normal JDK başlatıcıyı (varsayılan) kullanıyorsanız yerel bağımlılıklar, {name}_nativedeps.so adlı paylaşılan bir kitaplık olarak oluşturulur. Burada {name}, bu java_binary kuralının name özelliğidir. Kullanılmayan kod, bu yapılandırmada bağlayıcı tarafından kaldırılmaz.
  • Başka bir başlatıcı kullanıyorsanız yerel (C++) bağımlılıklar, {name}_nativedeps adlı bir ikiliye statik olarak bağlanır. Burada {name}, bu java_binary kuralının name özelliğidir. Bu durumda bağlayıcı, sonuçtaki ikiliden kullanılmadığını düşündüğü tüm kodları kaldırır. Bu nedenle, yalnızca JNI üzerinden erişilen C++ kodu, cc_library hedefi alwayslink = True belirtmediği sürece bağlanmayabilir.

Varsayılan JDK başlatıcısı dışında bir başlatıcı kullanıldığında *_deploy.jar çıktısının biçimi değişir. Ayrıntılar için ana java_binary belgelerine bakın.

main_class

Dize; varsayılan değer ""

Giriş noktası olarak kullanılacak 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 (srcs'dan) derlenebilir veya doğrudan ya da geçişli bağımlılıklar (runtime_deps veya deps aracılığıyla) tarafından sağlanabilir. Sınıf kullanılamıyorsa ikili dosya çalışma zamanında başarısız olur. Derleme zamanı kontrolü yoktur.

Boole değeri; varsayılan değer False'dır.

plugins

Etiket listesi; varsayılan değer []'dir.

Derleme sırasında çalıştırılacak Java derleyici eklentileri. Bu özellik içinde belirtilen her 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 ""

Java kaynaklarından çıkarılacak yol ön eki.

Belirtilirse bu yol öneki, resources özelliğindeki her dosyadan kaldırılır. Kaynak dosyanın bu dizinde olmaması hatadır. Belirtilmemişse (varsayılan), kaynak dosyanın yolu, kaynak dosyaların Java paketiyle aynı mantığa göre belirlenir. Örneğin, stuff/java/foo/bar/a.txt konumundaki bir kaynak dosya foo/bar/a.txt konumunda yer alır.

runtime_deps

Etiket listesi; varsayılan değer []'dir.

Yalnızca son ikili dosyada veya çalışma zamanında test için kullanılabilir hale getirilecek kitaplıklar. Normal 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 -1

Derleme bilgilerinin ikili dosyaya kodlanıp kodlanmayacağı. Olası değerler:
  • stamp = 1: Derleme bilgilerini, --nostamp derlemelerinde bile her zaman ikiliye damgalayın. Bu ayardan kaçınılmalıdır. Bu ayar, ikili dosya ve buna bağlı tüm aşağı akış işlemleri için uzaktan önbelleğe almayı devre dışı bırakabilir.
  • stamp = 0: Derleme bilgilerini her zaman sabit değerlerle değiştirin. Bu, iyi bir derleme sonucu önbelleğe alma sağlar.
  • stamp = -1: Derleme bilgilerinin yerleştirilmesi, --[no]stamp işaretiyle kontrol edilir.

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 True'dır.

İkilinin özel başlatıcı kullanıp kullanmayacağı.

Bu özellik yanlış olarak ayarlanırsa bu hedef için launcher özelliği ve ilgili --java_launcher işareti yoksayılır.

use_testrunner

Boole değeri; varsayılan değer False'dır.

Test çalıştırıcı (varsayılan olarak 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üleme
java_import(name, deps, data, add_exports, add_opens, compatible_with, constraints, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, package_metadata, 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 []'dir.

Hedefe bağlanacak diğer kitaplıkların listesi. java_library.deps konusuna bakın.
data

Etiket listesi; varsayılan değer []'dir.

Bu kuralın çalışma zamanında ihtiyaç duyduğu dosyaların listesi.
add_exports

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen module veya package öğesine erişmesine izin verin.

Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.

add_opens

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen 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

Dizelerin listesi; varsayılan değer []'dır.

Bu kurala Java kitaplığı olarak uygulanan ek kısıtlamalar.
exports

Etiket listesi; varsayılan değer []'dir.

Bu kuralın kullanıcılarına sunulacak hedefler. java_library.exports konusuna bakın.
jars

Etiket listesi; zorunlu

Bu hedefe bağlı Java hedeflerine sağlanan JAR dosyalarının listesi.

Boole değeri; varsayılan değer False'dır.

Bu kitaplığı yalnızca derleme için kullanın, çalışma zamanında kullanmayın. Kitaplık, yürütme sırasında çalışma zamanı ortamı tarafından sağlanacaksa kullanışlıdır. Buna benzer kitaplık örnekleri arasında IDE eklentileri için IDE API'leri veya standart bir JDK'da çalışan her şey için tools.jar yer alır.
proguard_specs

Etiket listesi; varsayılan değer []'dir.

Proguard spesifikasyonu olarak kullanılacak dosyalar. Bu dosyalar, ProGuard tarafından kullanılacak özellikler grubunu tanımlar. Belirtilmişse bu kitaplığa bağlı olarak herhangi bir 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 için yalnızca android_binary'nın proguard_specs dosyasında görünebilir.
runtime_deps

Etiket listesi; varsayılan değer []'dir.

Yalnızca son ikili dosyada veya çalışma zamanında test için kullanılabilir hale getirilecek kitaplıklar. java_library.runtime_deps konusuna bakın.
srcjar

Etiket; varsayılan değer None'dir.

Derlenmiş JAR dosyalarının kaynak kodunu içeren bir JAR dosyası.

java_library

Kural kaynağını görüntüleme
java_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, package_metadata, 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 []'dir.

Bu kitaplığa bağlanacak kitaplıkların listesi. deps ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.

deps içinde listelenen java_library kuralları tarafından oluşturulan JAR'lar, bu kuralın derleme zamanı sınıf yolunda yer alır. Ayrıca, deps, runtime_deps ve exports öğelerinin geçişli kapanımı, çalışma zamanı sınıf yolunda olacaktır.

Buna karşılık, data özelliğindeki hedefler runfiles'a dahil edilir ancak derleme zamanı veya çalışma zamanı sınıf yoluna dahil edilmez.

srcs

Etiket listesi; varsayılan değer []'dir.

Hedefi oluşturmak için işlenen kaynak dosyaların listesi. Bu özellik neredeyse her zaman gereklidir. Aşağıdaki istisnaları inceleyin.

.java türündeki kaynak dosyalar derlenir. Oluşturulan .java dosyalar söz konusu olduğunda, dosyanın adını değil, oluşturma kuralının adını buraya girmeniz genellikle önerilir. Bu, okunabilirliği artırmakla kalmaz, kuralı gelecekteki değişikliklere karşı daha dirençli hale getirir: Üretim kuralı gelecekte farklı dosyalar oluşturursa yalnızca bir yeri düzeltmeniz gerekir: üretim kuralının outs kısmı. Üretim kuralı, işlem yapmadığı için deps içinde listelenmemelidir.

.srcjar türündeki kaynak dosyalar açılır ve derlenir. (Bu, genrule ile bir dizi .java dosyası oluşturmanız gerektiğinde kullanışlıdır.)

Kurallar: Kural (genellikle genrule veya filegroup) yukarıda listelenen dosyalardan herhangi birini oluşturursa bu dosyalar, kaynak dosyalar için açıklanan şekilde kullanılır.

.properties türündeki kaynak dosyalar kaynak olarak kabul edilir.

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, runtime_deps bağımsız değişkenini belirtmediğiniz sürece neredeyse her zaman gereklidir.

data

Etiket listesi; varsayılan değer []'dir.

Bu kitaplığın çalışma zamanında ihtiyaç duyduğu dosyaların listesi. data ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.

Bazel, java_library oluştururken bu dosyaları herhangi bir yere yerleştirmez. data dosyaları oluşturulmuş dosyalarsa Bazel bunları oluşturur. Bu java_library öğesine bağlı bir test oluştururken Bazel, data dosyalarını runfiles alanına kopyalar veya bağlar.

resources

Etiket listesi; varsayılan değer []'dir.

Bir Java jar'ına dahil edilecek veri dosyalarının listesi.

Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir.

Kaynaklar belirtilmişse derleme tarafından oluşturulan normal .class dosyalarıyla birlikte JAR'a paketlenir. Jar dosyasındaki kaynakların konumu proje yapısı tarafından belirlenir. Bazel önce Maven'in standart dizin düzenini ("src" dizinini, ardından "resources" dizini torunu) arar. Bu bulunamazsa Bazel, "java" veya "javatests" adlı en üstteki dizini arar (örneğin, bir kaynak <workspace root>/x/java/y/java/z konumundaysa kaynağın yolu y/java/z olur). Bu sezgisel yöntem geçersiz kılınamaz ancak resource_strip_prefix özelliği, kaynak dosyaları için belirli bir alternatif dizini belirtmek üzere kullanılabilir.

add_exports

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen module veya package öğesine erişmesine izin verin.

Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.

add_opens

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen 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 None'dir.

Kısıtlanmış API, kullanmayın.
exported_plugins

Etiket listesi; varsayılan değer []'dir.

Bu kitaplığa doğrudan bağımlı kitaplıklara aktarılacak java_plugin listesi (ör. ek açıklama işlemcileri).

Belirtilen java_plugin listesi, bu kitaplığa doğrudan bağımlı olan tüm kitaplıklara, bu kitaplıklar plugins içinde bu etiketleri açıkça tanımlamış gibi uygulanır.

exports

Etiket listesi; varsayılan değer []'dir.

Dışa aktarılan kitaplıklar.

Burada listelenen kurallar, üst kurallar bu kurallara açıkça bağlıymış gibi üst kurallarda kullanılabilir. Bu durum, normal (dışa aktarılmamış) deps için geçerli değildir.

Özet: Aralarında deps kenarıyla başlayıp sıfır veya daha fazla exports kenarıyla devam eden bir bağımlılık yolu varsa X kuralı Y'deki koda erişebilir. Bunu açıklamak için bazı örneklere göz atalım.

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 deps içinde C'yi bildirmesi veya B'nin exports özelliğinde C'yi bildirerek A'nın (ve A'ya bağlı olabilecek her şeyin) işini kolaylaştırması gerekir.

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ı dışa aktardıysa (sırasıyla C' ve D'), 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 kendi deps içinde de listelemelidir.

javabuilder_jvm_flags

Dizelerin listesi; varsayılan değer []'dır.

Kısıtlanmış API, kullanmayın.
javacopts

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplık için ek derleyici seçenekleri. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir.

Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir.

Boole değeri; varsayılan değer False'dır.

Bu kitaplığın yalnızca derleme için kullanılıp çalışma zamanında kullanılmaması gerekip gerekmediği. Kitaplık, yürütme sırasında çalışma zamanı ortamı tarafından sağlanacaksa kullanışlıdır. Bu tür kitaplıklara örnek olarak IDE eklentileri için IDE API'leri veya standart bir JDK'da çalışan her şey için tools.jar verilebilir.

neverlink = True, derleyicinin bu kitaplıktaki materyalleri, Java Dil Spesifikasyonu'nun izin verdiği şekilde (ör. static final sabitleri (String veya temel türler). Bu nedenle, çalışma zamanı kitaplığı derleme kitaplığıyla aynı olduğunda tercih edilen kullanım alanı söz konusudur.

Ç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 []'dir.

Derleme sırasında çalıştırılacak Java derleyici eklentileri. Bu özellik içinde belirtilen her 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 []'dir.

Proguard spesifikasyonu olarak kullanılacak dosyalar. Bu dosyalar, ProGuard tarafından kullanılacak özellikler grubunu tanımlar. Belirtilmişse bu kitaplığa bağlı olarak herhangi bir 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 için yalnızca android_binary'nın proguard_specs dosyasında görünebilir.
resource_strip_prefix

Dize; varsayılan değer ""

Java kaynaklarından çıkarılacak yol ön eki.

Belirtilirse bu yol öneki, resources özelliğindeki her dosyadan kaldırılır. Kaynak dosyanın bu dizinde olmaması hatadır. Belirtilmemişse (varsayılan), kaynak dosyanın yolu, kaynak dosyaların Java paketiyle aynı mantığa göre belirlenir. Örneğin, stuff/java/foo/bar/a.txt konumundaki bir kaynak dosya foo/bar/a.txt konumunda yer alır.

runtime_deps

Etiket listesi; varsayılan değer []'dir.

Yalnızca son ikili dosyada veya çalışma zamanında test için kullanılabilir hale getirilecek kitaplıklar. Normal 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üleme
java_test(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, package_metadata, 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'den name_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 []'dir.

Hedefe bağlanacak diğer kitaplıkların listesi. 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 []'dir.

Hedefi oluşturmak için işlenen kaynak dosyaların listesi. Bu özellik neredeyse her zaman gereklidir. Aşağıdaki istisnaları inceleyin.

.java türündeki kaynak dosyalar derlenir. Oluşturulan .java dosyalar söz konusu olduğunda, dosyanın adını değil, oluşturma kuralının adını buraya girmeniz genellikle önerilir. Bu, okunabilirliği artırmakla kalmaz, kuralı gelecekteki değişikliklere karşı daha dirençli hale getirir: Üretim kuralı gelecekte farklı dosyalar oluşturursa yalnızca bir yeri düzeltmeniz gerekir: üretim kuralının outs kısmı. Üretim kuralı, işlem yapmadığı için deps içinde listelenmemelidir.

.srcjar türündeki kaynak dosyalar açılır ve derlenir. (Bu, genrule ile bir dizi .java dosyası oluşturmanız gerektiğinde kullanışlıdır.)

Kurallar: Kural (genellikle genrule veya filegroup) yukarıda listelenen dosyalardan herhangi birini oluşturursa bu dosyalar, kaynak dosyalar için açıklanan şekilde kullanılır.

Bu bağımsız değişken, çalışma zamanı sınıf yolundaki bir sınıfı main_class özelliği belirtmediği veya runtime_deps bağımsız değişkenini belirtmediğiniz sürece neredeyse her zaman gereklidir.

data

Etiket listesi; varsayılan değer []'dir.

Bu kitaplığın çalışma zamanında ihtiyaç duyduğu dosyaların listesi. 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 []'dir.

Bir Java jar'ına dahil edilecek veri dosyalarının listesi.

Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir.

Kaynaklar belirtilmişse derleme tarafından oluşturulan normal .class dosyalarıyla birlikte JAR'a paketlenir. Jar dosyasındaki kaynakların konumu proje yapısı tarafından belirlenir. Bazel önce Maven'in standart dizin düzenini ("src" dizinini, ardından "resources" dizini torunu) arar. Bu bulunamazsa Bazel, "java" veya "javatests" adlı en üstteki dizini arar (örneğin, bir kaynak <workspace root>/x/java/y/java/z konumundaysa kaynağın yolu y/java/z olur). Bu sezgisel yöntem geçersiz kılınamaz ancak resource_strip_prefix özelliği, kaynak dosyaları için belirli bir alternatif dizini belirtmek üzere kullanılabilir.

add_exports

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen module veya package öğesine erişmesine izin verin.

Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.

add_opens

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen 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 None'dir.

Kısıtlanmış API, kullanmayın.
classpath_resources

Etiket listesi; varsayılan değer []'dir.

BAŞKA YOL YOKSA BU SEÇENEĞİ KULLANMAYIN)

Java ağacının kök dizininde bulunması gereken kaynakların listesi. Bu özelliğin tek amacı, kaynaklarının tam olarak "myconfig.xml" olarak sınıf yolunda bulunmasını gerektiren üçüncü taraf kitaplıklarını desteklemektir. Ad alanı çakışması tehlikesi nedeniyle yalnızca ikili dosyalara izin verilir, kitaplıklara izin verilmez.

create_executable

Boole değeri; varsayılan değer True'dır.

Bu politikanın desteği sonlandırıldı. Lütfen bunun yerine java_single_jar politikasını kullanın.
deploy_manifest_lines

Dizelerin listesi; varsayılan değer []'dır.

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

Dizelerin listesi; varsayılan değer []'dır.

Bu ikili için ek derleyici seçenekleri. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir.

Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir.

jvm_flags

Dizelerin listesi; varsayılan değer []'dır.

Bu ikiliyi çalıştırmak için oluşturulan sarmalayıcı komut dosyasına yerleştirilecek işaretlerin listesi. $(location) ve "Make variable" yerine koyma ve Bourne shell belirteçleştirme işlemine tabidir.

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 "$@" karakterini içerir. Böylece, sınıf adından sonra diğer bağımsız değişkenleri iletebilirsiniz. Ancak JVM tarafından ayrıştırılması amaçlanan bağımsız değişkenler, komut satırındaki sınıf adından önce belirtilmelidir. jvm_flags içeriği, sınıf adı listelenmeden önce sarmalayıcı komut dosyasına eklenir.

Bu özelliğin *_deploy.jarçıktılar*_deploy.jar üzerinde hiçbir etkisi olmadığını unutmayın.

launcher

Etiket; varsayılan değer None'dir.

JDK ile birlikte gelen normal 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 --java_launcher Bazel işareti yalnızca launcher özelliği belirtilmemiş olan java_binary ve java_test hedeflerini etkiler.

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:

  • Normal JDK başlatıcıyı (varsayılan) kullanıyorsanız yerel bağımlılıklar, {name}_nativedeps.so adlı paylaşılan bir kitaplık olarak oluşturulur. Burada {name}, bu java_binary kuralının name özelliğidir. Kullanılmayan kod, bu yapılandırmada bağlayıcı tarafından kaldırılmaz.
  • Başka bir başlatıcı kullanıyorsanız yerel (C++) bağımlılıklar, {name}_nativedeps adlı bir ikiliye statik olarak bağlanır. Burada {name}, bu java_binary kuralının name özelliğidir. Bu durumda bağlayıcı, sonuçtaki ikiliden kullanılmadığını düşündüğü tüm kodları kaldırır. Bu nedenle, yalnızca JNI üzerinden erişilen C++ kodu, cc_library hedefi alwayslink = True belirtmediği sürece bağlanmayabilir.

Varsayılan JDK başlatıcısı dışında bir başlatıcı kullanıldığında *_deploy.jar çıktısının biçimi değişir. Ayrıntılar için ana java_binary belgelerine bakın.

main_class

Dize; varsayılan değer ""

Giriş noktası olarak kullanılacak 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 (srcs'dan) derlenebilir veya doğrudan ya da geçişli bağımlılıklar (runtime_deps veya deps aracılığıyla) tarafından sağlanabilir. Sınıf kullanılamıyorsa ikili dosya çalışma zamanında başarısız olur. Derleme zamanı kontrolü yoktur.

Boole değeri; varsayılan değer False'dır.

plugins

Etiket listesi; varsayılan değer []'dir.

Derleme sırasında çalıştırılacak Java derleyici eklentileri. Bu özellik içinde belirtilen her 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 ""

Java kaynaklarından çıkarılacak yol ön eki.

Belirtilirse bu yol öneki, resources özelliğindeki her dosyadan kaldırılır. Kaynak dosyanın bu dizinde olmaması hatadır. Belirtilmemişse (varsayılan), kaynak dosyanın yolu, kaynak dosyaların Java paketiyle aynı mantığa göre belirlenir. Örneğin, stuff/java/foo/bar/a.txt konumundaki bir kaynak dosya foo/bar/a.txt konumunda yer alır.

runtime_deps

Etiket listesi; varsayılan değer []'dir.

Yalnızca son ikili dosyada veya çalışma zamanında test için kullanılabilir hale getirilecek kitaplıklar. Normal 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 0

Derleme bilgilerinin ikili dosyaya kodlanıp kodlanmayacağı. Olası değerler:
  • stamp = 1: Derleme bilgilerini, --nostamp derlemelerinde bile her zaman ikiliye damgalayın. Bu ayardan kaçınılmalıdır. Bu ayar, ikili dosya ve buna bağlı tüm aşağı akış işlemleri için uzaktan önbelleğe almayı devre dışı bırakabilir.
  • stamp = 0: Derleme bilgilerini her zaman sabit değerlerle değiştirin. Bu, iyi bir derleme sonucu önbelleğe alma sağlar.
  • stamp = -1: Derleme bilgilerinin yerleştirilmesi, --[no]stamp işaretiyle kontrol edilir.

Damgalı ikili dosyalar, bağımlılıkları değişmediği sürece yeniden oluşturulmaz.

test_class

Dize; varsayılan değer ""

Test çalıştırıcı tarafından yüklenecek Java sınıfı.

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 --nolegacy_bazel_java_test işaretini ayarlayın.

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 name ve kaynağın köke göre göreceli yolu kullanılarak çıkarım yapılır. Test bilinen bir kaynak kökünün dışında bulunuyorsa test_class ayarlanmamışsa Bazel hata bildirir.

JUnit3 için test sınıfının junit.framework.TestCase alt sınıfı olması veya junit.framework.Test (ya da Test alt sınıfı) döndüren herkese açık statik suite() yöntemi olması gerekir.

Bu özellik, birkaç java_test kuralının aynı Test'yi (TestCase, TestSuite, ...) paylaşmasına olanak tanır. Genellikle, davranışının her durumda farklı olması için (ör.testlerin farklı bir alt kümesini çalıştırmak gibi) ek bilgiler (ör. jvm_flags=['-Dkey=value'] aracılığıyla) iletilir. Bu özellik, javatests ağacı dışındaki Java testlerinin de kullanılmasını sağlar.

use_launcher

Boole değeri; varsayılan değer True'dır.

İkilinin özel başlatıcı kullanıp kullanmayacağı.

Bu özellik yanlış olarak ayarlanırsa bu hedef için launcher özelliği ve ilgili --java_launcher işareti yoksayılır.

use_testrunner

Boole değeri; varsayılan değer True'dır.

Test çalıştırıcı (varsayılan olarak 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üleme
java_package_configuration(name, data, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, output_licenses, package_metadata, 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 []'dir.

Bu yapılandırmanın çalışma zamanında ihtiyaç duyduğu dosyaların listesi.
javacopts

Dizelerin listesi; varsayılan değer []'dır.

Java derleyici işaretleri.
output_licenses

Dizelerin listesi; varsayılan değer []'dır.

packages

Etiket listesi; varsayılan değer []'dir.

Yapılandırmanın uygulanması gereken package_group'lar kümesi.
system

Etiket; varsayılan değer None'dir.

javac'in --system işaretine karşılık gelir.

java_plugin

Kural kaynağını görüntüleme
java_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, package_metadata, 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şlemcileri desteklenir. Bir java_library veya java_binary kuralı, plugins özelliği aracılığıyla bunlara bağlı olarak eklentileri çalıştırabilir. java_library, exported_plugins kullanarak eklentileri doğrudan kendisine bağlı olan kitaplıklara da otomatik olarak 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() bağımsız değişkenlerinin 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 []'dir.

Bu kitaplığa bağlanacak kitaplıkların listesi. deps ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.

deps içinde listelenen java_library kuralları tarafından oluşturulan JAR'lar, bu kuralın derleme zamanı sınıf yolunda yer alır. Ayrıca, deps, runtime_deps ve exports öğelerinin geçişli kapanımı, çalışma zamanı sınıf yolunda olacaktır.

Buna karşılık, data özelliğindeki hedefler runfiles'a dahil edilir ancak derleme zamanı veya çalışma zamanı sınıf yoluna dahil edilmez.

srcs

Etiket listesi; varsayılan değer []'dir.

Hedefi oluşturmak için işlenen kaynak dosyaların listesi. Bu özellik neredeyse her zaman gereklidir. Aşağıdaki istisnaları inceleyin.

.java türündeki kaynak dosyalar derlenir. Oluşturulan .java dosyalar söz konusu olduğunda, dosyanın adını değil, oluşturma kuralının adını buraya girmeniz genellikle önerilir. Bu, okunabilirliği artırmakla kalmaz, kuralı gelecekteki değişikliklere karşı daha dirençli hale getirir: Üretim kuralı gelecekte farklı dosyalar oluşturursa yalnızca bir yeri düzeltmeniz gerekir: üretim kuralının outs kısmı. Üretim kuralı, işlem yapmadığı için deps içinde listelenmemelidir.

.srcjar türündeki kaynak dosyalar açılır ve derlenir. (Bu, genrule ile bir dizi .java dosyası oluşturmanız gerektiğinde kullanışlıdır.)

Kurallar: Kural (genellikle genrule veya filegroup) yukarıda listelenen dosyalardan herhangi birini oluşturursa bu dosyalar, kaynak dosyalar için açıklanan şekilde kullanılır.

.properties türündeki kaynak dosyalar kaynak olarak kabul edilir.

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, runtime_deps bağımsız değişkenini belirtmediğiniz sürece neredeyse her zaman gereklidir.

data

Etiket listesi; varsayılan değer []'dir.

Bu kitaplığın çalışma zamanında ihtiyaç duyduğu dosyaların listesi. data ile ilgili genel yorumları Çoğu derleme kuralı tarafından tanımlanan tipik özellikler bölümünde bulabilirsiniz.

Bazel, java_library oluştururken bu dosyaları herhangi bir yere yerleştirmez. data dosyaları oluşturulmuş dosyalarsa Bazel bunları oluşturur. Bu java_library öğesine bağlı bir test oluştururken Bazel, data dosyalarını runfiles alanına kopyalar veya bağlar.

resources

Etiket listesi; varsayılan değer []'dir.

Bir Java jar'ına dahil edilecek veri dosyalarının listesi.

Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir.

Kaynaklar belirtilmişse derleme tarafından oluşturulan normal .class dosyalarıyla birlikte JAR'a paketlenir. Jar dosyasındaki kaynakların konumu proje yapısı tarafından belirlenir. Bazel önce Maven'in standart dizin düzenini ("src" dizinini, ardından "resources" dizini torunu) arar. Bu bulunamazsa Bazel, "java" veya "javatests" adlı en üstteki dizini arar (örneğin, bir kaynak <workspace root>/x/java/y/java/z konumundaysa kaynağın yolu y/java/z olur). Bu sezgisel yöntem geçersiz kılınamaz ancak resource_strip_prefix özelliği, kaynak dosyaları için belirli bir alternatif dizini belirtmek üzere kullanılabilir.

add_exports

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen module veya package öğesine erişmesine izin verin.

Bu, javac ve JVM --add-exports= işaretlerine karşılık gelir.

add_opens

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplığın, belirtilen 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 None'dir.

Kısıtlanmış API, kullanmayın.
generates_api

Boole değeri; varsayılan değer False'dır.

Bu özellik, API kodu oluşturan ek açıklama işlemcilerini işaretler.

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 planlanmışsa 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

Dizelerin listesi; varsayılan değer []'dır.

Kısıtlanmış API, kullanmayın.
javacopts

Dizelerin listesi; varsayılan değer []'dır.

Bu kitaplık için ek derleyici seçenekleri. "Değişken oluştur" yerine koyma ve Bourne kabuğu belirteçleştirme işlemine tabidir.

Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir.

Boole değeri; varsayılan değer False'dır.

Bu kitaplığın yalnızca derleme için kullanılıp çalışma zamanında kullanılmaması gerekip gerekmediği. Kitaplık, yürütme sırasında çalışma zamanı ortamı tarafından sağlanacaksa kullanışlıdır. Bu tür kitaplıklara örnek olarak IDE eklentileri için IDE API'leri veya standart bir JDK'da çalışan her şey için tools.jar verilebilir.

neverlink = True, derleyicinin bu kitaplıktaki materyalleri, Java Dil Spesifikasyonu'nun izin verdiği şekilde (ör. static final sabitleri (String veya temel türler). Bu nedenle, çalışma zamanı kitaplığı derleme kitaplığıyla aynı olduğunda tercih edilen kullanım alanı söz konusudur.

Ç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

Dizelerin listesi; varsayılan değer []'dır.

plugins

Etiket listesi; varsayılan değer []'dir.

Derleme sırasında çalıştırılacak Java derleyici eklentileri. Bu özellik içinde belirtilen her 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 ""

İşlemci sınıfı, Java derleyicisinin ek açıklama işlemcisine giriş noktası olarak kullanması gereken sınıfın tam nitelikli türüdür. Belirtilmezse bu kural, Java derleyicisinin ek açıklama işlemine bir ek açıklama işlemcisi eklemez ancak çalışma zamanı sınıf yolu yine de derleyicinin ek açıklama işlemcisi yoluna dahil edilir. (Bu, öncelikle java.util.ServiceLoader kullanılarak ek açıklama işleme yoluyla yüklenen Error Prone eklentileri tarafından kullanılmak üzere tasarlanmıştır.)
proguard_specs

Etiket listesi; varsayılan değer []'dir.

Proguard spesifikasyonu olarak kullanılacak dosyalar. Bu dosyalar, ProGuard tarafından kullanılacak özellikler grubunu tanımlar. Belirtilmişse bu kitaplığa bağlı olarak herhangi bir 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 için yalnızca android_binary'nın proguard_specs dosyasında görünebilir.
resource_strip_prefix

Dize; varsayılan değer ""

Java kaynaklarından çıkarılacak yol ön eki.

Belirtilirse bu yol öneki, resources özelliğindeki her dosyadan kaldırılır. Kaynak dosyanın bu dizinde olmaması hatadır. Belirtilmemişse (varsayılan), kaynak dosyanın yolu, kaynak dosyaların Java paketiyle aynı mantığa göre belirlenir. Örneğin, stuff/java/foo/bar/a.txt konumundaki bir kaynak dosya foo/bar/a.txt konumunda yer alır.

java_runtime

Kural kaynağını görüntüleme
java_runtime(name, srcs, compatible_with, default_cds, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, package_metadata, 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 []'dir.

Çalışma zamanındaki tüm dosyalar.
default_cds

Etiket; varsayılan değer None'dir.

Hermetik 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 []'dir.

Hermetik dağıtımlar için çalışma zamanındaki dosyalar.
hermetic_static_libs

Etiket listesi; varsayılan değer []'dir.

Hermetik dağıtımlar için başlatıcıyla statik olarak bağlantılı kitaplıklar
java

Etiket; varsayılan değer None'dir.

Java yürütülebilir dosyasının yolu.
java_home

Dize; varsayılan değer ""

Çalışma zamanının kök dizinine giden yol. "Marka" değişkeni yerine koyma işlemine tabidir. Bu yol mutlaksa kural, iyi bilinen bir yola sahip hermetik olmayan bir Java çalışma zamanını belirtir. Bu durumda, srcs ve java özellikleri boş olmalıdır.
lib_ct_sym

Etiket; varsayılan değer None'dir.

--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 None'dir.

Hermetik dağıtımlar için gereken lib/modules dosyası.
output_licenses

Dizelerin listesi; varsayılan değer []'dır.

version

Tam sayı; varsayılan değer 0

Java çalışma zamanının özellik sürümü. Yani Runtime.version().feature() tarafından döndürülen tam sayı.

java_single_jar

Kural kaynağını görüntüleme
java_single_jar(name, deps, compatible_with, compress, deploy_env, deploy_manifest_lines, deprecation, exclude_build_data, exec_compatible_with, exec_group_compatible_with, exec_properties, features, multi_release, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Java bağımlılıklarını ve jar dosyalarını tek bir jar'da toplar `java_single_jar`, Java bağımlılıklarını ve jar dosyalarını tek bir jar'da toplar. Bu, yürütülebilir dosyalarla ilgili her şeyin devre dışı bırakıldığı java_binary'ye benzer ve java_binary "deploy jar hack" için bir alternatif sağlar. ## Örnek ```skylark load("//tools/build_defs/java_single_jar:java_single_jar.bzl", "java_single_jar") java_single_jar( name = "my_single_jar", deps = [ "//java/com/google/foo", "//java/com/google/bar", ], ) ``` Çıkışlar: {name}.jar: Tüm girişleri içeren tek bir 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 []'dir.

Geçişli bağımlılıkları toplamak için Java hedefleri (java_import ve java_library dahil). Çalışma zamanı bağımlılıkları; deps, exports ve runtime_deps aracılığıyla toplanır. Kaynaklar da toplanır. Yerel cc_library veya java_wrap_cc bağımlılıkları desteklenmez.
compress

Dize; varsayılan değer "preserve"

Her zaman sıkıştırılacak ("yes"), her zaman depolanacak ("no") veya değiştirilmeden geçirilecek ("preserve") olup olmadığı. Varsayılan değer "koru"dur ve en verimli seçenektir. Boyutunu artırmak veya azaltmak için ek işlem yapılmaz.
deploy_env

Etiket listesi; varsayılan değer []'dir.

Bu ikili programın dağıtım ortamını temsil eden `java_binary` veya `java_single_jar` hedeflerinin listesi. Başka bir <code>java_binary</code> tarafından yüklenecek bir eklenti oluştururken bu özelliği ayarlayın. <code>deploy_env</code> bağımlılıkları, bu kural tarafından oluşturulan JAR'dan hariç tutulur.
deploy_manifest_lines

Dizelerin listesi; varsayılan değer []'dır.

META-INF/manifest.mf dosyasına eklenecek satırların listesi.
exclude_build_data

Boole değeri; varsayılan değer True'dır.

Varsayılan olarak oluşturulan build-data.properties dosyasının atlanıp atlanmayacağı.
multi_release

Boole değeri; varsayılan değer True'dır.

Çoklu yayın çıkış JAR'larının etkinleştirilip etkinleştirilmeyeceği.

java_toolchain

Kural kaynağını görüntüleme
java_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, exec_compatible_with, exec_group_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, package_metadata, 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 derleyicisinin yapılandırmasını 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 []'dir.

android_lint_jvm_opts içinde etiket genişletme için kullanılabilen araçların etiketleri.
android_lint_jvm_opts

Dizelerin listesi; varsayılan değer []'dır.

Android Lint çağrılırken JVM için bağımsız değişkenlerin listesi.
android_lint_opts

Dizelerin listesi; varsayılan değer []'dır.

Android Lint bağımsız değişkenlerinin listesi.
android_lint_package_configuration

Etiket listesi; varsayılan değer []'dir.

Belirtilen paket gruplarına uygulanması gereken Android Lint Yapılandırması.
android_lint_runner

Etiket; varsayılan değer None'dir.

Android Lint çalıştırıcısının etiketi (varsa).
bootclasspath

Etiket listesi; varsayılan değer []'dir.

Java hedefi bootclasspath girişleri. javac'in -bootclasspath işaretine karşılık gelir.
compatible_javacopts

null; varsayılan değer {}

Dahili API, kullanmayın.
deps_checker

Etiket; varsayılan değer None'dir.

ImportDepsChecker dağıtım jar'ının etiketi.
forcibly_disable_header_compilation

Boole değeri; varsayılan değer False'dır.

Desteklemeyen platformlarda (ör. JDK 7 Bazel) üstbilgi derlemesini devre dışı bırakmak için --java_header_compilation'ı geçersiz kılar.
genclass

Etiket; varsayılan değer None'dir.

GenClass dağıtım JAR'ının etiketi.
header_compiler

Etiket; varsayılan değer None'dir.

Başlık derleyicisinin etiketi. --java_header_compilation etkinleştirildiyse gereklidir.
header_compiler_builtin_processors

Dizelerin listesi; varsayılan değer []'dır.

Dahili API, kullanmayın.
header_compiler_direct

Etiket; varsayılan değer None'dir.

API oluşturan ek açıklama işlemcilerini içermeyen doğrudan sınıf yolu işlemleri için kullanılacak başlık derleyicisinin isteğe bağlı etiketi.

Bu araç, ek açıklama işlemeyi desteklemez.

ijar

Etiket; varsayılan değer None'dir.

Ijar yürütülebilir dosyasının etiketi.
jacocorunner

Etiket; varsayılan değer None'dir.

JacocoCoverageRunner dağıtım jar'ının etiketi.
java_runtime

Etiket; varsayılan değer None'dir.

Bu araç zinciriyle kullanılacak java_runtime. Varsayılan olarak, yürütme yapılandırmasında java_runtime kullanılır.
javabuilder

Etiket; varsayılan değer None'dir.

JavaBuilder dağıtım JAR'ının etiketi.
javabuilder_data

Etiket listesi; varsayılan değer []'dir.

javabuilder_jvm_opts içinde etiket genişletme için kullanılabilen veri etiketleri.
javabuilder_jvm_opts

Dizelerin listesi; varsayılan değer []'dır.

JavaBuilder çağrılırken JVM için kullanılan bağımsız değişkenlerin listesi.
javac_supports_multiplex_workers

Boole değeri; varsayılan değer True'dır.

JavaBuilder, çoklu kalıcı çalışan olarak çalıştırmayı destekliyorsa doğru, desteklemiyorsa yanlış.
javac_supports_worker_cancellation

Boole değeri; varsayılan değer True'dır.

JavaBuilder, kalıcı çalışanların iptalini destekliyorsa doğru, desteklemiyorsa yanlış değerini döndürür.
javac_supports_worker_multiplex_sandboxing

Boole değeri; varsayılan değer False'dır.

JavaBuilder, sanal alan oluşturma ile çoklu kalıcı çalışan olarak çalıştırmayı destekliyorsa doğru, desteklemiyorsa yanlış.
javac_supports_workers

Boole değeri; varsayılan değer True'dır.

JavaBuilder, kalıcı bir çalışan olarak çalıştırmayı destekliyorsa doğru, desteklemiyorsa yanlış.
javacopts

Dizelerin listesi; varsayılan değer []'dır.

Java derleyicisi için ek bağımsız değişkenlerin listesi. Olası Java derleyici işaretlerinin kapsamlı listesi için lütfen Java derleyici belgelerine bakın.
jspecify_implicit_deps

Etiket; varsayılan değer None'dir.

Deneyseldir, kullanmayın.
jspecify_javacopts

Dizelerin listesi; varsayılan değer []'dır.

Deneyseldir, kullanmayın.
jspecify_packages

Etiket listesi; varsayılan değer []'dir.

Deneyseldir, kullanmayın.
jspecify_processor

Etiket; varsayılan değer None'dir.

Deneyseldir, kullanmayın.
jspecify_processor_class

Dize; varsayılan değer ""

Deneyseldir, kullanmayın.
jspecify_stubs

Etiket listesi; varsayılan değer []'dir.

Deneyseldir, kullanmayın.
jvm_opts

Dizelerin listesi; varsayılan değer []'dır.

Java derleyicisi çağrılırken JVM için kullanılan bağımsız değişkenlerin listesi. Bu seçenek için olası işaretlerin kapsamlı listesini Java sanal makine belgelerinde bulabilirsiniz.
misc

Dizelerin listesi; varsayılan değer []'dır.

Desteği sonlandırıldı: Bunun yerine javacopts kullanın
oneversion

Etiket; varsayılan değer None'dir.

Tek sürüm yaptırım ikilisinin etiketi.
oneversion_allowlist

Etiket; varsayılan değer None'dir.

Tek sürüm izin verilenler listesinin etiketi.
oneversion_allowlist_for_tests

Etiket; varsayılan değer None'dir.

Testler için tek sürüm izin verilenler listesinin etiketi.
oneversion_whitelist

Etiket; varsayılan değer None'dir.

Kullanımdan kaldırıldı: Bunun yerine oneversion_allowlist kullanın
package_configuration

Etiket listesi; varsayılan değer []'dir.

Belirtilen paket gruplarına uygulanması gereken yapılandırma.
proguard_allowlister

Etiket; varsayılan değer "@bazel_tools//tools/jdk:proguard_whitelister"'dir.

Proguard izin verilenler listesinin etiketi.
reduced_classpath_incompatible_processors

Dizelerin listesi; varsayılan değer []'dır.

Dahili API, kullanmayın.
singlejar

Etiket; varsayılan değer None'dir.

SingleJar dağıtım jar'ının etiketi.
source_version

Dize; varsayılan değer ""

Java kaynak sürümü (ör. "6" veya "7"). Java kaynak kodunda hangi kod yapısı grubuna izin verileceğini belirtir.
target_version

Dize; varsayılan değer ""

Java hedef sürümü (ör. "6" veya "7"). Sınıfın hangi Java çalışma zamanı için oluşturulacağını belirtir.
timezone_data

Etiket; varsayılan değer None'dir.

Saat dilimi verilerini içeren bir kaynak JAR'ının etiketi. Ayarlanırsa saat dilimi verileri, tüm java_binary kurallarının örtülü bir çalışma zamanı bağımlılığı olarak eklenir.
tools

Etiket listesi; varsayılan değer []'dir.

jvm_opts'de etiket genişletme için kullanılabilen araçların etiketleri.
turbine_data

Etiket listesi; varsayılan değer []'dir.

turbine_jvm_opts içinde etiket genişletme için kullanılabilen veri etiketleri.
turbine_jvm_opts

Dizelerin listesi; varsayılan değer []'dır.

Turbine çağrılırken JVM için kullanılan bağımsız değişkenlerin listesi.
xlint

Dizelerin listesi; varsayılan değer []'dır.

Varsayılan listeye eklenen veya listeden kaldırılan uyarıların listesi. Önüne tire işareti koyarak kaldırın. Daha fazla bilgi için lütfen -Xlint seçenekleriyle ilgili Javac belgelerine bakın.