Java Kuralları

Kurallar

java_binary

java_binary(name, deps, srcs, data, resources, args, 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, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)

Bir Java arşivi ("jar dosyası") ve kuralla aynı ada sahip bir sarmalayıcı kabuk komut dosyası oluşturur. Sarmalayıcı kabuk komut dosyası, diğer özelliklerinin yanı sıra her öğe için bir jar dosyası içeren ikili programın bağlı olduğu kitaplıktır.

Sarmalayıcı komut dosyası, birkaç benzersiz işareti kabul eder. Referans //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt. inceleyebilirsiniz.

Dolaylı çıkış hedefleri

  • name.jar: Sınıf dosyalarını ve diğer dosyaları içeren bir Java arşivi ve ikili programın doğrudan bağımlılıklarına karşılık gelen kaynaklardır.
  • name-src.jar: Kaynakları içeren bir arşiv ("kaynak jar").
  • name_deploy.jar: Dağıtıma uygun bir Java arşivi (yalnızca oluşturulur).

    Kuralınız için <name>_deploy.jar hedefi oluşturuluyor , dosyanın java -jar komutuyla veya sarmalayıcı komut dosyasının --singlejar komutuyla seçeneğini belirleyin. java -jar yerine sarmalayıcı komut dosyasının kullanılması tercih edilir çünkü JVM flag'lerini ve seçenekleri de iletir. yerel kitaplıklar yüklemek için kullanılır.

    Dağıtma jar dosyası, şu anda çalışan bir sınıf yükleyicinin bulacağı tüm sınıfları sınıf yolunu ikili programın sarmalayıcı komut dosyasından başından sonuna kadar aradı. Aynı zamanda bağımlılıklar için gerekli yerel kitaplıkları içerir. Bunlar otomatik olarak yüklenir JVM'ye aktarırsınız.

    Hedefiniz bir başlatıcı belirtiyorsa özelliği ile birlikte çalışırsanız, _deploy.jar normal bir JAR dosyası yerine yerel ikili programdır. Bu, başlatıcıyı ve uygulamanın tüm yerel (C++) bağımlılıklarını içerir: statik bir ikili sisteme bağlanmalıdır. Gerçek jar dosyasının baytları yerel ikili programının sonuna eklenir ve hem yürütülebilir ve Java kodu. Oluşturulan jar dosyasını doğrudan çalıştırabilirsiniz olduğu gibi kullanabilirsiniz.

  • name_deploy-src.jar: Kaynakları içeren bir arşiv hedefin geçişli olarak kapatılmasından toplanan verileri ölçer. Bunlar şu sınıflarla eşleşecek: Kavanozların eşleşen kaynak jar'ı olmadığı durumlar hariç deploy.jar.

Aşağıdaki değerler içermeyen java_binary kuralında deps özelliğine izin verilmez srcs; böyle bir kural için main_class sağlayan: runtime_deps.

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 şunu yapın:

java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.


Dosyanın ana giriş noktası olan kaynak dosyanın adını (uzantı hariç) seçin. Örneğin, giriş noktanız Main.java, adınız Main olabilir.
deps

List of labels; optional

Hedefe bağlanacak diğer kitaplıkların listesi. deps ile ilgili genel yorumları şu adreste bulabilirsiniz: Genel özellikler çoğu derleme kuralına bakın.
srcs

List of labels; optional

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

.java türündeki kaynak dosyalar derlenir. Oluşturulması durumunda .java dosyalarına oluşturma kuralının adının eklenmesi genellikle önerilir buraya yerleştirin. Bu hem okunabilirliği artırmakla kalmaz hem de gelecekteki değişikliklere karşı daha dirençli hale getirir: oluşturan kural gelecekte farklı dosyalara ihtiyacınız varsa tek bir yeri düzeltmeniz gerekir: outs oluşturma kuralı. Oluşturma kuralını deps içinde listelememelisiniz. çünkü işlemsiz.

.srcjar türündeki kaynak dosyalar paketten çıkarılır ve derlenir. (Bu, bir genrule dosyasıyla .java dosyaları oluşturmanız gerekir.)

Kurallar: Kural (genellikle genrule veya filegroup) oluşturulursa yukarıda listelenen dosyalardan herhangi biri, dosyası olarak da kaydedebilir.

Bu bağımsız değişken, main_class özelliği, sınıfını kullanmanız veya runtime_deps bağımsız değişkenini belirtmeniz gerekir.

resources

List of labels; optional

Java jar'a dahil edilecek veri dosyalarının listesi.

Kaynaklar belirtilirse, normal kaynaklarla birlikte kavanozda paketlenir Derleme, .class dosya üretti. İçerideki kaynakların konumu proje yapısına göre belirlenir. Bazel ilk olarak Maven'in standart dizin düzenine benzerdir. (bir "src" dizini ve ardından bir "kaynaklar" dizini torunu). Bu durumda bulunduktan sonra Bazel, "Java" adlı en üstteki dizini veya "Javatests" gibi (yani, Örneğin, bir kaynak <workspace root>/x/java/y/java/z konumundaysa kaynağın yolu y/java/z olur. Bu buluşsal yöntem geçersiz kılınamaz. ancak resource_strip_prefix özelliği bir kaynak dosyalar için belirli bir alternatif dizindir.

Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir.

classpath_resources

List of labels; optional

BAŞKA BİR YOL OLMADIĞINDAN BU SEÇENEĞİ KULLANMAYIN)

Java ağacının kökünde bulunması gereken kaynakların listesi. Bu özelliğin tek amacı, kaynaklarının kullanımını gerektiren üçüncü taraf kitaplıkları desteklemektir sınıf yolunda tam olarak "myconfig.xml" olarak bulundu. Yalnızca şuralarda izin verilir: kullanılmasıdır.

create_executable

Boolean; optional; nonconfigurable; default is True

İkili programın yürütülebilir olup olmadığı. Yürütülemez ikili programlar toplu geçişli çalışma zamanı Java bağımlılıkları bir dağıtım jar'ına bağlıdır, ancak doğrudan yürütülemez. Bu özellik ayarlanırsa sarmalayıcı komut dosyası oluşturulmaz. Bu, yanlış launcher veya main_class özellikleri için bu değeri 0 olarak ayarlayın. ayarlandı.
deploy_env

List of labels; optional

