Quy tắc
- java_binary
- java_import
- java_library
- java_lite_proto_library
- java_proto_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_toolchain
java_binary
Xem nguồn quy tắcjava_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)
Xây dựng kho lưu trữ Java ("tệp jar"), cùng với tập lệnh shell bao bọc có cùng tên với quy tắc.
Tập lệnh shell bao bọc sử dụng một classpath bao gồm một tệp jar cho mỗi thư viện mà tệp nhị phân phụ thuộc vào đó. Khi chạy tập lệnh shell bao bọc, mọi biến môi trường JAVABIN
không trống sẽ được ưu tiên so với phiên bản được chỉ định thông qua cờ --java_runtime_version
của Bazel.
Tập lệnh trình bao bọc chấp nhận một số cờ duy nhất. Hãy tham khảo //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
để biết danh sách các cờ có thể định cấu hình và biến môi trường được trình bao bọc chấp nhận.
Mục tiêu đầu ra ngầm ẩn
name.jar
: Một kho lưu trữ Java, chứa các tệp lớp và các tài nguyên khác tương ứng với các phần phụ thuộc trực tiếp của tệp nhị phân.name-src.jar
: Tệp lưu trữ chứa các nguồn ("jar nguồn").name_deploy.jar
: Kho lưu trữ Java phù hợp để triển khai (chỉ được tạo nếu được yêu cầu rõ ràng).Việc tạo mục tiêu
<name>_deploy.jar
cho quy tắc của bạn sẽ tạo một tệp jar độc lập với một tệp kê khai cho phép chạy tệp đó bằng lệnhjava -jar
hoặc bằng tuỳ chọn--singlejar
của tập lệnh bao bọc. Việc sử dụng tập lệnh bao bọc được ưu tiên hơnjava -jar
vì tập lệnh này cũng truyền các cờ JVM và các lựa chọn tải thư viện gốc.Tệp triển khai chứa tất cả các lớp mà trình tải lớp tìm thấy đã tìm kiếm classpath từ tập lệnh bao bọc của tệp nhị phân từ đầu đến cuối. Tệp này cũng chứa các thư viện gốc cần thiết cho các phần phụ thuộc. Các chỉ số này sẽ được tự động tải vào JVM trong thời gian chạy.
Nếu mục tiêu của bạn chỉ định một thuộc tính trình chạy, thì thay vì là tệp JAR thông thường, _deploy.jar sẽ là một tệp nhị phân gốc. Tệp này sẽ chứa trình chạy cùng với mọi phần phụ thuộc gốc (C++) của quy tắc của bạn, tất cả đều được liên kết với một tệp nhị phân tĩnh. Các byte của tệp jar thực tế sẽ được nối vào tệp nhị phân gốc đó, tạo ra một blob nhị phân duy nhất chứa cả tệp thực thi và mã Java. Bạn có thể thực thi tệp jar thu được trực tiếp như bạn thực thi bất kỳ tệp nhị phân gốc nào.
name_deploy-src.jar
: Tệp lưu trữ chứa các nguồn được thu thập từ trạng thái đóng bắc cầu của mục tiêu. Các đối tượng này sẽ khớp với các lớp trongdeploy.jar
ngoại trừ trường hợp các tệp jar không có nhóm nguồn nào phù hợp.
Không cho phép thuộc tính deps
trong quy tắc java_binary
không có srcs
; quy tắc này yêu cầu main_class
do runtime_deps
cung cấp.
Đoạn mã sau đây minh hoạ một lỗi thường gặp:
java_binary( name = "DontDoThis", srcs = [ ..., "GeneratedJavaFile.java", # a generated .java file ], deps = [":generating_rule"], # rule that generates that file )
Hãy thực hiện việc này:
java_binary( name = "DoThisInstead", srcs = [ ..., ":generating_rule", ], )
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. Bạn nên sử dụng tên của tệp nguồn làm điểm truy cập chính của ứng dụng (trừ tên đuôi). Ví dụ: nếu điểm truy cập của bạn có tên là Main.java , thì tên của bạn có thể là Main .
|
deps
|
Danh sách nhãn; mặc định là deps trong phần Các thuộc tính thông thường được xác định theo hầu hết các quy tắc xây dựng.
|
srcs
|
Danh sách nhãn; mặc định là
Các tệp nguồn thuộc loại
Các tệp nguồn thuộc loại
Quy tắc: nếu quy tắc (thường là
Đối số này hầu như luôn bắt buộc, ngoại trừ trường hợp thuộc tính |
resources
|
Danh sách nhãn; mặc định là
Nếu bạn chỉ định tài nguyên, chúng sẽ được nhóm trong tệp jar cùng với các tệp Tài nguyên có thể là tệp nguồn hoặc tệp được tạo. |
classpath_resources
|
Danh sách nhãn; mặc định là
Danh sách các tài nguyên phải nằm ở gốc của cây java. Mục đích duy nhất của thuộc tính này là hỗ trợ các thư viện của bên thứ ba đòi hỏi tài nguyên của các thư viện đó phải được tìm thấy trên classpath chính xác là |
create_executable
|
Boolean; không thể định cấu hình; mặc định là java_single_jar .
|
deploy_env
|
Danh sách nhãn; mặc định là java_binary khác đại diện cho môi trường triển khai của tệp nhị phân này.
Đặt thuộc tính này khi tạo một trình bổ trợ mà một java_binary khác sẽ tải.Việc đặt thuộc tính này sẽ loại trừ mọi phần phụ thuộc khỏi classpath thời gian chạy (và vùng chứa triển khai) của tệp nhị phân này được chia sẻ giữa tệp nhị phân này và các mục tiêu được chỉ định trong deploy_env .
|
deploy_manifest_lines
|
Danh sách chuỗi; giá trị mặc định là META-INF/manifest.mf được tạo cho mục tiêu *_deploy.jar . Nội dung của thuộc tính này không cần thay thế "Tạo biến".
|
javacopts
|
Danh sách chuỗi; giá trị mặc định là Các tuỳ chọn của trình biên dịch này được chuyển đến javac sau các tuỳ chọn của trình biên dịch chung. |
jvm_flags
|
Danh sách chuỗi; giá trị mặc định là Tập lệnh bao bọc cho tệp nhị phân Java bao gồm định nghĩa CLASSPATH (để tìm tất cả các tệp jar phụ thuộc) và gọi đúng trình thông dịch Java.
Dòng lệnh do tập lệnh bao bọc tạo ra sẽ bao gồm tên của lớp chính, theo sau là Xin lưu ý rằng thuộc tính này không ảnh hưởng đến đầu ra của |
launcher
|
Nhãn; mặc định là bin/java thông thường có trong JDK.
Mục tiêu phải là một cc_binary . Bạn có thể chỉ định mọi cc_binary triển khai
API gọi Java làm giá trị cho thuộc tính này.
Theo mặc định, Bazel sẽ sử dụng trình chạy JDK thông thường (bin/java hoặc java.exe). Cờ Bazel Xin lưu ý rằng các phần phụ thuộc gốc (C++, SWIG, JNI) sẽ được tạo theo cách khác, tuỳ vào việc bạn đang sử dụng trình chạy JDK hay một trình chạy khác:
Khi sử dụng bất kỳ trình chạy nào khác với trình chạy JDK mặc định, định dạng của đầu ra |
main_class
|
Chuỗi; mặc định là main() dùng làm điểm truy cập.
Nếu một quy tắc sử dụng tuỳ chọn này thì quy tắc đó không cần danh sách srcs=[...] .
Do đó, với thuộc tính này, người dùng có thể tạo tệp thực thi từ thư viện Java đã chứa một hoặc nhiều phương thức main() .
Giá trị của thuộc tính này là tên lớp chứ không phải tệp nguồn. Lớp phải có sẵn trong thời gian chạy: lớp này có thể được biên dịch bằng quy tắc này (từ |
plugins
|
Danh sách nhãn; mặc định là java_plugin được chỉ định trong thuộc tính này sẽ chạy bất cứ khi nào quy tắc này được tạo. Thư viện cũng có thể kế thừa trình bổ trợ từ các phần phụ thuộc sử dụng exported_plugins . Các tài nguyên do trình bổ trợ tạo ra sẽ được đưa vào tệp kết quả của quy tắc này.
|
resource_jars
|
Danh sách nhãn; mặc định là |
resource_strip_prefix
|
Chuỗi; mặc định là
Nếu được chỉ định, tiền tố đường dẫn này sẽ bị xoá khỏi mọi tệp trong thuộc tính |
runtime_deps
|
Danh sách nhãn; mặc định là deps thông thường, các thuộc tính này sẽ xuất hiện trên classpath thời gian chạy, nhưng không giống như vậy, không xuất hiện trên classpath thời gian biên dịch. Các phần phụ thuộc chỉ cần thiết trong thời gian chạy nên được liệt kê ở đây. Các công cụ phân tích phần phụ thuộc nên bỏ qua các mục tiêu xuất hiện trong cả runtime_deps và deps .
|
stamp
|
Số nguyên; giá trị mặc định là
Tệp nhị phân có dấu không được tạo lại trừ phi phần phụ thuộc thay đổi. |
use_launcher
|
Boolean; mặc định là Nếu bạn đặt thuộc tính này thành false, thì thuộc tính trình chạy và cờ |
use_testrunner
|
Boolean; mặc định là com.google.testing.junit.runner.BazelTestRunner (theo mặc định) của trình chạy kiểm thử làm điểm truy cập chính cho chương trình Java và cung cấp lớp kiểm thử này cho trình chạy kiểm thử dưới dạng một giá trị của thuộc tính hệ thống bazel.test_suite .
Bạn có thể sử dụng thuộc tính này để ghi đè hành vi mặc định (sử dụng trình chạy kiểm thử cho các quy tắc java_test ) và không sử dụng hành vi này cho các quy tắc java_binary . Nhiều khả năng
bạn sẽ không muốn làm việc này. Một mục đích sử dụng là dành cho các quy tắc AllTest
được gọi bởi một quy tắc khác (ví dụ: để thiết lập cơ sở dữ liệu
trước khi chạy kiểm thử). Bạn phải khai báo quy tắc AllTest là java_binary nhưng vẫn nên sử dụng trình chạy kiểm thử làm điểm truy cập chính.
Bạn có thể ghi đè tên của lớp trình chạy kiểm thử bằng thuộc tính main_class .
|
java_import
Xem nguồn quy tắcjava_import(name, deps, data, add_exports, add_opens, compatible_with, constraints, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, toolchains, visibility)
Quy tắc này cho phép sử dụng các tệp .jar
được biên dịch trước làm thư viện cho các quy tắc java_library
và java_binary
.
Ví dụ
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",
],
)
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; mặc định là |
data
|
Danh sách nhãn; mặc định là |
add_exports
|
Danh sách chuỗi; giá trị mặc định là module hoặc package đã cho.
Điều này tương ứng với các cờ javac và JVM --add-exports=. |
add_opens
|
Danh sách chuỗi; giá trị mặc định là module hoặc package đã cho.
Điều này tương ứng với các cờ javac và JVM --add-opens=. |
constraints
|
Danh sách chuỗi; giá trị mặc định là |
exports
|
Danh sách nhãn; mặc định là |
jars
|
Danh sách nhãn; bắt buộc Danh sách các tệp JAR được cung cấp cho những mục tiêu Java phụ thuộc vào mục tiêu này. |
neverlink
|
Boolean; mặc định là tools.jar cho mọi dịch vụ chạy trên JDK tiêu chuẩn.
|
proguard_specs
|
Danh sách nhãn; mặc định là android_binary nào tuỳ thuộc vào thư viện này.
Các tệp ở đây chỉ được chứa các quy tắc không thay đổi giá trị, cụ thể là -dontnote, -dontwarn, assumenosideeffects và các quy tắc bắt đầu bằng -keep. Các tuỳ chọn khác chỉ có thể xuất hiện trong proguard_specs của android_binary để đảm bảo việc hợp nhất phi tự động học.
|
runtime_deps
|
Danh sách nhãn; mặc định là |
srcjar
|
Nhãn; mặc định là |
java_library
Xem nguồn quy tắcjava_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)
Quy tắc này biên dịch và liên kết các nguồn thành một tệp .jar
.
Kết quả đầu ra ngầm
libname.jar
: Kho lưu trữ Java chứa các tệp lớp.libname-src.jar
: Tệp lưu trữ chứa các nguồn ("jar nguồn").
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; mặc định là deps tại mục Các thuộc tính thông thường được xác định theo hầu hết các quy tắc xây dựng.
Các tệp jar được tạo theo quy tắc
Ngược lại, các mục tiêu trong thuộc tính |
srcs
|
Danh sách nhãn; mặc định là
Các tệp nguồn thuộc loại
Các tệp nguồn thuộc loại
Quy tắc: nếu quy tắc (thường là
Tệp nguồn thuộc loại Tất cả các tệp khác sẽ bị bỏ qua, miễn là có ít nhất một tệp thuộc loại tệp như mô tả ở trên. Nếu không, lỗi sẽ xảy ra.
Đối số này hầu như luôn bắt buộc, ngoại trừ trường hợp bạn chỉ định đối số |
data
|
Danh sách nhãn; mặc định là data tại mục Các thuộc tính thông thường được xác định theo hầu hết các quy tắc xây dựng.
Khi tạo |
resources
|
Danh sách nhãn; mặc định là Tài nguyên có thể là tệp nguồn hoặc tệp được tạo.
Nếu bạn chỉ định tài nguyên, chúng sẽ được nhóm trong tệp jar cùng với các tệp |
add_exports
|
Danh sách chuỗi; giá trị mặc định là module hoặc package đã cho.
Điều này tương ứng với các cờ javac và JVM --add-exports=. |
add_opens
|
Danh sách chuỗi; giá trị mặc định là module hoặc package đã cho.
Điều này tương ứng với các cờ javac và JVM --add-opens=. |
bootclasspath
|
Nhãn; mặc định là |
exported_plugins
|
Danh sách nhãn; mặc định là java_plugin (ví dụ: trình xử lý chú giải) để xuất sang các thư viện phụ thuộc trực tiếp vào thư viện này.
Danh sách |
exports
|
Danh sách nhãn; mặc định là
Quy tắc liệt kê ở đây sẽ cung cấp các quy tắc đó cho quy tắc mẹ, như thể quy tắc mẹ phụ thuộc rõ ràng vào các quy tắc này. Điều này không đúng đối với
Tóm tắt: một quy tắc X có thể truy cập vào mã trong Y nếu giữa các quy tắc này có một đường dẫn phần phụ thuộc bắt đầu bằng cạnh
Giả sử A phụ thuộc vào B và B phụ thuộc vào C. Trong trường hợp này, C là phần phụ thuộc bắc cầu của A. Vì vậy, việc thay đổi nguồn của C và tạo lại A sẽ tạo lại mọi thứ một cách chính xác. Tuy nhiên, A sẽ không thể sử dụng các lớp trong C. Để cho phép việc đó, A phải khai báo C trong Tất cả các quy tắc mẹ trực tiếp đều có thể đóng thư viện đã xuất. Hãy lấy một ví dụ hơi khác: A phụ thuộc vào B, B phụ thuộc vào C và D, cũng như xuất C nhưng không phụ thuộc vào D. Bây giờ, A có quyền truy cập vào C nhưng không có quyền truy cập vào D. Giờ đây, nếu C và D xuất một số thư viện, thì C' và D' thì A chỉ có thể truy cập vào C' mà không truy cập được vào D'.
Lưu ý quan trọng: quy tắc đã xuất không phải là phần phụ thuộc thông thường. Theo ví dụ trước, nếu B xuất dữ liệu C và cũng muốn sử dụng cả C, thì trường đó cũng phải liệt kê trong |
javabuilder_jvm_flags
|
Danh sách chuỗi; giá trị mặc định là |
javacopts
|
Danh sách chuỗi; giá trị mặc định là Các tuỳ chọn của trình biên dịch này được chuyển đến javac sau các tuỳ chọn của trình biên dịch chung. |
neverlink
|
Boolean; mặc định là tools.jar cho mọi dịch vụ chạy trên JDK tiêu chuẩn.
Lưu ý rằng Nếu thư viện thời gian chạy khác với thư viện biên dịch, thì bạn phải đảm bảo rằng thư viện này chỉ khác ở những vị trí mà JLS cấm trình biên dịch cùng dòng (và thư viện đó phải áp dụng cho mọi phiên bản JLS trong tương lai). |
plugins
|
Danh sách nhãn; mặc định là java_plugin được chỉ định trong thuộc tính này sẽ chạy bất cứ khi nào quy tắc này được tạo. Thư viện cũng có thể kế thừa trình bổ trợ từ các phần phụ thuộc sử dụng exported_plugins . Các tài nguyên do trình bổ trợ tạo ra sẽ được đưa vào tệp kết quả của quy tắc này.
|
proguard_specs
|
Danh sách nhãn; mặc định là android_binary nào tuỳ thuộc vào thư viện này.
Các tệp ở đây chỉ được chứa các quy tắc không thay đổi giá trị, cụ thể là -dontnote, -dontwarn, assumenosideeffects và các quy tắc bắt đầu bằng -keep. Các tuỳ chọn khác chỉ có thể xuất hiện trong proguard_specs của android_binary để đảm bảo việc hợp nhất phi tự động học.
|
resource_strip_prefix
|
Chuỗi; mặc định là
Nếu được chỉ định, tiền tố đường dẫn này sẽ bị xoá khỏi mọi tệp trong thuộc tính |
runtime_deps
|
Danh sách nhãn; mặc định là deps thông thường, các biến này sẽ xuất hiện trên classpath thời gian chạy, nhưng không giống như vậy, không xuất hiện trên classpath thời gian biên dịch. Các phần phụ thuộc chỉ cần thiết trong thời gian chạy nên được liệt kê ở đây. Các công cụ phân tích phần phụ thuộc nên bỏ qua các mục tiêu xuất hiện trong cả runtime_deps và deps .
|
java_lite_proto_library
Xem nguồn quy tắcjava_lite_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_lite_proto_library
tạo mã Java từ các tệp .proto
.
deps
phải trỏ đến proto_library
quy tắc.
Ví dụ:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; mặc định là proto_library cần tạo mã Java.
|
java_proto_library
Xem nguồn quy tắcjava_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_proto_library
tạo mã Java từ các tệp .proto
.
deps
phải trỏ đến proto_library
quy tắc.
Ví dụ:
java_library(
name = "lib",
runtime_deps = [":foo_java_proto"],
)
java_proto_library(
name = "foo_java_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; mặc định là proto_library cần tạo mã Java.
|
java_test
Xem nguồn quy tắcjava_test(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, plugins, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)
Quy tắc java_test()
biên dịch kiểm thử Java. Kiểm thử là một trình bao bọc nhị phân xung quanh mã kiểm thử. Phương thức chính của trình chạy kiểm thử được gọi thay vì lớp chính đang được biên dịch.
Mục tiêu đầu ra ngầm ẩn
name.jar
: Tệp lưu trữ Java.name_deploy.jar
: Một kho lưu trữ Java phù hợp để triển khai. (Chỉ được xây dựng nếu có yêu cầu rõ ràng.) Hãy xem nội dung mô tả về đầu raname_deploy.jar
của java_binary để biết thêm thông tin.
Hãy xem phần về đối số java_binary()
. Quy tắc này cũng hỗ trợ tất cả thuộc tính chung cho mọi quy tắc kiểm thử (*_test).
Ví dụ
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",
],
)
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; mặc định là deps tại mục Các thuộc tính thông thường được xác định theo hầu hết các quy tắc xây dựng.
|
srcs
|
Danh sách nhãn; mặc định là
Các tệp nguồn thuộc loại
Các tệp nguồn thuộc loại
Quy tắc: nếu quy tắc (thường là
Đối số này hầu như luôn bắt buộc, ngoại trừ trường hợp thuộc tính |
data
|
Danh sách nhãn; mặc định là data tại mục Các thuộc tính thông thường được xác định theo hầu hết các quy tắc xây dựng.
|
resources
|
Danh sách nhãn; mặc định là Tài nguyên có thể là tệp nguồn hoặc tệp được tạo.
Nếu bạn chỉ định tài nguyên, chúng sẽ được nhóm trong tệp jar cùng với các tệp |
add_exports
|
Danh sách chuỗi; giá trị mặc định là module hoặc package đã cho.
Điều này tương ứng với các cờ javac và JVM --add-exports=. |
add_opens
|
Danh sách chuỗi; giá trị mặc định là module hoặc package đã cho.
Điều này tương ứng với các cờ javac và JVM --add-opens=. |
bootclasspath
|
Nhãn; mặc định là |
classpath_resources
|
Danh sách nhãn; mặc định là
Danh sách các tài nguyên phải nằm ở gốc của cây java. Mục đích duy nhất của thuộc tính này là hỗ trợ các thư viện của bên thứ ba đòi hỏi tài nguyên của các thư viện đó phải được tìm thấy trên classpath chính xác là |
create_executable
|
Boolean; mặc định là java_single_jar .
|
deploy_manifest_lines
|
Danh sách chuỗi; giá trị mặc định là META-INF/manifest.mf được tạo cho mục tiêu *_deploy.jar . Nội dung của thuộc tính này không cần thay thế "Tạo biến".
|
javacopts
|
Danh sách chuỗi; giá trị mặc định là Các tuỳ chọn của trình biên dịch này được chuyển đến javac sau các tuỳ chọn của trình biên dịch chung. |
jvm_flags
|
Danh sách chuỗi; giá trị mặc định là Tập lệnh bao bọc cho tệp nhị phân Java bao gồm định nghĩa CLASSPATH (để tìm tất cả các tệp jar phụ thuộc) và gọi trình thông dịch Java phù hợp.
Dòng lệnh do tập lệnh bao bọc tạo ra sẽ bao gồm tên của lớp chính, theo sau là Lưu ý rằng thuộc tính này không ảnh hưởng đến đầu ra |
launcher
|
Nhãn; mặc định là bin/java thông thường có trong JDK.
Mục tiêu phải là một cc_binary . Bạn có thể chỉ định mọi cc_binary triển khai
Java Invocation API làm giá trị cho thuộc tính này.
Theo mặc định, Bazel sẽ sử dụng trình chạy JDK thông thường (bin/java hoặc java.exe). Cờ Bazel Xin lưu ý rằng các phần phụ thuộc gốc (C++, SWIG, JNI) sẽ được tạo theo cách khác nhau, tuỳ thuộc vào việc bạn đang sử dụng trình chạy JDK hay một trình chạy khác:
Khi sử dụng bất kỳ trình chạy nào khác với trình chạy JDK mặc định, định dạng của đầu ra |
main_class
|
Chuỗi; mặc định là main() dùng làm điểm truy cập.
Nếu một quy tắc sử dụng tuỳ chọn này thì quy tắc đó không cần danh sách srcs=[...] .
Do đó, với thuộc tính này, người dùng có thể tạo tệp thực thi từ thư viện Java đã chứa một hoặc nhiều phương thức main() .
Giá trị của thuộc tính này là tên lớp chứ không phải tệp nguồn. Lớp phải có sẵn trong thời gian chạy: lớp này có thể được biên dịch bằng quy tắc này (từ |
neverlink
|
Boolean; mặc định là |
plugins
|
Danh sách nhãn; mặc định là java_plugin được chỉ định trong thuộc tính này sẽ chạy bất cứ khi nào quy tắc này được tạo. Thư viện cũng có thể kế thừa trình bổ trợ từ các phần phụ thuộc sử dụng exported_plugins . Các tài nguyên do trình bổ trợ tạo ra sẽ được đưa vào tệp kết quả của quy tắc này.
|
resource_strip_prefix
|
Chuỗi; mặc định là
Nếu được chỉ định, tiền tố đường dẫn này sẽ bị xoá khỏi mọi tệp trong thuộc tính |
runtime_deps
|
Danh sách nhãn; mặc định là deps thông thường, các biến này sẽ xuất hiện trên classpath thời gian chạy, nhưng không giống như vậy, không xuất hiện trên classpath thời gian biên dịch. Các phần phụ thuộc chỉ cần thiết trong thời gian chạy nên được liệt kê ở đây. Các công cụ phân tích phần phụ thuộc nên bỏ qua các mục tiêu xuất hiện trong cả runtime_deps và deps .
|
stamp
|
Số nguyên; giá trị mặc định là
Tệp nhị phân có dấu không được tạo lại trừ phi phần phụ thuộc thay đổi. |
test_class
|
Chuỗi; mặc định là
Theo mặc định, nếu đối số này không được xác định thì chế độ cũ sẽ được sử dụng và các đối số kiểm thử sẽ được sử dụng. Thiết lập cờ
Thuộc tính này chỉ định tên của một lớp Java sẽ chạy trong bài kiểm thử này. Hiếm khi cần phải đặt giá trị này. Nếu đối số này bị bỏ qua, đối số này sẽ được suy ra bằng cách sử dụng
Đối với JUnit3, lớp kiểm thử cần phải là lớp con của
Thuộc tính này cho phép một số quy tắc |
use_launcher
|
Boolean; mặc định là Nếu bạn đặt thuộc tính này thành false, thuộc tính trình chạy và cờ |
use_testrunner
|
Boolean; mặc định là com.google.testing.junit.runner.BazelTestRunner ) làm điểm truy cập chính cho chương trình Java và cung cấp lớp kiểm thử cho trình chạy kiểm thử dưới dạng một giá trị của bazel.test_suite
thuộc tính hệ thống.
Bạn có thể dùng hành vi này để ghi đè hành vi mặc định (sử dụng trình chạy kiểm thử cho các quy tắc java_test ) và không dùng hành vi này cho các quy tắc java_binary . Không chắc bạn sẽ muốn làm điều này. Một mục đích sử dụng là cho các quy tắc AllTest
được gọi bởi một quy tắc khác (ví dụ: để thiết lập cơ sở dữ liệu
trước khi chạy kiểm thử). Bạn phải khai báo quy tắc AllTest là java_binary nhưng vẫn nên sử dụng trình chạy kiểm thử làm điểm truy cập chính.
Bạn có thể ghi đè tên của lớp trình chạy kiểm thử bằng thuộc tính main_class .
|
java_package_configuration
Xem nguồn quy tắcjava_package_configuration(name, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, javacopts, output_licenses, packages, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Cấu hình để áp dụng cho một tập hợp các gói.
Bạn có thể thêm các cấu hình vào java_toolchain.javacopts
.
Ví dụ:
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",
]
)
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
data
|
Danh sách nhãn; mặc định là |
javacopts
|
Danh sách chuỗi; giá trị mặc định là |
output_licenses
|
Danh sách chuỗi; giá trị mặc định là |
packages
|
Danh sách nhãn; mặc định là package_group sẽ áp dụng cấu hình.
|
java_plugin
Xem nguồn quy tắcjava_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_plugin
xác định các trình bổ trợ cho trình biên dịch Java do Bazel chạy. Hiện tại, loại trình bổ trợ duy nhất được hỗ trợ là trình xử lý chú giải. Quy tắc java_library
hoặc java_binary
có thể chạy các trình bổ trợ bằng cách phụ thuộc vào các trình bổ trợ đó thông qua thuộc tính plugins
. java_library
cũng có thể tự động xuất trình bổ trợ sang các thư viện phụ thuộc trực tiếp vào trình bổ trợ đó bằng cách sử dụng exported_plugins
.
Mục tiêu đầu ra ngầm ẩn
libname.jar
: Tệp lưu trữ Java.
Các đối số giống hệt với java_library
, ngoại trừ việc thêm đối số processor_class
.
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; mặc định là deps tại mục Các thuộc tính thông thường được xác định theo hầu hết các quy tắc xây dựng.
Các tệp jar được tạo theo quy tắc
Ngược lại, các mục tiêu trong thuộc tính |
srcs
|
Danh sách nhãn; mặc định là
Các tệp nguồn thuộc loại
Các tệp nguồn thuộc loại
Quy tắc: nếu quy tắc (thường là
Tệp nguồn thuộc loại Tất cả các tệp khác sẽ bị bỏ qua, miễn là có ít nhất một tệp thuộc loại tệp như mô tả ở trên. Nếu không, lỗi sẽ xảy ra.
Đối số này hầu như luôn bắt buộc, ngoại trừ trường hợp bạn chỉ định đối số |
data
|
Danh sách nhãn; mặc định là data tại mục Các thuộc tính thông thường được xác định theo hầu hết các quy tắc xây dựng.
Khi tạo |
resources
|
Danh sách nhãn; mặc định là Tài nguyên có thể là tệp nguồn hoặc tệp được tạo.
Nếu bạn chỉ định tài nguyên, chúng sẽ được nhóm trong tệp jar cùng với các tệp |
add_exports
|
Danh sách chuỗi; giá trị mặc định là module hoặc package đã cho.
Điều này tương ứng với các cờ javac và JVM --add-exports=. |
add_opens
|
Danh sách chuỗi; giá trị mặc định là module hoặc package đã cho.
Điều này tương ứng với các cờ javac và JVM --add-opens=. |
bootclasspath
|
Nhãn; mặc định là |
generates_api
|
Boolean; mặc định là Nếu một quy tắc sử dụng trình xử lý chú giải đang tạo API, thì các quy tắc khác tuỳ thuộc vào trình xử lý đó chỉ có thể tham chiếu đến mã đã tạo nếu các thao tác biên dịch của các quy tắc đó được lên lịch sau quy tắc tạo. Thuộc tính này hướng dẫn Bazel giới thiệu các quy tắc ràng buộc về việc lập lịch khi bật--java_header_compilation. CẢNH BÁO: Thuộc tính này ảnh hưởng đến hiệu suất của bản dựng, bạn chỉ nên sử dụng thuộc tính này nếu cần. |
javabuilder_jvm_flags
|
Danh sách chuỗi; giá trị mặc định là |
javacopts
|
Danh sách chuỗi; giá trị mặc định là Các tuỳ chọn của trình biên dịch này được chuyển đến javac sau các tuỳ chọn của trình biên dịch chung. |
neverlink
|
Boolean; mặc định là tools.jar cho mọi dịch vụ chạy trên JDK tiêu chuẩn.
Lưu ý rằng Nếu thư viện thời gian chạy khác với thư viện biên dịch, thì bạn phải đảm bảo rằng thư viện này chỉ khác ở những vị trí mà JLS cấm trình biên dịch cùng dòng (và thư viện đó phải áp dụng cho mọi phiên bản JLS trong tương lai). |
output_licenses
|
Danh sách chuỗi; giá trị mặc định là |
plugins
|
Danh sách nhãn; mặc định là java_plugin được chỉ định trong thuộc tính này sẽ chạy bất cứ khi nào quy tắc này được tạo. Thư viện cũng có thể kế thừa trình bổ trợ từ các phần phụ thuộc sử dụng exported_plugins . Các tài nguyên do trình bổ trợ tạo ra sẽ được đưa vào tệp kết quả của quy tắc này.
|
processor_class
|
Chuỗi; mặc định là |
proguard_specs
|
Danh sách nhãn; mặc định là android_binary nào tuỳ thuộc vào thư viện này.
Các tệp ở đây chỉ được chứa các quy tắc không thay đổi giá trị, cụ thể là -dontnote, -dontwarn, assumenosideeffects và các quy tắc bắt đầu bằng -keep. Các tuỳ chọn khác chỉ có thể xuất hiện trong proguard_specs của android_binary để đảm bảo việc hợp nhất phi tự động học.
|
resource_strip_prefix
|
Chuỗi; mặc định là
Nếu được chỉ định, tiền tố đường dẫn này sẽ bị xoá khỏi mọi tệp trong thuộc tính |
java_runtime
Xem nguồn quy tắcjava_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, exec_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)
Chỉ định cấu hình cho một môi trường thời gian chạy Java.
Ví dụ:
java_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
srcs
|
Danh sách nhãn; mặc định là |
default_cds
|
Nhãn; mặc định là java_runtime ẩn danh. Khi tính năng Hermetic được bật cho một mục tiêu java_binary và nếu mục tiêu không cung cấp kho lưu trữ CDS riêng bằng cách chỉ định thuộc tính classlist , thì CDS mặc định java_runtime sẽ được đóng gói trong tệp JAR triển khai khép kín.
|
hermetic_srcs
|
Danh sách nhãn; mặc định là |
hermetic_static_libs
|
Danh sách nhãn; mặc định là |
java
|
Nhãn; mặc định là |
java_home
|
Chuỗi; mặc định là srcs và java phải để trống.
|
lib_ct_sym
|
Nhãn; mặc định là --release . Nếu bạn không chỉ định và có đúng một tệp trong srcs có đường dẫn kết thúc bằng /lib/ct.sym , thì tệp đó sẽ được sử dụng.
|
lib_modules
|
Nhãn; mặc định là |
output_licenses
|
Danh sách chuỗi; giá trị mặc định là |
version
|
Số nguyên; giá trị mặc định là Runtime.version().feature() trả về.
|
java_toolchain
Xem nguồn quy tắcjava_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_javacopts, compatible_with, deprecation, deps_checker, distribs, exec_compatible_with, exec_properties, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_builtin_processors, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_cancellation, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jspecify_implicit_deps, jspecify_javacopts, jspecify_packages, jspecify_processor, jspecify_processor_class, jspecify_stubs, jvm_opts, licenses, misc, oneversion, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, proguard_allowlister, reduced_classpath_incompatible_processors, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, toolchains, tools, turbine_data, turbine_jvm_opts, visibility, xlint)
Chỉ định cấu hình cho trình biên dịch Java. Bạn có thể thay đổi chuỗi công cụ nào được sử dụng thông qua đối số --java_toolchain. Thông thường, bạn không nên viết các loại quy tắc đó trừ phi bạn muốn điều chỉnh trình biên dịch Java.
Ví dụ
Ví dụ đơn giản:
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",
)
Đối số
Thuộc tính | |
---|---|
name |
Tên; bắt buộc Tên duy nhất cho mục tiêu này. |
android_lint_data
|
Danh sách nhãn; mặc định là |
android_lint_jvm_opts
|
Danh sách chuỗi; giá trị mặc định là |
android_lint_opts
|
Danh sách chuỗi; giá trị mặc định là |
android_lint_package_configuration
|
Danh sách nhãn; mặc định là |
android_lint_runner
|
Nhãn; mặc định là |
bootclasspath
|
Danh sách nhãn; mặc định là |
compatible_javacopts
|
null; default is |
deps_checker
|
Nhãn; mặc định là |
forcibly_disable_header_compilation
|
Boolean; mặc định là |
genclass
|
Nhãn; mặc định là |
header_compiler
|
Nhãn; mặc định là |
header_compiler_builtin_processors
|
Danh sách chuỗi; giá trị mặc định là |
header_compiler_direct
|
Nhãn; mặc định là Công cụ này không hỗ trợ xử lý chú giải. |
ijar
|
Nhãn; mặc định là |
jacocorunner
|
Nhãn; mặc định là |
java_runtime
|
Nhãn; mặc định là |
javabuilder
|
Nhãn; mặc định là |
javabuilder_data
|
Danh sách nhãn; mặc định là |
javabuilder_jvm_opts
|
Danh sách chuỗi; giá trị mặc định là |
javac_supports_multiplex_workers
|
Boolean; mặc định là |
javac_supports_worker_cancellation
|
Boolean; mặc định là |
javac_supports_worker_multiplex_sandboxing
|
Boolean; mặc định là |
javac_supports_workers
|
Boolean; mặc định là |
javacopts
|
Danh sách chuỗi; giá trị mặc định là |
jspecify_implicit_deps
|
Nhãn; mặc định là |
jspecify_javacopts
|
Danh sách chuỗi; giá trị mặc định là |
jspecify_packages
|
Danh sách nhãn; mặc định là |
jspecify_processor
|
Nhãn; mặc định là |
jspecify_processor_class
|
Chuỗi; mặc định là |
jspecify_stubs
|
Danh sách nhãn; mặc định là |
jvm_opts
|
Danh sách chuỗi; giá trị mặc định là |
misc
|
Danh sách chuỗi; giá trị mặc định là |
oneversion
|
Nhãn; mặc định là |
oneversion_allowlist_for_tests
|
Nhãn; mặc định là |
oneversion_whitelist
|
Nhãn; mặc định là |
package_configuration
|
Danh sách nhãn; mặc định là |
proguard_allowlister
|
Nhãn; mặc định là |
reduced_classpath_incompatible_processors
|
Danh sách chuỗi; giá trị mặc định là |
singlejar
|
Nhãn; mặc định là |
source_version
|
Chuỗi; mặc định là |
target_version
|
Chuỗi; mặc định là |
timezone_data
|
Nhãn; mặc định là |
tools
|
Danh sách nhãn; mặc định là |
turbine_data
|
Danh sách nhãn; mặc định là |
turbine_jvm_opts
|
Danh sách chuỗi; giá trị mặc định là |
xlint
|
Danh sách chuỗi; giá trị mặc định là |