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
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)
Tạo một 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 đường dẫn lớp, trong đó có một tệp jar cho mỗi đường dẫn thư viện mà tệp nhị phân phụ thuộc vào.
Tập lệnh trình bao bọc chấp nhận một số cờ duy nhất. 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ó thể định cấu hình và biến môi trường được trình bao bọc chấp nhận.
Các 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 dữ liệu 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 ("nguồn cái lọ").name_deploy.jar
: Lưu trữ Java phù hợp để triển khai (chỉ được tạo nếu có yêu cầu rõ ràng).Tạo mục tiêu
<name>_deploy.jar
cho quy tắc của bạn tạo một tệp jar độc lập với một tệp kê khai cho phép tệp này chạy bằng Lệnhjava -jar
hoặc với--singlejar
của tập lệnh trình bao bọc . Bạn nên ưu tiên sử dụng tập lệnh trình bao bọc hơn làjava -jar
vì tập lệnh này cũng truyền cờ JVM và các tuỳ 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 sẽ tìm thấy đã tìm đường dẫn lớp trong tập lệnh trình bao bọc của tệp nhị phân từ đầu đến cuối. Điều 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 thông báo này được tải tự động vào JVM trong thời gian chạy.
Nếu mục tiêu của bạn chỉ định một trình chạy , thì thay vì là một tệp JAR thông thường, _Deploy.jar sẽ là một tệp nhị phân gốc. Đối tượng 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 thành tệp nhị phân tĩnh. Các byte của tệp jar thực tế sẽ là được thêm vào tệp nhị phân gốc đó, tạo ra một blob nhị phân chứa cả tệp thực thi và mã Java. Bạn có thể trực tiếp thực thi tệp jar thu được giống như cách 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ừ quá trình đóng bắc cầu của mục tiêu. Các URL 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ó tệp nguồn phù hợp.
Không cho phép sử dụng thuộc tính deps
trong quy tắc java_binary
khi không có
srcs
; một quy tắc như vậy đòi hỏi bạn
main_class
được cung cấp bởi
runtime_deps
Đoạn mã sau 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 làm như sau:
java_binary( name = "DoThisInstead", srcs = [ ..., ":generating_rule", ], )
Đối số
Thuộc tính | |
---|---|
name |
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à điểm truy cập chính của ứng dụng (trừ phần mở rộng). Ví dụ: nếu điểm truy cập của bạn được gọi Main.java , thì tên của bạn có thể là Main .
|
deps
|
deps tại
Các thuộc tính điển hình được xác định bởi
hầu hết các quy tắc xây dựng.
|
srcs
|
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 được yêu cầu, ngoại trừ khi một
Thuộc tính |
resources
|
Nếu các tài nguyên được chỉ định, chúng sẽ được nhóm trong bình cùng với các tài nguyên thông thường
Tài nguyên có thể là tệp nguồn hoặc tệp đã tạo. |
classpath_resources
|
Danh sách các tài nguyên phải được đặt ở gốc của cây java. Thuộc tính này
có mục đích duy nhất là hỗ trợ các thư viện của bên thứ ba
yêu cầu tài nguyên của họ
được tìm thấy trên đường dẫn lớp chính xác là |
create_executable
|
launcher hoặc main_class
.
|
deploy_env
|
java_binary khác đại diện cho việc triển khai
môi trường cho 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 trình bổ trợ khác sẽ tải
java_binary .Việc đặt thuộc tính này sẽ loại trừ tất cả phần phụ thuộc khỏi đường dẫn lớp thời gian chạy (và ngăn triển khai) của tệp nhị phân được chia sẻ giữa tệp nhị phân và các mục tiêu được chỉ định trong deploy_env .
|
deploy_manifest_lines
|
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 phải là chủ đề
thành phép thế "Tạo biến".
|
javacopts
|
Các tuỳ chọn 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
|
Tập lệnh trình bao bọc cho một 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 trình bao bọc tạo ra 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 |
launcher
|
bin/java thông thường đi kèm với JDK.
Mục tiêu phải là cc_binary . Mọi cc_binary mà
triển khai
Bạn có thể chỉ định 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 Lưu ý rằng các phần phụ thuộc gốc (C++, SWIG, JNI) sẽ được xây dựng 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 trình chạy khác:
Khi sử dụng bất kỳ trình chạy nào khác không phải trình chạy JDK mặc định, định dạng
của |
main_class
|
main() dùng làm điểm truy cập.
Nếu một quy tắc sử dụng chế độ 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ừ mộ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: nội dung có thể được biên dịch theo quy tắc này (từ |
plugins
|
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
sẽ được xây dựng. 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 . Tài liệu tham khảo
do trình bổ trợ tạo ra sẽ được đưa vào ngăn chứa kết quả của quy tắc này.
|
resource_jars
|
|
resource_strip_prefix
|
Nếu được chỉ định, tiền tố đường dẫn này sẽ bị xoá khỏi mọi tệp trong |
runtime_deps
|
deps thông thường, các thành phần này sẽ xuất hiện trên đường dẫn lớp thời gian chạy, nhưng không giống như
chúng, chứ không phải trên đường dẫn lớp thời gian biên dịch. Các phần phụ thuộc chỉ cần đến trong thời gian chạy phải là
được liệt kê tại đâ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
|
Tệp nhị phân đã đóng dấu không được tạo lại trừ phi các phần phụ thuộc của chúng thay đổi. |
use_launcher
|
Nếu bạn đặt thuộc tính này thành false, thì
trình chạy và thuộc tính có liên quan
Cờ |
use_testrunner
|
com.google.testing.junit.runner.BazelTestRunner ) làm lớp
điểm truy cập chính cho chương trình Java và cung cấp lớp kiểm thử
vào trình chạy kiểm thử dưới dạng giá trị bazel.test_suite
thuộc tính hệ thống của chúng tôi.
Bạn có thể sử dụng tuỳ chọn này để ghi đè giá trị mặc định
tức là sử dụng trình chạy kiểm thử cho
java_test quy tắc,
và không sử dụng dữ liệu này cho các quy tắc java_binary . Không có khả năng
bạn sẽ muốn làm việc này. Một mục dùng cho AllTest
các quy tắc được gọi bởi một quy tắc khác (để thiết lập cơ sở dữ liệu
trước khi chạy thử nghiệm). AllTest
quy tắc phải được khai báo là java_binary , nhưng phải
vẫ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 một lớp trình chạy kiểm thử bằng thuộc tính main_class .
|
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)
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
các thư viện cho java_library
và
java_binary
quy tắc.
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 duy nhất cho mục tiêu này. |
deps
|
|
constraints
|
|
exports
|
|
jars
|
|
neverlink
|
tools.jar cho bất kỳ trình bổ trợ nào đang chạy trên
JDK chuẩn.
|
proguard_specs
|
android_binary nào tuỳ thuộc vào thư viện này.
Các tệp được đưa vào đây chỉ được có các quy tắc không thay đổi giá trị như -dontnote, -dontwarn,
giả định tác dụng không mong muốn và các quy tắc bắt đầu bằng -keep. Các lựa chọn khác chỉ có thể xuất hiện trong
proguard_specs của android_binary để đảm bảo hợp nhất không tự động.
|
runtime_deps
|
|
srcjar
|
|
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)
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
.
Các mục tiêu đầu ra ngầm ẩn
libname.jar
: Một 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 ("nguồn cái lọ").
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
deps tại
Các thuộc tính điển hình được xác định bởi
hầu hết các quy tắc xây dựng.
Các lọ tạo bằng
Ngược lại, các mục tiêu trong thuộc tính |
srcs
|
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 được yêu cầu, ngoại trừ khi một
Thuộc tính |
data
|
data tại
Các thuộc tính điển hình được xác định bởi
hầu hết các quy tắc xây dựng.
Khi tạo |
resources
|
Nếu các tài nguyên được chỉ định, chúng sẽ được nhóm trong bình cùng với các tài nguyên thông thường
Tài nguyên có thể là tệp nguồn hoặc tệp đã tạo. |
exported_plugins
|
java_plugin (ví dụ: chú giải
bộ xử lý) để 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
|
Quy tắc liệt kê ở đây sẽ áp dụng cho quy tắc gốc, như thể nhà xuất bản mẹ một cách rõ ràng
phụ thuộc vào các quy tắc này. Điều này không đúng với
Tóm tắt: quy tắc X có thể truy cập vào mã trong Y nếu có phần phụ thuộc
đường dẫn giữa chúng 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à xây dựng 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
rằng A phải khai báo C trong Tất cả quy tắc gốc trực tiếp đều áp dụng thao tác đóng thư viện đã xuất. Hãy bình tĩnh một chút ví dụ khác nhau: A phụ thuộc vào B, B phụ thuộc vào C và D, đồng thời xuất ra C nhưng không xuất ra 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. Nếu C và D xuất một số thư viện, thì C' và D' A chỉ có thể truy cập C' nhưng không phải D'.
Lưu ý quan trọng: quy tắc được xuất không phải là phần phụ thuộc thông thường. Bám sát ví dụ trước,
nếu B xuất khẩu C và cũng muốn sử dụng C, thì B phải liệt kê riêng C
|
javacopts
|
Các tuỳ chọn 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
|
tools.jar cho bất kỳ nội dung nào
đang chạy trên JDK 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, bạn phải đảm bảo rằng thư viện đó chỉ khác ở những vị trí mà JLS cấm trình biên dịch cùng dòng (và phải giữ cho tất cả các phiên bản trong tương lai của JLS). |
plugins
|
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
sẽ được xây dựng. 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 . Tài liệu tham khảo
do trình bổ trợ tạo ra sẽ được đưa vào ngăn chứa kết quả của quy tắc này.
|
proguard_specs
|
android_binary nào tuỳ thuộc vào thư viện này.
Các tệp được đưa vào đây chỉ được có các quy tắc không thay đổi giá trị như -dontnote, -dontwarn,
giả định tác dụng không mong muốn và các quy tắc bắt đầu bằng -keep. Các lựa chọn khác chỉ có thể xuất hiện trong
proguard_specs của android_binary để đảm bảo hợp nhất không tự động.
|
resource_jars
|
|
resource_strip_prefix
|
Nếu được chỉ định, tiền tố đường dẫn này sẽ bị xoá khỏi mọi tệp trong |
runtime_deps
|
deps thông thường, các thành phần này sẽ xuất hiện trên đường dẫn lớp thời gian chạy, nhưng không giống như
chúng, chứ không phải trên đường dẫn lớp thời gian biên dịch. Các phần phụ thuộc chỉ cần đến trong thời gian chạy phải là
được liệt kê tại đâ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
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
tạo mã Java từ các tệp .proto
.
deps
phải trỏ đến các quy tắc proto_library
.
Ví dụ:
java_library( name = "lib", deps = [":foo"], ) java_lite_proto_library( name = "foo", deps = [":bar"], ) proto_library( name = "bar", )
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
proto_library
để tạo mã Java.
|
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
tạo mã Java từ các tệp .proto
.
deps
phải trỏ đến các quy tắc proto_library
.
Ví dụ:
java_library( name = "lib", 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 duy nhất cho mục tiêu này. |
deps
|
proto_library
để tạo mã Java.
|
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)
Quy tắc java_test()
biên dịch một chương trình 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 được biên dịch.
Các mục tiêu đầu ra ngầm ẩn
name.jar
: Một tệp lưu trữ Java.name_deploy.jar
: Phù hợp với tệp lưu trữ Java cho việc triển khai. (Chỉ được tạo khi có yêu cầu rõ ràng.) Xem nội dung mô tả về Đầu raname_deploy.jar
từ java_binary để biết thêm chi tiết.
Xem phần về đối số java_binary(). Quy tắc này cũng hỗ trợ tất cả thuộc tính phổ biến 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 duy nhất cho mục tiêu này. |
deps
|
deps tại
Các thuộc tính điển hình được xác định bởi
hầu hết các quy tắc xây dựng.
|
srcs
|
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 được yêu cầu, ngoại trừ khi một
Thuộc tính |
resources
|
Nếu các tài nguyên được chỉ định, chúng sẽ được nhóm trong bình cùng với các tài nguyên thông thường
Tài nguyên có thể là tệp nguồn hoặc tệp đã tạo. |
classpath_resources
|
Danh sách các tài nguyên phải được đặt ở gốc của cây java. Thuộc tính này
có mục đích duy nhất là hỗ trợ các thư viện của bên thứ ba
yêu cầu tài nguyên của họ
được tìm thấy trên đường dẫn lớp chính xác là |
create_executable
|
launcher hoặc main_class
.
|
deploy_manifest_lines
|
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 phải là chủ đề
thành phép thế "Tạo biến".
|
javacopts
|
Các tuỳ chọn 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
|
Tập lệnh trình bao bọc cho một 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 trình bao bọc tạo ra 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 |
launcher
|
bin/java thông thường đi kèm với JDK.
Mục tiêu phải là cc_binary . Mọi cc_binary mà
triển khai
Bạn có thể chỉ định 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 Lưu ý rằng các phần phụ thuộc gốc (C++, SWIG, JNI) sẽ được xây dựng 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 trình chạy khác:
Khi sử dụng bất kỳ trình chạy nào khác không phải trình chạy JDK mặc định, định dạng
của |
main_class
|
main() dùng làm điểm truy cập.
Nếu một quy tắc sử dụng chế độ 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ừ mộ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: nội dung có thể được biên dịch theo quy tắc này (từ |
plugins
|
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
sẽ được xây dựng. 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 . Tài liệu tham khảo
do trình bổ trợ tạo ra sẽ được đưa vào ngăn chứa kết quả của quy tắc này.
|
resource_jars
|
|
resource_strip_prefix
|
Nếu được chỉ định, tiền tố đường dẫn này sẽ bị xoá khỏi mọi tệp trong |
runtime_deps
|
deps thông thường, các thành phần này sẽ xuất hiện trên đường dẫn lớp thời gian chạy, nhưng không giống như
chúng, chứ không phải trên đường dẫn lớp thời gian biên dịch. Các phần phụ thuộc chỉ cần đến trong thời gian chạy phải là
được liệt kê tại đâ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
|
Tệp nhị phân đã đóng dấu không được tạo lại trừ phi các phần phụ thuộc của chúng thay đổi. |
test_class
|
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à
thay thế cho đối số kiểm thử. Đặt cờ
Thuộc tính này chỉ định tên của lớp Java sẽ được chạy
kiểm tra này. Việc thiết lập chế độ này hiếm khi xảy ra. Nếu đối số này bị bỏ qua,
giá trị 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 vài quy tắc |
use_launcher
|
Nếu bạn đặt thuộc tính này thành false, thì
trình chạy và thuộc tính có liên quan
Cờ |
use_testrunner
|
com.google.testing.junit.runner.BazelTestRunner ) làm lớp
điểm truy cập chính cho chương trình Java và cung cấp lớp kiểm thử
vào trình chạy kiểm thử dưới dạng giá trị bazel.test_suite
thuộc tính hệ thống của chúng tôi.
Bạn có thể sử dụng tuỳ chọn này để ghi đè giá trị mặc định
tức là sử dụng trình chạy kiểm thử cho
java_test quy tắc,
và không sử dụng dữ liệu này cho các quy tắc java_binary . Không có khả năng
bạn sẽ muốn làm việc này. Một mục dùng cho AllTest
các quy tắc được gọi bởi một quy tắc khác (để thiết lập cơ sở dữ liệu
trước khi chạy thử nghiệm). AllTest
quy tắc phải được khai báo là java_binary , nhưng phải
vẫ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 một lớp trình chạy kiểm thử bằng thuộc tính main_class .
|
java_package_configuration
java_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, visibility)
Cấu hình để áp dụng cho một tập hợp các gói.
Có thể thêm cấu hình vào
java_toolchain.javacopts
giây.
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 duy nhất cho mục tiêu này. |
data
|
|
javacopts
|
|
packages
|
package_group
cấu hình sẽ được áp dụng.
|
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
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ợ chỉ được hỗ trợ là trình xử lý chú giải. java_library
hoặc
Quy tắ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 plugins
. java_library
cũng có thể tự động xuất các trình bổ trợ sang các thư viện
phụ thuộc trực tiếp vào công cụ này bằng cách sử dụng
exported_plugins
Các mục tiêu đầu ra ngầm ẩn
libname.jar
: Một tệp lưu trữ Java.
Đối số giống với java_library
, ngoại trừ
để thêm đối số processor_class
.
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
deps tại
Các thuộc tính điển hình được xác định bởi
hầu hết các quy tắc xây dựng.
Các lọ tạo bằng
Ngược lại, các mục tiêu trong thuộc tính |
srcs
|
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 được yêu cầu, ngoại trừ khi một
Thuộc tính |
data
|
data tại
Các thuộc tính điển hình được xác định bởi
hầu hết các quy tắc xây dựng.
Khi tạo |
resources
|
Nếu các tài nguyên được chỉ định, chúng sẽ được nhóm trong bình cùng với các tài nguyên thông thường
Tài nguyên có thể là tệp nguồn hoặc tệp đã tạo. |
generates_api
|
Nếu quy tắc sử dụng trình xử lý chú giải tạo API, thì các quy tắc khác Mã này chỉ có thể tham chiếu đến mã được tạo nếu các hành động biên dịch được lên lịch sau quy tắc tạo. Chiến dịch này hướng dẫn Bazel đưa ra các hạn chế về việc lập lịch biểu khi --java_header_compilation được bật. CẢNH BÁO: Thuộc tính này ảnh hưởng đến bản dựng hiệu suất, hãy chỉ sử dụng nếu cần. |
javacopts
|
Các tuỳ chọn 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
|
tools.jar cho bất kỳ nội dung nào
đang chạy trên JDK 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, bạn phải đảm bảo rằng thư viện đó chỉ khác ở những vị trí mà JLS cấm trình biên dịch cùng dòng (và phải giữ cho tất cả các phiên bản trong tương lai của JLS). |
output_licenses
|
common attributes
|
plugins
|
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
sẽ được xây dựng. 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 . Tài liệu tham khảo
do trình bổ trợ tạo ra sẽ được đưa vào ngăn chứa kết quả của quy tắc này.
|
processor_class
|
|
proguard_specs
|
android_binary nào tuỳ thuộc vào thư viện này.
Các tệp được đưa vào đây chỉ được có các quy tắc không thay đổi giá trị như -dontnote, -dontwarn,
giả định tác dụng không mong muốn và các quy tắc bắt đầu bằng -keep. Các lựa chọn khác chỉ có thể xuất hiện trong
proguard_specs của android_binary để đảm bảo hợp nhất không tự động.
|
resource_jars
|
|
resource_strip_prefix
|
Nếu được chỉ định, tiền tố đường dẫn này sẽ bị xoá khỏi mọi tệp trong |
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, version, visibility)
Chỉ định cấu hình cho 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 duy nhất cho mục tiêu này. |
srcs
|
|
hermetic_srcs
|
|
java
|
|
java_home
|
srcs và java phải trống.
|
lib_modules
|
|
version
|
Runtime.version().feature() .
|
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)
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 đang được sử dụng đố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 tinh chỉnh trình biên dịch Java của bạn.
Ví dụ
Một 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 duy nhất cho mục tiêu này. |
android_lint_data
|
|
android_lint_jvm_opts
|
|
android_lint_opts
|
|
android_lint_package_configuration
|
|
android_lint_runner
|
|
bootclasspath
|
|
deps_checker
|
|
forcibly_disable_header_compilation
|
|
genclass
|
|
header_compiler
|
|
header_compiler_direct
|
Công cụ này không hỗ trợ xử lý chú giải. |
ijar
|
|
jacocorunner
|
|
java_runtime
|
|
javabuilder
|
|
javabuilder_data
|
|
javabuilder_jvm_opts
|
|
javac_supports_multiplex_workers
|
|
javac_supports_workers
|
|
javacopts
|
|
jvm_opts
|
|
oneversion
|
|
oneversion_whitelist
|
|
package_configuration
|
|
proguard_allowlister
|
|
resourcejar
|
|
singlejar
|
|
source_version
|
|
target_version
|
|
timezone_data
|
|
tools
|
|
turbine_data
|
|
turbine_jvm_opts
|
|
xlint
|
|