Dağıtımı temsil eden diğer java_binary hedeflerinin listesi ortamına ekleyebilirsiniz. Başka bir site tarafından yüklenecek bir eklenti oluştururken bu özelliği ayarlayın. java_binary
Bu özelliğin ayarlanması, bu ikili programın çalışma zamanı sınıf yolu (ve dağıtım jar'ı) ikili program ve deploy_env politikasında belirtilen hedefler.
deploy_manifest_lines

List of strings; optional

için oluşturulan META-INF/manifest.mf dosyasına eklenecek satırların listesi *_deploy.jar hedef. Bu özelliğin içeriği konu değildir "Değişken yap" olarak değiştirin.
javacopts

List of strings; optional

Bu kitaplık için ek derleyici seçenekleri. "Değişken yap" değişikliğine tabi ve Bourne kabuk belirteçleme.

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

jvm_flags

List of strings; optional

Bu ikili programı çalıştırmak için oluşturulmuş sarmalayıcı komut dosyasına yerleştirilecek işaretlerin listesi. $(location) öğesine tabi ve "Değişken yap" ifadesini değiştirme ve Bourne kabuk belirteçleme.

Java ikili programı için sarmalayıcı komut dosyası bir CLASSPATH tanımı içeriyor (bağımlı tüm jar'ları bulmak için) kullanır 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 ve ardından "$@" ile diğerlerini geçin bağımsız değişkenlerini ekleyin. Ancak, ayrıştırma için tasarlanmış bağımsız değişkenler komuttaki sınıf adından önce belirtilmelidir. satırında görünür. jvm_flags içeriği sarmalayıcıya eklenir komut dosyasını eklemeniz gerekir.

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

launcher

Label; optional

Java programınızı çalıştırmak için kullanılacak Normal bin/java programı JDK'ya dahildir. Hedef bir cc_binary olmalıdır. Şu özelliklere sahip herhangi bir cc_binary: , Bu özellik için bir değer olarak Java Invocation API belirtilebilir.

Varsayılan olarak, Bazel normal JDK başlatıcıyı (bin/Java veya java.exe) kullanır.

İlgili --java_launcher Bazel işareti yalnızca bunları etkiler Şu özelliklere sahip java_binary ve java_test hedef: launcher özelliği belirtilmedi.

Yerel (C++, SWIG, JNI) bağımlılıklarınızın farklı şekilde oluşturulacağını unutmayın JDK başlatıcıyı mı yoksa başka bir başlatıcıyı mı kullandığınıza bağlı olarak:

  • 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. {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ı statik olarak {name}_nativedeps adlı bir ikili programa bağlanmıştır; burada {name} bu java_binary kuralının name özelliğidir. Böyle durumlarda bağlayıcı, kullanılmadığını düşündüğü kodları elde edilen ikili programdan kaldırır. Yani, yalnızca JNI aracılığıyla erişilen C++ kodları yalnızca cc_library hedefi alwayslink = 1 değerini belirtiyor.

Varsayılan JDK başlatıcı dışında herhangi bir başlatıcıyı kullanırken biçim, *_deploy.jar çıkış değişikliğinin sayısı. Temel konuları java_binary dokümanlarına göz atın.

main_class

String; optional

Giriş noktası olarak kullanılacak main() yöntemine sahip sınıfın adı. Bir kural bu seçeneği kullanıyorsa srcs=[...] listesine ihtiyaç duymaz. Dolayısıyla, bu özellikle, önceden hazırlanmış bir Java kitaplığından yürütülebilir bir dosya bir veya daha fazla main() yöntemi içerir.

Bu özelliğin değeri bir kaynak dosya değil, sınıf adıdır. Sınıf çalışma zamanında kullanılabilir: bu kural tarafından derlenmiş olabilir (srcs kaynağından) veya doğrudan veya geçişli bağımlılıklar tarafından sağlanan (runtime_deps veya deps). Sınıf kullanılamıyorsa ikili program çalışma zamanında başarısız olur. orada derleme zamanı denetimi yoktur.

plugins

List of labels; optional

Derleme zamanında çalışacak Java derleyici eklentileri. Bu özellikte belirtilen her java_plugin bu kuralla birlikte çalıştırılır geliştirildi. Bir kitaplık, exported_plugins Kaynaklar oluşturulan dosya, bu kuralın ortaya çıkan jar'ına dahil edilir.
resource_jars

List of labels; optional

Desteği sonlandırıldı: Bunun yerine java_import ve deps veyaworkspace_deps öğelerini kullanın.
resource_strip_prefix

String; optional

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

Belirtilirse bu yol öneki resources içindeki her dosyadan çıkarılır. özelliğini gönderin. Bu, kaynak dosyasının bu dizinde olmamasıyla ilgili bir hatadır. Değilse belirtildiğinde (varsayılan), kaynak dosyasının yolu yine aynı mantığını kaynak dosyalardan oluşan Java paketi olarak kullanır. Örneğin, stuff/java/foo/bar/a.txt şu şekilde konumlandırılacak: foo/bar/a.txt.

runtime_deps

List of labels; optional

Son ikili program veya yalnızca çalışma zamanında test için kullanılacak kitaplıklar. Bunlar sıradan deps ürününde olduğu gibi çalışma zamanı sınıf yolunda görünür, ancak üzerinde çalışmalıdır. Yalnızca çalışma zamanında gereken bağımlılıklar burada görebilirsiniz. Bağımlılık analizi araçları, runtime_deps ve deps.
stamp

Integer; optional; default is -1

Derleme bilgilerinin ikili programda kodlanıp kodlanmayacağını belirler. Olası değerler:
  • stamp = 1: Derleme bilgilerini --nostamp derleme. Bu ayarından kaçınılmalıdır. Aksi takdirde, bu işlem ve buna bağımlı tüm aşağı akış işlemleri.
  • 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şaretidir.

Bağımlılıkları değişmediği sürece damgalı ikili programlar yeniden oluşturulmaz.

use_launcher

Boolean; optional; default is True

İkili programın özel bir başlatıcı kullanıp kullanmayacağı.

Bu özellik false (yanlış) değerine ayarlanırsa Başlatıcı özelliğini ve ilgili --java_launcher işaretle bu hedef için yoksayılacak.

use_testrunner

Boolean; optional; default is False

Test çalıştırıcısını kullan (varsayılan olarak com.google.testing.junit.runner.BazelTestRunner) sınıfını kullanın. ana giriş noktasını kullanabilir ve test sınıfını bazel.test_suite değeri olarak test koşucusuna atanır. sistem özelliğini etkinleştirmelisiniz. Varsayılan değeri geçersiz kılmak için bunu kullanabilirsiniz yardımcı olmak için test çalıştırıcısını kullanarak java_test kural, ve java_binary kuralları için kullanmayın. Düşük ihtimalle bunu yapmanız gerekir. Bir kullanım AllTest içindir başka bir kural tarafından çağrılan kurallar (veri tabanı ) girmeniz gerekir. AllTest kuralı java_binary olarak tanımlanmalıdır, ancak test çalıştırıcıyı ana giriş noktası olarak kullanmaya devam edebilirsiniz. Test çalıştırıcı sınıfının adı, main_class özelliğiyle geçersiz kılınabilir.

java_import

java_import(name, deps, data, 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, visibility)

Bu kural, önceden derlenmiş .jar dosyalarının java_library ve için kitaplıklar java_binary kural.

Ö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

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

Hedefe bağlanacak diğer kitaplıkların listesi. java_library.deps sayfasına göz atın.
constraints

List of strings; optional; nonconfigurable

Java kitaplığı olarak bu kurala uygulanan ekstra kısıtlamalar.
exports

List of labels; optional

Bu kuralın kullanıcılarına sunulacak hedefler. java_library.exports'u inceleyin.
jars

List of labels; required

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

Boolean; optional; default is False

Bu kitaplığı yalnızca derleme için kullanın, çalışma zamanında kullanmayın. Kitaplık çalışma zamanı ortamı tarafından sağlanacaksa kullanışlıdır bazı işaretler bulabilirsiniz. Bunun gibi kitaplıklara örnek olarak IDE API'leri verilebilir. için IDE eklentileri veya şu anda çalışan her şey için tools.jar standart bir JDK olabilir.
proguard_specs

List of labels; optional

ProGuard spesifikasyonu olarak kullanılacak dosyalar. Burada, ProGuard tarafından kullanılacak spesifikasyonlar açıklanır. Belirtilmişse bunlar, bu kitaplığa bağlı olarak herhangi bir android_binary hedefine eklenir. Buraya eklenen dosyalar sadece ideaklı kurallara, yani -dontnote, -dontwarn, yan etkileri ve -keep ile başlayan kuralları içerir. Diğer seçenekler yalnızca android_binary öğesinin proguard_specs (totoolojik olmayan birleştirmeler için)
runtime_deps

List of labels; optional

Son ikili program veya yalnızca çalışma zamanında test için kullanılacak kitaplıklar. java_library.runtime_deps kitaplığına göz atın.
srcjar

Label; optional

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

java_library

java_library(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javacopts, licenses, neverlink, plugins, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, visibility)

Bu kural, kaynakları bir .jar dosyasında derler ve bağlar.

Dolaylı çıkış hedefleri

  • libname.jar: Sınıf dosyalarını içeren bir Java arşivi.
  • libname-src.jar: Kaynakları içeren bir arşiv ("kaynak jar").

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

Bu kitaplığa bağlanacak kitaplıkların listesi. deps ile ilgili genel yorumları şu adreste bulabilirsiniz: Genel özellikler çoğu derleme kuralına bakın.

deps içinde listelenen java_library kuralları tarafından oluşturulan jar'lar açık olacak bu kuralın derleme zamanı sınıf yolu. Dahası, hizmet hesaplarının geçişli olarak kapatılması deps, runtime_deps ve exports şurada olacak: çalışma zamanı sınıf yolu.

Buna karşılık, data özelliğindeki hedefler çalıştırma dosyalarına dahil edilir ancak hem derleme zamanında ne de çalışma zamanı sınıf yolundan yararlanır.

srcs

List of labels; optional

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

.java türündeki kaynak dosyalar derlenir. Oluşturulması durumunda .java dosyalarına oluşturma kuralının adının eklenmesi genellikle önerilir buraya yerleştirin. Bu hem okunabilirliği artırmakla kalmaz hem de gelecekteki değişikliklere karşı daha dirençli hale getirir: oluşturan kural gelecekte farklı dosyalara ihtiyacınız varsa tek bir yeri düzeltmeniz gerekir: outs oluşturma kuralı. Oluşturma kuralını deps içinde listelememelisiniz. çünkü işlemsiz.

.srcjar türündeki kaynak dosyalar paketten çıkarılır ve derlenir. (Bu, bir genrule dosyasıyla .java dosyaları oluşturmanız gerekir.)

Kurallar: Kural (genellikle genrule veya filegroup) oluşturulursa yukarıda listelenen dosyalardan herhangi biri, dosyası olarak da kaydedebilir.

Bu bağımsız değişken, main_class özelliği, sınıfını kullanmanız veya runtime_deps bağımsız değişkenini belirtmeniz gerekir.

data

List of labels; optional

Çalışma zamanında bu kitaplığın ihtiyaç duyduğu dosyaların listesi. data ile ilgili genel yorumları şu adreste bulabilirsiniz: Genel özellikler çoğu derleme kuralına bakın.

Bir java_library oluştururken Bazel bu dosyaları hiçbir yere koymaz; eğer data dosya oluşturulduktan sonra Bazel tarafından oluşturulur. Bir Bu teste dayalı bir test yöntemidir. java_library Bazel, data dosya, çalıştırma dosyaları alanına.

resources

List of labels; optional

Java jar'a dahil edilecek veri dosyalarının listesi.

Kaynaklar belirtilirse, normal kaynaklarla birlikte kavanozda paketlenir Derleme, .class dosya üretti. İçerideki kaynakların konumu proje yapısına göre belirlenir. Bazel ilk olarak Maven'in standart dizin düzenine benzerdir. (bir "src" dizini ve ardından bir "kaynaklar" dizini torunu). Bu durumda bulunduktan sonra Bazel, "Java" adlı en üstteki dizini veya "Javatests" gibi (yani, Örneğin, bir kaynak <workspace root>/x/java/y/java/z konumundaysa kaynağın yolu y/java/z olur. Bu buluşsal yöntem geçersiz kılınamaz. ancak resource_strip_prefix özelliği bir kaynak dosyalar için belirli bir alternatif dizindir.

Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir.

exported_plugins

List of labels; optional

java_plugin listesi (ör. ek açıklama) işlemcileri) doğrudan bu kitaplığa bağımlı kitaplıklara aktarmak için kullanılır.

Belirtilen java_plugin listesi şu kitaplığa uygulanacaktır: Bu kitaplığa, sanki bu kitaplık açık bir şekilde açıkça beyan edilmiş gibi plugins içinde etiketler.

exports

List of labels; optional

Dışa aktarılan kitaplıklar.

Burada listeleme kuralları, bunları üst kurallar tarafından sanki üst öğelerde olduğu gibi üst kurallarda kullanılabilir hale getirir bu kurallara bağlıydı. Bu, normal (dışa aktarılmayan) deps için geçerli değildir.

Özet: X kuralı, bir bağımlılık varsa Y içindeki koda erişebilir deps kenarıyla başlayan ve ardından sıfır veya daha çok sayıda gelen yol exports kenar. Bunu açıklamak için bazı örneklere göz atalım.

A'nın B'ye, B'nin ise C'ye bağlı olduğunu varsayın. Bu durumda C, A'nın geçişli bir bağımlılığıdır; dolayısıyla C'nin kaynaklarını değiştirmek ve A'yı yeniden oluşturmak, her şeyi doğru şekilde yeniden yapabilir. Ancak A, C sınıfındaki sınıfları kullanamaz. İzin vermek için A'nın deps içinde C'yi belirtmesi gerekir veya B, A'nın çalışmasını kolaylaştırabilir (ve A'ya bağlı olabilecek her şey) için, C değerini (B'nin) exports kısmında özelliğini gönderin.

Dışa aktarılan kitaplıklar, tüm doğrudan üst kurallar tarafından kapatılabilir. Biraz çekin farklı örnek: A B'ye, B ise 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. C ve D bazı kitaplıkları dışa aktardıysa C'yi ve D' sırasıyla, A yalnızca C'ye erişebilir. ancak D' ile değil.

Önemli: Dışa aktarılan kurallar normal bir bağımlılık değildir. Önceki örneğe devam edecek olursak B, C'yi dışa aktarıyor ve C'yi de kullanmak istiyorsa bunu kendi deps

javacopts

List of strings; optional

Bu kitaplık için ek derleyici seçenekleri. "Değişken yap" değişikliğine tabi ve Bourne kabuk belirteçleme.

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

Boolean; optional; default is False

Bu kitaplığın çalışma zamanında değil yalnızca derleme için kullanılıp kullanılmayacağı. Kitaplık, yürütme sırasında çalışma zamanı ortamı tarafından sağlanacaksa kullanışlıdır. Örnekler IDE eklentileri için IDE API'leri veya her şey için tools.jar bu tür kitaplıklardan biridir çalışıyordum.

neverlink = 1 yönergesinin, derleyicinin materyali satır içine almasını engellemediğini unutmayın. tarafından izin verildiği şekilde, bu kitaplıktan alıp buna bağımlı derleme hedeflerine Dil Özellikleri (ör. String için static final sabit değer veya temel türlerde) ayırmaları gerekir. Bu nedenle tercih edilen kullanım alanı, çalışma zamanı kitaplığının ile aynı olacak.

Çalışma zamanı kitaplığı, derleme kitaplığından farklıysa yalnızca JLS'nin derleyicilerin satır içi yapmasını yasakladığı (ve JLS'nin gelecekteki tüm sürümleri).

plugins

List of labels; optional

Derleme zamanında çalışacak Java derleyici eklentileri. Bu özellikte belirtilen her java_plugin bu kuralla birlikte çalıştırılır geliştirildi. Bir kitaplık, exported_plugins Kaynaklar oluşturulan dosya, bu kuralın ortaya çıkan jar'ına dahil edilir.
proguard_specs

List of labels; optional

ProGuard spesifikasyonu olarak kullanılacak dosyalar. Burada, ProGuard tarafından kullanılacak spesifikasyonlar açıklanır. Belirtilmişse bunlar, bu kitaplığa bağlı olarak herhangi bir android_binary hedefine eklenir. Buraya eklenen dosyalar sadece ideaklı kurallara, yani -dontnote, -dontwarn, yan etkileri ve -keep ile başlayan kuralları içerir. Diğer seçenekler yalnızca android_binary öğesinin proguard_specs (totoolojik olmayan birleştirmeler için)
resource_jars

List of labels; optional

Desteği sonlandırıldı: Bunun yerine java_import ve deps veyaworkspace_deps öğelerini kullanın.
resource_strip_prefix

String; optional

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

Belirtilirse bu yol öneki resources içindeki her dosyadan çıkarılır. özelliğini gönderin. Bu, kaynak dosyasının bu dizinde olmamasıyla ilgili bir hatadır. Değilse belirtildiğinde (varsayılan), kaynak dosyasının yolu yine aynı mantığını kaynak dosyalardan oluşan Java paketi olarak kullanır. Örneğin, stuff/java/foo/bar/a.txt şu şekilde konumlandırılacak: foo/bar/a.txt.

runtime_deps

List of labels; optional

Son ikili program veya yalnızca çalışma zamanında test için kullanılacak kitaplıklar. Bunlar sıradan deps ürününde olduğu gibi çalışma zamanı sınıf yolunda görünür, ancak üzerinde çalışmalıdır. Yalnızca çalışma zamanında gereken bağımlılıklar burada görebilirsiniz. Bağımlılık analizi araçları, runtime_deps ve deps.

java_lite_proto_library

java_lite_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

java_lite_proto_library, .proto dosyadan Java kodu oluşturur.

deps, proto_library kuralına işaret etmelidir.

Örnek:

java_library(
    name = "lib",
    deps = [":foo"],
)

java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)

