Aturan
- java_binary
- java_import
- java_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_single_jar
- java_toolchain
java_binary
Lihat sumber aturanjava_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)
Membangun arsip Java ("file jar"), serta skrip shell wrapper dengan nama yang sama dengan aturan.
Skrip shell wrapper menggunakan classpath yang mencakup, antara lain, file jar untuk setiap
library yang menjadi dependensi biner. Saat menjalankan skrip shell wrapper, variabel lingkungan JAVABIN
yang tidak kosong akan diprioritaskan daripada versi yang ditentukan melalui flag --java_runtime_version
Bazel.
Skrip wrapper menerima beberapa tanda unik. Lihat
java_stub_template.txt
untuk mengetahui daftar flag dan variabel lingkungan yang dapat dikonfigurasi yang diterima oleh wrapper.
Target output implisit
name.jar
: Arsip Java, yang berisi file class dan resource lain yang sesuai dengan dependensi langsung biner.name-src.jar
: Arsip yang berisi sumber ("source jar").name_deploy.jar
: Arsip Java yang cocok untuk deployment (hanya dibuat jika diminta secara eksplisit).Membangun target
<name>_deploy.jar
untuk aturan Anda membuat file jar mandiri dengan manifes yang memungkinkannya dijalankan dengan perintahjava -jar
atau dengan opsi--singlejar
skrip wrapper. Penggunaan skrip wrapper lebih disarankan daripadajava -jar
karena juga meneruskan flag JVM dan opsi untuk memuat library native.JAR deployment berisi semua class yang akan ditemukan oleh classloader yang menelusuri classpath dari skrip wrapper biner dari awal hingga akhir. Direktori ini juga berisi library native yang diperlukan untuk dependensi. File ini otomatis dimuat ke dalam JVM saat runtime.
Jika target Anda menentukan atribut peluncur, maka _deploy.jar akan menjadi biner native, bukan file JAR biasa. Ini akan berisi peluncur dan dependensi native (C++) dari aturan Anda, yang semuanya ditautkan ke dalam biner statis. Byte file jar sebenarnya akan ditambahkan ke biner native tersebut, sehingga membuat blob biner tunggal yang berisi kode Java dan yang dapat dieksekusi. Anda dapat menjalankan file jar yang dihasilkan secara langsung seperti menjalankan biner native lainnya.
name_deploy-src.jar
: Arsip yang berisi sumber yang dikumpulkan dari penutupan transitif target. Ini akan cocok dengan class dideploy.jar
kecuali jika jar tidak memiliki jar sumber yang cocok.
Sebaiknya gunakan nama file sumber yang merupakan titik entri utama aplikasi (tanpa ekstensi). Misalnya, jika titik entri Anda disebut
Main.java
, maka nama Anda bisa Main
.
Atribut deps
tidak diizinkan dalam aturan java_binary
tanpa
srcs
; aturan tersebut memerlukan
main_class
yang disediakan oleh
runtime_deps
.
Cuplikan kode berikut mengilustrasikan kesalahan umum:
java_binary(
name = "DontDoThis",
srcs = [
...,
"GeneratedJavaFile.java"
, # a generated .java file
],
deps = [":generating_rule",
], # rule that generates that file
)
Lakukan hal berikut:
java_binary(
name = "DoThisInstead",
srcs = [
...,
":generating_rule",
],
)
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
deps
|
Daftar label; defaultnya adalah deps di
Atribut umum yang ditentukan oleh
sebagian besar aturan build.
|
srcs
|
Daftar label; defaultnya adalah
File sumber berjenis
File sumber berjenis
Aturan: jika aturan (biasanya
Argumen ini hampir selalu diperlukan, kecuali jika atribut
|
data
|
Daftar label; defaultnya adalah data
di Atribut umum yang ditentukan oleh
sebagian besar aturan build.
|
resources
|
Daftar label; defaultnya adalah Aset dapat berupa file sumber atau file yang dihasilkan.
Jika ditentukan, resource akan dibundel dalam JAR bersama dengan file |
add_exports
|
Daftar string; defaultnya adalah module atau package yang diberikan.
Ini sesuai dengan flag --add-exports= javac dan JVM. |
add_opens
|
Daftar string; defaultnya adalah module atau package yang diberikan secara reflektif.
Ini sesuai dengan flag --add-opens= javac dan JVM. |
bootclasspath
|
Label; defaultnya adalah |
classpath_resources
|
Daftar label; defaultnya adalah
Daftar resource yang harus berada di root pohon java. Satu-satunya tujuan atribut ini adalah untuk mendukung library pihak ketiga yang mengharuskan resource-nya ditemukan di classpath sebagai |
create_executable
|
Boolean; defaultnya adalah java_single_jar sebagai gantinya.
|
deploy_env
|
Daftar label; defaultnya adalah java_binary lainnya yang merepresentasikan lingkungan deployment untuk biner ini.
Tetapkan atribut ini saat membangun plugin yang akan dimuat oleh
java_binary lain.Menetapkan atribut ini akan mengecualikan semua dependensi dari classpath runtime (dan jar deployment) biner ini yang dibagikan antara biner ini dan target yang ditentukan dalam deploy_env .
|
deploy_manifest_lines
|
Daftar string; defaultnya adalah META-INF/manifest.mf yang dihasilkan untuk target
*_deploy.jar . Isi atribut ini tidak tunduk
pada penggantian "Jadikan variabel".
|
javacopts
|
Daftar string; defaultnya adalah Opsi compiler ini diteruskan ke javac setelah opsi compiler global. |
jvm_flags
|
Daftar string; defaultnya adalah Skrip wrapper untuk biner Java mencakup definisi CLASSPATH
(untuk menemukan semua jar dependen) dan memanggil interpreter Java yang tepat.
Baris perintah yang dihasilkan oleh skrip wrapper mencakup nama
class utama yang diikuti dengan Perhatikan bahwa atribut ini tidak berpengaruh pada output |
launcher
|
Label; defaultnya adalah bin/java normal yang disertakan dengan JDK.
Target harus berupa cc_binary . cc_binary apa pun yang
menerapkan
Java Invocation API dapat ditentukan sebagai nilai untuk atribut ini.
Secara default, Bazel akan menggunakan peluncur JDK normal (bin/java atau java.exe). Flag Bazel Perhatikan bahwa dependensi native (C++, SWIG, JNI) Anda akan dibangun secara berbeda, bergantung pada apakah Anda menggunakan peluncur JDK atau peluncur lain:
Saat menggunakan peluncur selain peluncur JDK default, format output |
main_class
|
String; default-nya adalah main() yang akan digunakan sebagai titik entri.
Jika menggunakan opsi ini, aturan tidak memerlukan daftar srcs=[...] .
Dengan demikian, dengan atribut ini, Anda dapat membuat file yang dapat dieksekusi dari library Java yang sudah berisi satu atau beberapa metode main() .
Nilai atribut ini adalah nama class, bukan file sumber. Class harus tersedia saat runtime: class dapat dikompilasi oleh aturan ini (dari |
neverlink
|
Boolean; defaultnya adalah |
plugins
|
Daftar label; defaultnya adalah java_plugin yang ditentukan dalam atribut ini akan dijalankan setiap kali aturan ini dibuat. Library juga dapat mewarisi plugin dari dependensi yang menggunakan
exported_plugins . Resource
yang dihasilkan oleh plugin akan disertakan dalam jar yang dihasilkan dari aturan ini.
|
resource_strip_prefix
|
String; default-nya adalah
Jika ditentukan, awalan jalur ini akan dihapus dari setiap file dalam atribut |
runtime_deps
|
Daftar label; defaultnya adalah deps biasa, ini akan muncul di classpath runtime, tetapi tidak seperti
itu, tidak di classpath waktu kompilasi. Dependensi yang hanya diperlukan saat runtime harus
dicantumkan di sini. Alat analisis dependensi harus mengabaikan target yang muncul di runtime_deps dan deps .
|
stamp
|
Bilangan bulat; defaultnya adalah
Biner yang diberi stempel tidak dibangun ulang kecuali jika dependensinya berubah. |
use_launcher
|
Boolean; defaultnya adalah Jika atribut ini disetel ke salah (false), atribut
peluncur dan tanda
|
use_testrunner
|
Boolean; defaultnya adalah com.google.testing.junit.runner.BazelTestRunner ) sebagai
titik entri utama untuk program Java, dan berikan class pengujian
ke runner pengujian sebagai nilai properti sistem
bazel.test_suite .
Anda dapat menggunakannya untuk mengganti perilaku default, yaitu menggunakan peluncur pengujian untuk aturan java_test ,
dan tidak menggunakannya untuk aturan java_binary . Anda kemungkinan tidak ingin melakukannya. Salah satu penggunaannya adalah untuk AllTest
aturan yang dipanggil oleh aturan lain (misalnya, untuk menyiapkan database
sebelum menjalankan pengujian). Aturan AllTest
harus dideklarasikan sebagai java_binary , tetapi harus
tetap menggunakan runner pengujian sebagai titik entri utamanya.
Nama class test runner dapat diganti dengan atribut main_class .
|
java_import
Lihat sumber aturanjava_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)
Aturan ini memungkinkan penggunaan file .jar
yang telah dikompilasi sebelumnya sebagai
library untuk aturan java_library
dan
java_binary
.
Contoh
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",
],
)
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
deps
|
Daftar label; defaultnya adalah |
data
|
Daftar label; defaultnya adalah |
add_exports
|
Daftar string; defaultnya adalah module atau package yang diberikan.
Ini sesuai dengan flag --add-exports= javac dan JVM. |
add_opens
|
Daftar string; defaultnya adalah module atau package yang diberikan secara reflektif.
Ini sesuai dengan flag --add-opens= javac dan JVM. |
constraints
|
Daftar string; defaultnya adalah |
exports
|
Daftar label; defaultnya adalah |
jars
|
Daftar label; wajib diisi Daftar file JAR yang disediakan untuk target Java yang bergantung pada target ini. |
neverlink
|
Boolean; defaultnya adalah tools.jar untuk apa pun yang berjalan di JDK standar.
|
proguard_specs
|
Daftar label; defaultnya adalah android_binary mana pun yang bergantung pada library ini.
File yang disertakan di sini hanya boleh memiliki aturan idempoten, yaitu -dontnote, -dontwarn,
assumenosideeffects, dan aturan yang dimulai dengan -keep. Opsi lain hanya dapat muncul di
proguard_specs android_binary , untuk memastikan penggabungan non-tautologis.
|
runtime_deps
|
Daftar label; defaultnya adalah |
srcjar
|
Label; defaultnya adalah |
java_library
Lihat sumber aturanjava_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)
Aturan ini mengompilasi dan menautkan sumber ke dalam file .jar
.
Output implisit
libname.jar
: Arsip Java yang berisi file class.libname-src.jar
: Arsip yang berisi sumber ("source jar").
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
deps
|
Daftar label; defaultnya adalah deps di
Atribut umum yang ditentukan oleh
sebagian besar aturan build.
JAR yang dibuat oleh aturan
Sebaliknya, target dalam atribut |
srcs
|
Daftar label; defaultnya adalah
File sumber berjenis
File sumber berjenis
Aturan: jika aturan (biasanya
File sumber berjenis Semua file lain akan diabaikan, asalkan ada setidaknya satu file dengan jenis file yang dijelaskan di atas. Jika tidak, error akan muncul.
Argumen ini hampir selalu diperlukan, kecuali jika Anda menentukan argumen |
data
|
Daftar label; defaultnya adalah data di
Atribut umum yang ditentukan oleh
sebagian besar aturan build.
Saat membangun |
resources
|
Daftar label; defaultnya adalah Aset dapat berupa file sumber atau file yang dihasilkan.
Jika ditentukan, resource akan dibundel dalam JAR bersama dengan file |
add_exports
|
Daftar string; defaultnya adalah module atau package yang diberikan.
Ini sesuai dengan flag --add-exports= javac dan JVM. |
add_opens
|
Daftar string; defaultnya adalah module atau package yang diberikan secara reflektif.
Ini sesuai dengan flag --add-opens= javac dan JVM. |
bootclasspath
|
Label; defaultnya adalah |
exported_plugins
|
Daftar label; defaultnya adalah java_plugin s (misalnya, pemroses anotasi) yang akan diekspor ke library yang bergantung langsung pada library ini.
Daftar |
exports
|
Daftar label; defaultnya adalah
Mencantumkan aturan di sini akan membuatnya tersedia untuk aturan induk, seolah-olah induk secara eksplisit bergantung pada aturan ini. Hal ini tidak berlaku untuk
Ringkasan: aturan X dapat mengakses kode di Y jika ada jalur
dependensi di antara keduanya yang dimulai dengan tepi
Asumsikan A bergantung pada B dan B bergantung pada C. Dalam hal ini
C adalah dependensi transitif dari A, jadi mengubah sumber C dan membangun ulang A akan
membangun ulang semuanya dengan benar. Namun, A tidak akan dapat menggunakan class di C. Untuk mengizinkan
hal tersebut, A harus mendeklarasikan C di Penutupan library yang diekspor tersedia untuk semua aturan induk langsung. Ambil contoh yang sedikit berbeda: A bergantung pada B, B bergantung pada C dan D, serta mengekspor C, tetapi tidak mengekspor D. Sekarang A memiliki akses ke C, tetapi tidak ke D. Sekarang, jika C dan D mengekspor beberapa pustaka, C' dan D' masing-masing, A hanya dapat mengakses C', tetapi tidak dapat mengakses D'.
Penting: aturan yang diekspor bukanlah dependensi reguler. Mengikuti contoh sebelumnya,
jika B mengekspor C dan ingin menggunakan C juga, B harus mencantumkannya juga di
|
javabuilder_jvm_flags
|
Daftar string; defaultnya adalah |
javacopts
|
Daftar string; defaultnya adalah Opsi compiler ini diteruskan ke javac setelah opsi compiler global. |
neverlink
|
Boolean; defaultnya adalah tools.jar untuk apa pun
yang berjalan di JDK standar.
Perhatikan bahwa Jika library runtime berbeda dengan library kompilasi, Anda harus memastikan bahwa library tersebut hanya berbeda di tempat yang dilarang oleh JLS untuk di-inline oleh compiler (dan hal ini harus berlaku untuk semua versi JLS mendatang). |
plugins
|
Daftar label; defaultnya adalah java_plugin yang ditentukan dalam atribut ini akan dijalankan setiap kali aturan ini dibuat. Library juga dapat mewarisi plugin dari dependensi yang menggunakan
exported_plugins . Resource
yang dihasilkan oleh plugin akan disertakan dalam jar yang dihasilkan dari aturan ini.
|
proguard_specs
|
Daftar label; defaultnya adalah android_binary mana pun yang bergantung pada library ini.
File yang disertakan di sini hanya boleh memiliki aturan idempoten, yaitu -dontnote, -dontwarn,
assumenosideeffects, dan aturan yang dimulai dengan -keep. Opsi lain hanya dapat muncul di
proguard_specs android_binary , untuk memastikan penggabungan non-tautologis.
|
resource_strip_prefix
|
String; default-nya adalah
Jika ditentukan, awalan jalur ini akan dihapus dari setiap file dalam atribut |
runtime_deps
|
Daftar label; defaultnya adalah deps biasa, ini akan muncul di classpath runtime, tetapi tidak seperti
itu, tidak di classpath waktu kompilasi. Dependensi yang hanya diperlukan saat runtime harus
dicantumkan di sini. Alat analisis dependensi harus mengabaikan target yang muncul di runtime_deps dan deps .
|
java_test
Lihat sumber aturanjava_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)
Aturan java_test()
mengompilasi pengujian Java. Pengujian adalah wrapper biner di sekitar kode pengujian Anda. Metode utama pelaksana pengujian dipanggil, bukan class utama yang dikompilasi.
Target output implisit
name.jar
: Arsip Java.name_deploy.jar
: Arsip Java yang sesuai untuk deployment. (Hanya dibuat jika diminta secara eksplisit.) Lihat deskripsi outputname_deploy.jar
dari java_binary untuk mengetahui detail selengkapnya.
Lihat bagian tentang argumen java_binary()
. Aturan ini juga mendukung semua atribut umum untuk semua aturan pengujian (*_test).
Contoh
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",
],
)
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
deps
|
Daftar label; defaultnya adalah deps di
Atribut umum yang ditentukan oleh
sebagian besar aturan build.
|
srcs
|
Daftar label; defaultnya adalah
File sumber berjenis
File sumber berjenis
Aturan: jika aturan (biasanya
Argumen ini hampir selalu diperlukan, kecuali jika atribut
|
data
|
Daftar label; defaultnya adalah data
di Atribut umum yang ditentukan oleh
sebagian besar aturan build.
|
resources
|
Daftar label; defaultnya adalah Aset dapat berupa file sumber atau file yang dihasilkan.
Jika ditentukan, resource akan dibundel dalam JAR bersama dengan file |
add_exports
|
Daftar string; defaultnya adalah module atau package yang diberikan.
Ini sesuai dengan flag --add-exports= javac dan JVM. |
add_opens
|
Daftar string; defaultnya adalah module atau package yang diberikan secara reflektif.
Ini sesuai dengan flag --add-opens= javac dan JVM. |
bootclasspath
|
Label; defaultnya adalah |
classpath_resources
|
Daftar label; defaultnya adalah
Daftar resource yang harus berada di root pohon java. Satu-satunya tujuan atribut ini adalah untuk mendukung library pihak ketiga yang mengharuskan resource-nya ditemukan di classpath sebagai |
create_executable
|
Boolean; defaultnya adalah java_single_jar sebagai gantinya.
|
deploy_manifest_lines
|
Daftar string; defaultnya adalah META-INF/manifest.mf yang dihasilkan untuk target
*_deploy.jar . Isi atribut ini tidak tunduk
pada penggantian "Jadikan variabel".
|
javacopts
|
Daftar string; defaultnya adalah Opsi compiler ini diteruskan ke javac setelah opsi compiler global. |
jvm_flags
|
Daftar string; defaultnya adalah Skrip wrapper untuk biner Java mencakup definisi CLASSPATH
(untuk menemukan semua jar dependen) dan memanggil interpreter Java yang tepat.
Baris perintah yang dihasilkan oleh skrip wrapper mencakup nama
class utama yang diikuti dengan Perhatikan bahwa atribut ini tidak berpengaruh pada output |
launcher
|
Label; defaultnya adalah bin/java normal yang disertakan dengan JDK.
Target harus berupa cc_binary . cc_binary apa pun yang
menerapkan
Java Invocation API dapat ditentukan sebagai nilai untuk atribut ini.
Secara default, Bazel akan menggunakan peluncur JDK normal (bin/java atau java.exe). Flag Bazel Perhatikan bahwa dependensi native (C++, SWIG, JNI) Anda akan dibangun secara berbeda, bergantung pada apakah Anda menggunakan peluncur JDK atau peluncur lain:
Saat menggunakan peluncur selain peluncur JDK default, format output |
main_class
|
String; default-nya adalah main() yang akan digunakan sebagai titik entri.
Jika menggunakan opsi ini, aturan tidak memerlukan daftar srcs=[...] .
Dengan demikian, dengan atribut ini, Anda dapat membuat file yang dapat dieksekusi dari library Java yang sudah berisi satu atau beberapa metode main() .
Nilai atribut ini adalah nama class, bukan file sumber. Class harus tersedia saat runtime: class dapat dikompilasi oleh aturan ini (dari |
neverlink
|
Boolean; defaultnya adalah |
plugins
|
Daftar label; defaultnya adalah java_plugin yang ditentukan dalam atribut ini akan dijalankan setiap kali aturan ini dibuat. Library juga dapat mewarisi plugin dari dependensi yang menggunakan
exported_plugins . Resource
yang dihasilkan oleh plugin akan disertakan dalam jar yang dihasilkan dari aturan ini.
|
resource_strip_prefix
|
String; default-nya adalah
Jika ditentukan, awalan jalur ini akan dihapus dari setiap file dalam atribut |
runtime_deps
|
Daftar label; defaultnya adalah deps biasa, ini akan muncul di classpath runtime, tetapi tidak seperti
itu, tidak di classpath waktu kompilasi. Dependensi yang hanya diperlukan saat runtime harus
dicantumkan di sini. Alat analisis dependensi harus mengabaikan target yang muncul di runtime_deps dan deps .
|
stamp
|
Bilangan bulat; defaultnya adalah
Biner yang diberi stempel tidak dibangun ulang kecuali jika dependensinya berubah. |
test_class
|
String; default-nya adalah
Secara default, jika argumen ini tidak ditentukan, mode lama akan digunakan dan
argumen pengujian akan digunakan sebagai gantinya. Tetapkan flag
Atribut ini menentukan nama class Java yang akan dijalankan oleh
pengujian ini. Anda jarang perlu menyetelnya. Jika argumen ini tidak ada,
argumen akan disimpulkan menggunakan
Untuk JUnit3, class pengujian harus berupa subclass
Atribut ini memungkinkan beberapa aturan |
use_launcher
|
Boolean; defaultnya adalah Jika atribut ini disetel ke salah (false), atribut
peluncur dan tanda
|
use_testrunner
|
Boolean; defaultnya adalah com.google.testing.junit.runner.BazelTestRunner ) sebagai
titik entri utama untuk program Java, dan berikan class pengujian
ke runner pengujian sebagai nilai properti sistem
bazel.test_suite .
Anda dapat menggunakannya untuk mengganti perilaku default, yaitu menggunakan peluncur pengujian untuk aturan java_test ,
dan tidak menggunakannya untuk aturan java_binary . Anda kemungkinan tidak ingin melakukannya. Salah satu penggunaannya adalah untuk AllTest
aturan yang dipanggil oleh aturan lain (misalnya, untuk menyiapkan database
sebelum menjalankan pengujian). Aturan AllTest
harus dideklarasikan sebagai java_binary , tetapi harus
tetap menggunakan runner pengujian sebagai titik entri utamanya.
Nama class test runner dapat diganti dengan atribut main_class .
|
java_package_configuration
Lihat sumber aturanjava_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)
Konfigurasi yang akan diterapkan ke sekumpulan paket.
Konfigurasi dapat ditambahkan ke
java_toolchain.javacopts
.
Contoh:
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",
]
)
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
data
|
Daftar label; defaultnya adalah |
javacopts
|
Daftar string; defaultnya adalah |
output_licenses
|
Daftar string; defaultnya adalah |
packages
|
Daftar label; defaultnya adalah package_group yang konfigurasinya harus diterapkan.
|
system
|
Label; defaultnya adalah |
java_plugin
Lihat sumber aturanjava_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
menentukan plugin untuk compiler Java yang dijalankan oleh Bazel. Jenis plugin yang didukung hanyalah pemroses anotasi. Aturan java_library
atau
java_binary
dapat menjalankan plugin dengan bergantung pada plugin tersebut melalui atribut plugins
. java_library
juga dapat otomatis mengekspor plugin ke library yang
bergantung langsung padanya menggunakan
exported_plugins
.
Target output implisit
libname.jar
: Arsip Java.
Argumen adalah subset dari (dan dengan semantik yang identik dengan) argumen
java_library(),
kecuali penambahan argumen processor_class
dan
generates_api
.
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
deps
|
Daftar label; defaultnya adalah deps di
Atribut umum yang ditentukan oleh
sebagian besar aturan build.
JAR yang dibuat oleh aturan
Sebaliknya, target dalam atribut |
srcs
|
Daftar label; defaultnya adalah
File sumber berjenis
File sumber berjenis
Aturan: jika aturan (biasanya
File sumber berjenis Semua file lain akan diabaikan, asalkan ada setidaknya satu file dengan jenis file yang dijelaskan di atas. Jika tidak, error akan muncul.
Argumen ini hampir selalu diperlukan, kecuali jika Anda menentukan argumen |
data
|
Daftar label; defaultnya adalah data di
Atribut umum yang ditentukan oleh
sebagian besar aturan build.
Saat membangun |
resources
|
Daftar label; defaultnya adalah Aset dapat berupa file sumber atau file yang dihasilkan.
Jika ditentukan, resource akan dibundel dalam JAR bersama dengan file |
add_exports
|
Daftar string; defaultnya adalah module atau package yang diberikan.
Ini sesuai dengan flag --add-exports= javac dan JVM. |
add_opens
|
Daftar string; defaultnya adalah module atau package yang diberikan secara reflektif.
Ini sesuai dengan flag --add-opens= javac dan JVM. |
bootclasspath
|
Label; defaultnya adalah |
generates_api
|
Boolean; defaultnya adalah Jika aturan menggunakan pemroses anotasi yang menghasilkan API, aturan lain yang bergantung padanya hanya dapat merujuk ke kode yang dihasilkan jika tindakan kompilasinya dijadwalkan setelah aturan yang menghasilkan. Atribut ini menginstruksikan Bazel untuk memperkenalkan batasan penjadwalan saat --java_header_compilation diaktifkan. PERINGATAN: Atribut ini memengaruhi performa build, gunakan hanya jika diperlukan. |
javabuilder_jvm_flags
|
Daftar string; defaultnya adalah |
javacopts
|
Daftar string; defaultnya adalah Opsi compiler ini diteruskan ke javac setelah opsi compiler global. |
neverlink
|
Boolean; defaultnya adalah tools.jar untuk apa pun
yang berjalan di JDK standar.
Perhatikan bahwa Jika library runtime berbeda dengan library kompilasi, Anda harus memastikan bahwa library tersebut hanya berbeda di tempat yang dilarang oleh JLS untuk di-inline oleh compiler (dan hal ini harus berlaku untuk semua versi JLS mendatang). |
output_licenses
|
Daftar string; defaultnya adalah |
plugins
|
Daftar label; defaultnya adalah java_plugin yang ditentukan dalam atribut ini akan dijalankan setiap kali aturan ini dibuat. Library juga dapat mewarisi plugin dari dependensi yang menggunakan
exported_plugins . Resource
yang dihasilkan oleh plugin akan disertakan dalam jar yang dihasilkan dari aturan ini.
|
processor_class
|
String; default-nya adalah |
proguard_specs
|
Daftar label; defaultnya adalah android_binary mana pun yang bergantung pada library ini.
File yang disertakan di sini hanya boleh memiliki aturan idempoten, yaitu -dontnote, -dontwarn,
assumenosideeffects, dan aturan yang dimulai dengan -keep. Opsi lain hanya dapat muncul di
proguard_specs android_binary , untuk memastikan penggabungan non-tautologis.
|
resource_strip_prefix
|
String; default-nya adalah
Jika ditentukan, awalan jalur ini akan dihapus dari setiap file dalam atribut |
java_runtime
Lihat sumber aturanjava_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)
Menentukan konfigurasi untuk runtime Java.
Contoh:
java_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
srcs
|
Daftar label; defaultnya adalah |
default_cds
|
Label; defaultnya adalah java_runtime hermetik. Jika hermetik diaktifkan untuk target java_binary , CDS default java_runtime akan dikemas dalam JAR deployment hermetik.
|
hermetic_srcs
|
Daftar label; defaultnya adalah |
hermetic_static_libs
|
Daftar label; defaultnya adalah |
java
|
Label; defaultnya adalah |
java_home
|
String; default-nya adalah srcs dan java harus kosong.
|
lib_ct_sym
|
Label; defaultnya adalah --release . Jika tidak ditentukan dan
ada tepat satu file di srcs yang jalur file-nya berakhiran dengan
/lib/ct.sym , file tersebut akan digunakan.
|
lib_modules
|
Label; defaultnya adalah |
output_licenses
|
Daftar string; defaultnya adalah |
version
|
Bilangan bulat; defaultnya adalah Runtime.version().feature() .
|
java_single_jar
Lihat sumber aturanjava_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)
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
deps
|
Daftar label; defaultnya adalah |
compress
|
String; default-nya adalah |
deploy_env
|
Daftar label; defaultnya adalah |
deploy_manifest_lines
|
Daftar string; defaultnya adalah META-INF/manifest.mf .
|
exclude_build_data
|
Boolean; defaultnya adalah |
multi_release
|
Boolean; defaultnya adalah |
java_toolchain
Lihat sumber aturanjava_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)
Menentukan konfigurasi untuk compiler Java. Toolchain yang akan digunakan dapat diubah melalui argumen --java_toolchain. Biasanya Anda tidak boleh menulis aturan semacam itu kecuali jika Anda ingin menyesuaikan compiler Java.
Contoh
Contoh sederhananya adalah:
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",
)
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. |
android_lint_data
|
Daftar label; defaultnya adalah |
android_lint_jvm_opts
|
Daftar string; defaultnya adalah |
android_lint_opts
|
Daftar string; defaultnya adalah |
android_lint_package_configuration
|
Daftar label; defaultnya adalah |
android_lint_runner
|
Label; defaultnya adalah |
bootclasspath
|
Daftar label; defaultnya adalah |
compatible_javacopts
|
null; default-nya adalah |
deps_checker
|
Label; defaultnya adalah |
forcibly_disable_header_compilation
|
Boolean; defaultnya adalah |
genclass
|
Label; defaultnya adalah |
header_compiler
|
Label; defaultnya adalah |
header_compiler_builtin_processors
|
Daftar string; defaultnya adalah |
header_compiler_direct
|
Label; defaultnya adalah Alat ini tidak mendukung pemrosesan anotasi. |
ijar
|
Label; defaultnya adalah |
jacocorunner
|
Label; defaultnya adalah |
java_runtime
|
Label; defaultnya adalah |
javabuilder
|
Label; defaultnya adalah |
javabuilder_data
|
Daftar label; defaultnya adalah |
javabuilder_jvm_opts
|
Daftar string; defaultnya adalah |
javac_supports_multiplex_workers
|
Boolean; defaultnya adalah |
javac_supports_worker_cancellation
|
Boolean; defaultnya adalah |
javac_supports_worker_multiplex_sandboxing
|
Boolean; defaultnya adalah |
javac_supports_workers
|
Boolean; defaultnya adalah |
javacopts
|
Daftar string; defaultnya adalah |
jspecify_implicit_deps
|
Label; defaultnya adalah |
jspecify_javacopts
|
Daftar string; defaultnya adalah |
jspecify_packages
|
Daftar label; defaultnya adalah |
jspecify_processor
|
Label; defaultnya adalah |
jspecify_processor_class
|
String; default-nya adalah |
jspecify_stubs
|
Daftar label; defaultnya adalah |
jvm_opts
|
Daftar string; defaultnya adalah |
misc
|
Daftar string; defaultnya adalah |
oneversion
|
Label; defaultnya adalah |
oneversion_allowlist
|
Label; defaultnya adalah |
oneversion_allowlist_for_tests
|
Label; defaultnya adalah |
oneversion_whitelist
|
Label; defaultnya adalah |
package_configuration
|
Daftar label; defaultnya adalah |
proguard_allowlister
|
Label; defaultnya adalah |
reduced_classpath_incompatible_processors
|
Daftar string; defaultnya adalah |
singlejar
|
Label; defaultnya adalah |
source_version
|
String; default-nya adalah |
target_version
|
String; default-nya adalah |
timezone_data
|
Label; defaultnya adalah |
tools
|
Daftar label; defaultnya adalah |
turbine_data
|
Daftar label; defaultnya adalah |
turbine_jvm_opts
|
Daftar string; defaultnya adalah |
xlint
|
Daftar string; defaultnya adalah |