proto_library(
    name = "bar",
)

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

proto_library listesi kurallarını belirtin.

java_proto_library

java_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

java_proto_library, .proto dosyadan Java kodu oluşturur.

deps, proto_library kuralına işaret etmelidir.

Örnek:

java_library(
    name = "lib",
    deps = [":foo_java_proto"],
)

java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

proto_library listesi kurallarını belirtin.

java_test

java_test(name, deps, srcs, data, resources, args, 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, plugins, resource_jars, 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ı bir Java testi derler. Test, projenizdeki test kodu. Derlenmekte olan ana sınıf yerine test çalıştırıcının ana yöntemi çağrılır.

Dolaylı çıkış hedefleri

  • name.jar: Bir Java arşivi.
  • name_deploy.jar: Uygun bir Java arşivi . (Yalnızca açıkça talep edildiğinde oluşturulur.) Şu açıklamaya bakın: Şu kaynaktan name_deploy.jar çıkış: java_binary'yi ziyaret edin.

java_binary() bağımsız değişkenleriyle ilgili bölüme bakın. Bu kural ayrıca tüm özellikleri destekler. (*_test) testine tabi tutun.

Ö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

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

Hedefe bağlanacak diğer kitaplıkların listesi. deps ile ilgili genel yorumları şu adreste bulabilirsiniz: Genel özellikler çoğu derleme kuralına bakın.
srcs

List of labels; optional

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

.java türündeki kaynak dosyalar derlenir. Oluşturulması durumunda .java dosyalarına oluşturma kuralının adının eklenmesi genellikle önerilir buraya yerleştirin. Bu hem okunabilirliği artırmakla kalmaz hem de gelecekteki değişikliklere karşı daha dirençli hale getirir: oluşturan kural gelecekte farklı dosyalara ihtiyacınız varsa tek bir yeri düzeltmeniz gerekir: outs oluşturma kuralı. Oluşturma kuralını deps içinde listelememelisiniz. çünkü işlemsiz.

.srcjar türündeki kaynak dosyalar paketten çıkarılır ve derlenir. (Bu, bir genrule dosyasıyla .java dosyaları oluşturmanız gerekir.)

Kurallar: Kural (genellikle genrule veya filegroup) oluşturulursa yukarıda listelenen dosyalardan herhangi biri, dosyası olarak da kaydedebilir.

Bu bağımsız değişken, main_class özelliği, sınıfını kullanmanız veya runtime_deps bağımsız değişkenini belirtmeniz gerekir.

resources

List of labels; optional

Java jar'a dahil edilecek veri dosyalarının listesi.

Kaynaklar belirtilirse, normal kaynaklarla birlikte kavanozda paketlenir Derleme, .class dosya üretti. İçerideki kaynakların konumu proje yapısına göre belirlenir. Bazel ilk olarak Maven'in standart dizin düzenine benzerdir. (bir "src" dizini ve ardından bir "kaynaklar" dizini torunu). Bu durumda bulunduktan sonra Bazel, "Java" adlı en üstteki dizini veya "Javatests" gibi (yani, Örneğin, bir kaynak <workspace root>/x/java/y/java/z konumundaysa kaynağın yolu y/java/z olur. Bu buluşsal yöntem geçersiz kılınamaz. ancak resource_strip_prefix özelliği bir kaynak dosyalar için belirli bir alternatif dizindir.

Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir.

classpath_resources

List of labels; optional

BAŞKA BİR YOL OLMADIĞINDAN BU SEÇENEĞİ KULLANMAYIN)

Java ağacının kökünde bulunması gereken kaynakların listesi. Bu özelliğin tek amacı, kaynaklarının kullanımını gerektiren üçüncü taraf kitaplıkları desteklemektir sınıf yolunda tam olarak "myconfig.xml" olarak bulundu. Yalnızca şuralarda izin verilir: kullanılmasıdır.

create_executable

Boolean; optional; nonconfigurable; default is True

İkili programın yürütülebilir olup olmadığı. Yürütülemez ikili programlar toplu geçişli çalışma zamanı Java bağımlılıkları bir dağıtım jar'ına bağlıdır, ancak doğrudan yürütülemez. Bu özellik ayarlanırsa sarmalayıcı komut dosyası oluşturulmaz. Bu, yanlış launcher veya main_class özellikleri için bu değeri 0 olarak ayarlayın. ayarlandı.
deploy_manifest_lines

List of strings; optional

için oluşturulan META-INF/manifest.mf dosyasına eklenecek satırların listesi *_deploy.jar hedef. Bu özelliğin içeriği konu değildir "Değişken yap" olarak değiştirin.
javacopts

List of strings; optional

Bu kitaplık için ek derleyici seçenekleri. "Değişken yap" değişikliğine tabi ve Bourne kabuk belirteçleme.

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

jvm_flags

List of strings; optional

Bu ikili programı çalıştırmak için oluşturulmuş sarmalayıcı komut dosyasına yerleştirilecek işaretlerin listesi. $(location) öğesine tabi ve "Değişken yap" ifadesini değiştirme ve Bourne kabuk belirteçleme.

Java ikili programı için sarmalayıcı komut dosyası bir CLASSPATH tanımı içeriyor (bağımlı tüm jar'ları bulmak için) kullanır 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 ve ardından "$@" ile diğerlerini geçin bağımsız değişkenlerini ekleyin. Ancak, ayrıştırma için tasarlanmış bağımsız değişkenler komuttaki sınıf adından önce belirtilmelidir. satırında görünür. jvm_flags içeriği sarmalayıcıya eklenir komut dosyasını eklemeniz gerekir.

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

launcher

Label; optional

Java programınızı çalıştırmak için kullanılacak Normal bin/java programı JDK'ya dahildir. Hedef bir cc_binary olmalıdır. Şu özelliklere sahip herhangi bir cc_binary: , Bu özellik için bir değer olarak Java Invocation API belirtilebilir.

Varsayılan olarak, Bazel normal JDK başlatıcıyı (bin/Java veya java.exe) kullanır.

İlgili --java_launcher Bazel işareti yalnızca bunları etkiler Şu özelliklere sahip java_binary ve java_test hedef: launcher özelliği belirtilmedi.

Yerel (C++, SWIG, JNI) bağımlılıklarınızın farklı şekilde oluşturulacağını unutmayın JDK başlatıcıyı mı yoksa başka bir başlatıcıyı mı kullandığınıza bağlı olarak:

  • 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. {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ı statik olarak {name}_nativedeps adlı bir ikili programa bağlanmıştır; burada {name} bu java_binary kuralının name özelliğidir. Böyle durumlarda bağlayıcı, kullanılmadığını düşündüğü kodları elde edilen ikili programdan kaldırır. Yani, yalnızca JNI aracılığıyla erişilen C++ kodları yalnızca cc_library hedefi alwayslink = 1 değerini belirtiyor.

Varsayılan JDK başlatıcı dışında herhangi bir başlatıcıyı kullanırken biçim, *_deploy.jar çıkış değişikliğinin sayısı. Temel konuları java_binary dokümanlarına göz atın.

main_class

String; optional

Giriş noktası olarak kullanılacak main() yöntemine sahip sınıfın adı. Bir kural bu seçeneği kullanıyorsa srcs=[...] listesine ihtiyaç duymaz. Dolayısıyla, bu özellikle, önceden hazırlanmış bir Java kitaplığından yürütülebilir bir dosya bir veya daha fazla main() yöntemi içerir.

Bu özelliğin değeri bir kaynak dosya değil, sınıf adıdır. Sınıf çalışma zamanında kullanılabilir: bu kural tarafından derlenmiş olabilir (srcs kaynağından) veya doğrudan veya geçişli bağımlılıklar tarafından sağlanan (runtime_deps veya deps). Sınıf kullanılamıyorsa ikili program çalışma zamanında başarısız olur. orada derleme zamanı denetimi yoktur.

plugins

List of labels; optional

Derleme zamanında çalışacak Java derleyici eklentileri. Bu özellikte belirtilen her java_plugin bu kuralla birlikte çalıştırılır geliştirildi. Bir kitaplık, exported_plugins Kaynaklar oluşturulan dosya, bu kuralın ortaya çıkan jar'ına dahil edilir.
resource_jars

List of labels; optional

Desteği sonlandırıldı: Bunun yerine java_import ve deps veyaworkspace_deps öğelerini kullanın.
resource_strip_prefix

String; optional

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

Belirtilirse bu yol öneki resources içindeki her dosyadan çıkarılır. özelliğini gönderin. Bu, kaynak dosyasının bu dizinde olmamasıyla ilgili bir hatadır. Değilse belirtildiğinde (varsayılan), kaynak dosyasının yolu yine aynı mantığını kaynak dosyalardan oluşan Java paketi olarak kullanır. Örneğin, stuff/java/foo/bar/a.txt şu şekilde konumlandırılacak: foo/bar/a.txt.

runtime_deps

List of labels; optional

Son ikili program veya yalnızca çalışma zamanında test için kullanılacak kitaplıklar. Bunlar sıradan deps ürününde olduğu gibi çalışma zamanı sınıf yolunda görünür, ancak üzerinde çalışmalıdır. Yalnızca çalışma zamanında gereken bağımlılıklar burada görebilirsiniz. Bağımlılık analizi araçları, runtime_deps ve deps.
stamp

Integer; optional; default is 0

Derleme bilgilerinin ikili programda kodlanıp kodlanmayacağını belirler. Olası değerler:
  • stamp = 1: Derleme bilgilerini --nostamp derleme. Bu ayarından kaçınılmalıdır. Aksi takdirde, bu işlem ve buna bağımlı tüm aşağı akış işlemleri.
  • 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şaretidir.

Bağımlılıkları değişmediği sürece damgalı ikili programlar yeniden oluşturulmaz.

test_class

String; optional

Test çalıştırıcısı 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. --nolegacy_bazel_java_test işaretini ayarla ilk argümantan vazgeçmemeye çalışın.

Bu özellik, çalıştırılacak bir Java sınıfının adını belirtir inceleyeceğiz. Bunun ayarlanması nadiren gerekir. Bu bağımsız değişken atlanırsa hedefin name ve dönüşüm değerleri kullanılarak kaynağa-köke göre görelim. Test, bilinen bir kaynak kök, test_class aşağıdaki durumlarda Bazel hata bildirir: ayarlanmamış.

JUnit3 için test sınıfının junit.framework.TestCase veya herkese açık olması gerekiyor değeri döndüren statik suite() yöntemi junit.framework.Test (veya Test alt sınıfı). JUnit4 için, sınıfa org.junit.runner.RunWith.

Bu özellik, birden fazla java_test kuralının aşağıdakileri yapmasına izin verir: aynı Test öğesini paylaş (TestCase, TestSuite, ...). Normal şartlarda ek bilginin iletildiğinden (ör. jvm_flags=['-Dkey=value'] aracılığıyla) her durumda değişiklik gösterebilir, örneğin farklı bir alt kümesidir. Bu özellik, javatests ağacı dışındaki Java testleri.

use_launcher

Boolean; optional; default is True

İkili programın özel bir başlatıcı kullanıp kullanmayacağı.

Bu özellik false (yanlış) değerine ayarlanırsa Başlatıcı özelliğini ve ilgili --java_launcher işaretle bu hedef için yoksayılacak.

use_testrunner

Boolean; optional; default is True

Test çalıştırıcısını kullan (varsayılan olarak com.google.testing.junit.runner.BazelTestRunner) sınıfını kullanın. ana giriş noktasını kullanabilir ve test sınıfını bazel.test_suite değeri olarak test koşucusuna atanır. sistem özelliğini etkinleştirmelisiniz. Varsayılan değeri geçersiz kılmak için bunu kullanabilirsiniz yardımcı olmak için test çalıştırıcısını kullanarak java_test kural, ve java_binary kuralları için kullanmayın. Düşük ihtimalle bunu yapmanız gerekir. Bir kullanım AllTest içindir başka bir kural tarafından çağrılan kurallar (veri tabanı ) girmeniz gerekir. AllTest kuralı java_binary olarak tanımlanmalıdır, ancak test çalıştırıcıyı ana giriş noktası olarak kullanmaya devam edebilirsiniz. Test çalıştırıcı sınıfının adı, main_class özelliğiyle geçersiz kılınabilir.

java_package_configuration

java_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, visibility)

Bir paket grubuna uygulanacak yapılandırma. Yapılandırmalar java_toolchain.javacopts sn.

Ö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

Name; required

Bu hedef için benzersiz bir ad.

data

List of labels; optional

Çalışma zamanında bu yapılandırma için gereken dosyaların listesi.
javacopts

List of strings; optional

Java derleyici işaretleri.
packages

List of labels; optional

package_group kümesi karar vermelisiniz.

java_plugin

java_plugin(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, visibility)

java_plugin, Bazel tarafından çalıştırılan Java derleyicisi için eklentileri tanımlar. Şu anda, yalnızca desteklenen tür eklentileri ek açıklama işlemcileridir. java_library veya java_binary kuralı, plugins aracılığıyla eklentilere bağlı olarak eklentileri çalıştırabilir. özelliğini gönderin. Ayrıca java_library, eklentileri ona doğrudan bağımlıysa exported_plugins.

Dolaylı çıkış hedefleri

  • libname.jar: Bir Java arşivi.

Bağımsız değişkenler java_library ile aynıdır, ancak şu durumlar hariçtir: processor_class bağımsız değişkeninin eklenmesi gerekir.

Bağımsız değişkenler

Özellikler
name

Name; required

Bu hedef için benzersiz bir ad.

deps

List of labels; optional

Bu kitaplığa bağlanacak kitaplıkların listesi. deps ile ilgili genel yorumları şu adreste bulabilirsiniz: Genel özellikler çoğu derleme kuralına bakın.

deps içinde listelenen java_library kuralları tarafından oluşturulan jar'lar açık olacak bu kuralın derleme zamanı sınıf yolu. Dahası, hizmet hesaplarının geçişli olarak kapatılması deps, runtime_deps ve exports şurada olacak: çalışma zamanı sınıf yolu.

Buna karşılık, data özelliğindeki hedefler çalıştırma dosyalarına dahil edilir ancak hem derleme zamanında ne de çalışma zamanı sınıf yolundan yararlanır.

srcs

List of labels; optional

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

.java türündeki kaynak dosyalar derlenir. Oluşturulması durumunda .java dosyalarına oluşturma kuralının adının eklenmesi genellikle önerilir buraya yerleştirin. Bu hem okunabilirliği artırmakla kalmaz hem de gelecekteki değişikliklere karşı daha dirençli hale getirir: oluşturan kural gelecekte farklı dosyalara ihtiyacınız varsa tek bir yeri düzeltmeniz gerekir: outs oluşturma kuralı. Oluşturma kuralını deps içinde listelememelisiniz. çünkü işlemsiz.

.srcjar türündeki kaynak dosyalar paketten çıkarılır ve derlenir. (Bu, bir genrule dosyasıyla .java dosyaları oluşturmanız gerekir.)

Kurallar: Kural (genellikle genrule veya filegroup) oluşturulursa yukarıda listelenen dosyalardan herhangi biri, dosyası olarak da kaydedebilir.

Bu bağımsız değişken, main_class özelliği, sınıfını kullanmanız veya runtime_deps bağımsız değişkenini belirtmeniz gerekir.

data

List of labels; optional

Çalışma zamanında bu kitaplığın ihtiyaç duyduğu dosyaların listesi. data ile ilgili genel yorumları şu adreste bulabilirsiniz: Genel özellikler çoğu derleme kuralına bakın.

Bir java_library oluştururken Bazel bu dosyaları hiçbir yere koymaz; eğer data dosya oluşturulduktan sonra Bazel tarafından oluşturulur. Bir Bu teste dayalı bir test yöntemidir. java_library Bazel, data dosya, çalıştırma dosyaları alanına.

resources

List of labels; optional

Java jar'a dahil edilecek veri dosyalarının listesi.

Kaynaklar belirtilirse, normal kaynaklarla birlikte kavanozda paketlenir Derleme, .class dosya üretti. İçerideki kaynakların konumu proje yapısına göre belirlenir. Bazel ilk olarak Maven'in standart dizin düzenine benzerdir. (bir "src" dizini ve ardından bir "kaynaklar" dizini torunu). Bu durumda bulunduktan sonra Bazel, "Java" adlı en üstteki dizini veya "Javatests" gibi (yani, Örneğin, bir kaynak <workspace root>/x/java/y/java/z konumundaysa kaynağın yolu y/java/z olur. Bu buluşsal yöntem geçersiz kılınamaz. ancak resource_strip_prefix özelliği bir kaynak dosyalar için belirli bir alternatif dizindir.

Kaynaklar, kaynak dosyalar veya oluşturulan dosyalar olabilir.

generates_api

Boolean; optional; default is False

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

Bir kural, API oluşturan ek açıklama işlemcisi kullanıyorsa diğer kurallar kendileri oluşturulan koda yalnızca derleme işlemleri, oluşturma kuralından sonra programlanır. Bu özelliğinin değeri, Bazel'a --java_header_compilation etkin.

UYARI: Bu özellik, derlemeyi yalnızca gerekli olduğunda kullanın.

javacopts

List of strings; optional

Bu kitaplık için ek derleyici seçenekleri. "Değişken yap" değişikliğine tabi ve Bourne kabuk belirteçleme.

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

Boolean; optional; default is False

Bu kitaplığın çalışma zamanında değil yalnızca derleme için kullanılıp kullanılmayacağı. Kitaplık, yürütme sırasında çalışma zamanı ortamı tarafından sağlanacaksa kullanışlıdır. Örnekler IDE eklentileri için IDE API'leri veya her şey için tools.jar bu tür kitaplıklardan biridir çalışıyordum.

neverlink = 1 yönergesinin, derleyicinin materyali satır içine almasını engellemediğini unutmayın. tarafından izin verildiği şekilde, bu kitaplıktan alıp buna bağımlı derleme hedeflerine Dil Özellikleri (ör. String için static final sabit değer veya temel türlerde) ayırmaları gerekir. Bu nedenle tercih edilen kullanım alanı, çalışma zamanı kitaplığının ile aynı olacak.

Çalışma zamanı kitaplığı, derleme kitaplığından farklıysa yalnızca JLS'nin derleyicilerin satır içi yapmasını yasakladığı (ve JLS'nin gelecekteki tüm sürümleri).

output_licenses

Licence type; optional

Bkz. common attributes
plugins

List of labels; optional

Derleme zamanında çalışacak Java derleyici eklentileri. Bu özellikte belirtilen her java_plugin bu kuralla birlikte çalıştırılır geliştirildi. Bir kitaplık, exported_plugins Kaynaklar oluşturulan dosya, bu kuralın ortaya çıkan jar'ına dahil edilir.
processor_class

String; optional

İşlemci sınıfı, Java derleyicinin kullanması gereken tam sınıf türüdür. giriş noktası olarak kullanılır. Belirtilmezse bu kural Java derleyicinin ek açıklama işlemesine bir ek açıklama işlemcisi ekler, ancak çalışma zamanı sınıf yolu, derleyicinin ek açıklama işlemci yoluna dahil edilmeye devam eder. (Bu öncelikle tarafından kullanılmak üzere tasarlanmıştır. Yüklenen Error Prone eklentileri kullanarak ek açıklama işlemci yolundan java.util.ServiceLoader.)
proguard_specs

List of labels; optional

ProGuard spesifikasyonu olarak kullanılacak dosyalar. Burada, ProGuard tarafından kullanılacak spesifikasyonlar açıklanır. Belirtilmişse bunlar, bu kitaplığa bağlı olarak herhangi bir android_binary hedefine eklenir. Buraya eklenen dosyalar sadece ideaklı kurallara, yani -dontnote, -dontwarn, yan etkileri ve -keep ile başlayan kuralları içerir. Diğer seçenekler yalnızca android_binary öğesinin proguard_specs (totoolojik olmayan birleştirmeler için)
resource_jars

List of labels; optional

Desteği sonlandırıldı: Bunun yerine java_import ve deps veyaworkspace_deps öğelerini kullanın.
resource_strip_prefix

String; optional

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

Belirtilirse bu yol öneki resources içindeki her dosyadan çıkarılır. özelliğini gönderin. Bu, kaynak dosyasının bu dizinde olmamasıyla ilgili bir hatadır. Değilse belirtildiğinde (varsayılan), kaynak dosyasının yolu yine aynı mantığını kaynak dosyalardan oluşan Java paketi olarak kullanır. Örneğin, stuff/java/foo/bar/a.txt şu şekilde konumlandırılacak: foo/bar/a.txt.

java_runtime

java_runtime(name, srcs, compatible_with, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

Java çalışma zamanının yapılandırmasını 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

Name; required

Bu hedef için benzersiz bir ad.

srcs

List of labels; optional

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

List of labels; optional

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

Label; optional

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

String; optional

Çalışma zamanının kök yolu. "Yap" konusuyla ilgili değişkeni ikame değerleridir. Bu yol mutlak ise kural, iyi bilinen ve hermetik olmayan bir Java çalışma zamanını yol'a dokunun. Bu durumda, srcs ve java özellikleri boş olmalıdır.
lib_modules

Label; optional

Hermetik dağıtımlar için gerekli olan lib/modules dosyası.

java_toolchain

java_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_with, deprecation, deps_checker, distribs, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_workers, javacopts, jvm_opts, licenses, oneversion, oneversion_whitelist, package_configuration, proguard_allowlister, resourcejar, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, tools, turbine_data, turbine_jvm_opts, visibility, xlint)

Java derleyici yapılandırmasını belirtir. Kullanılacak araç zinciri, --java_toolchain bağımsız değişkenini kullanır. Normalde bu tür kuralları siz istemeden Java derleyicinizi ayarlayın.

Örnekler

Basit bir örnek şöyle olabilir:

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

Name; required

Bu hedef için benzersiz bir ad.

android_lint_data

List of labels; optional

android_lint_jvm_opts sürümünde etiket genişletme için kullanılabilecek araçların etiketleri.
android_lint_jvm_opts

List of strings; optional

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

List of strings; optional

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

List of labels; optional

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

Label; optional

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

List of labels; optional

Java hedef bootclasspath girişleri. javac'ın -bootclasspath işaretine karşılık gelir.
deps_checker

List of labels; optional

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

Boolean; optional; default is False

Bunu yapmayan platformlarda başlık derlemesini devre dışı bırakmak için --java_header_compilation değerini geçersiz kılar desteklemeniz gerekir, örneğin, JDK 7 Bazel.
genclass

List of labels; required

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

List of labels; optional

Üst bilgi derleyici etiketi. --java_header_compilation özelliği etkinse gereklidir.
header_compiler_direct

List of labels; optional

Şunu yapmayan doğrudan classpath işlemleri için kullanılacak başlık derleyicinin isteğe bağlı etiketi: API oluşturan ek açıklama işlemcileri eklemeyin.

Bu araç, not işlemeyi desteklemez.

ijar

List of labels; required

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

Label; optional

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

Label; required

Bu araç zinciriyle kullanılacak java_runtime kodu. Varsayılan olarak java_runtime değerine ayarlanır. nasıl yapılandırılacakları hakkında daha fazla bilgi edinin.
javabuilder

List of labels; required

JavaBuilder dağıtım deposunun etiketi.
javabuilder_data

List of labels; optional

javabuilder_jvm_opts adresinde etiket genişletme için kullanılabilecek verilerin etiketleri.
javabuilder_jvm_opts

List of strings; optional

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

Boolean; optional; default is True

JavaBuilder, Multiplex kalıcı çalışanı olarak çalıştırmayı destekliyorsa doğru, desteklenmiyorsa false'tur.
javac_supports_workers

Boolean; optional; default is True

JavaBuilder kalıcı çalışan olarak çalıştırmayı destekliyorsa doğru, desteklenmiyorsa false (yanlış) değerini alır.
javacopts

List of strings; optional

Java derleyici için ekstra bağımsız değişkenlerin listesi. Lütfen Java derleyicisine bakın listesine göz atın.
jvm_opts

List of strings; optional

Java derleyicisi çağrılırken JVM için bağımsız değişkenlerin listesi. Lütfen Java'ya bakın sanal makine dokümanlarına göz atın.
oneversion

Label; optional

Tek sürümlü yaptırım ikili programının etiketi.
oneversion_whitelist

Label; optional

Tek sürüm beyaz listesinin etiketi.
package_configuration

List of labels; optional

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

Label; optional; default is @bazel_tools//tools/jdk:proguard_whitelister

ProGuard izin verilenler listesinin etiketi.
resourcejar

List of labels; optional

Yürütülebilir kaynak jar oluşturucunun etiketi.
singlejar

List of labels; required

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

String; optional

Java kaynak sürümü (ör. "6" veya "7"). Hangi kod yapısı grubunu Java kaynak kodunda izin verilir.
target_version

String; optional

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

Label; optional

Saat dilimi verilerini içeren bir kaynak jar'ının etiketi. Ayarlanırsa saat dilimi verileri tüm java_binary kurallarının dolaylı çalışma zamanı bağımlılığıdır.
tools

List of labels; optional

jvm_opts öğesinde etiket genişletme için kullanılabilecek araçların etiketleri.
turbine_data

List of labels; optional

turbine_jvm_opts konumunda etiket genişletme için kullanılabilecek veri etiketleri.
turbine_jvm_opts

List of strings; optional

Türbin çağrılırken JVM için bağımsız değişkenlerin listesi.
xlint

List of strings; optional

Varsayılan listeye eklenecek veya varsayılan listeden kaldırılacak uyarı listesi. Öncesinde tire işareti bulunan dosyayı kaldırır. Daha fazla bilgi için lütfen -Xlint seçenekleriyle ilgili Javac dokümanlarına bakın.