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
- Chuỗi java_tool
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)
Tạo một kho lưu trữ Java ("tệp jar") cộng với một tập lệnh bao bọc môi trường shell có cùng tên với quy tắc. Tập lệnh wrapper shell sử dụng một đường dẫn lớp, ngoài ra còn có một tệp jar cho mỗi thư viện mà tệp nhị phân phụ thuộc.
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 cờ và biến môi trường có thể định cấu hình đượ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
: Một tệp lưu trữ chứa các nguồn ("jar nguồn").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).Việc tạo mục tiêu
<name>_deploy.jar
cho quy tắc sẽ tạo một tệp jar độc lập có tệp kê khai cho phép tệp này chạy bằng lệnhjava -jar
hoặc với tuỳ chọn--singlejar
của tập lệnh trình bao bọc. Ưu tiên sử dụng tập lệnh trình bao bọc chojava -jar
vì tập lệnh này cũng chuyển cờ JVM và các tuỳ chọn để tải thư viện gốc.Lọ triển khai chứa tất cả các lớp mà một trình tải lớp sẽ tìm kiếm trên classpath từ tập lệnh trì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 cho phần phụ thuộc. Các tệp này sẽ tự động được tải vào JVM trong thời gian chạy.
Nếu mục tiêu của bạn chỉ định thuộc tính launcher, 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. Thao tác 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, tất cả đều được liên kết trong 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ả mã thực thi và Java. Bạn có thể thực thi tệp jar trực tiếp như khi thực thi bất kỳ tệp nhị phân gốc nào.
name_deploy-src.jar
: Một tệp lưu trữ chứa các nguồn được thu thập từ quá trình đóng mục tiêu. Các lớp 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 được phép dùng thuộc tính deps
trong quy tắc java_binary
khi không có srcs
. Quy tắc đó yêu cầu phải có main_class
trong runtime_deps
.
Đoạn mã sau minh hoạ 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àm đ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 gọi là Main.java , thì tên của bạn có thể là Main .
|
deps
|
deps tại các thuộc tính tiêu biểu được quy định trong hầu hết các quy tắc tạo bản 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 bắt buộc, ngoại trừ trường hợp thuộc tính |
resources
|
Nếu bạn chỉ định tài nguyên, các tài nguyên đó sẽ được nhóm trong bình 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 các tài nguyên phải nằm ở gốc 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 bên thứ ba đòi hỏi phải tìm thấy tài nguyên trên đường dẫn lớp dưới dạng chính xác là |
create_executable
|
launcher hoặc main_class .
|
deploy_env
|
java_binary khác đại diện cho môi trường triển khai 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 java_binary khác sẽ tải.Việc thiết lập 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à jar 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
|
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 được thay thế "Make variable" (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 trình biên dịch chung. |
jvm_flags
|
Tập lệnh trình bao bọc cho tệp nhị phân Java bao gồm một đị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 được tạo bởi tập lệnh trình bao bọc 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
|
bin/java thông thường trong JDK.
Mục tiêu phải là cc_binary . Bạn có thể chỉ định bất kỳ cc_binary nào 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 khởi chạy JDK thông thường (bin/java hoặc java.exe). Cờ Bazel liên quan đến 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 trình chạy khác:
Khi sử dụng bất kỳ trình chạy nào khác ngoài trình chạy JDK mặc định, định dạng của đầu ra |
main_class
|
main() để dùng làm điểm truy cập.
Nếu một quy tắc sử dụng tùy chọn này, thì sẽ không cần danh sách srcs=[...] cho quy tắc đó.
Do đó, với thuộc tính này, bạn có thể tạo một 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à một tên lớp, không phải tệp nguồn. Lớp này phải có sẵn trong thời gian chạy: 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 mỗi khi quy tắc này được tạo. Thư viện cũng có thể kế thừa các 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 jar 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ị xóa khỏi mọi tệp trong thuộc tính |
runtime_deps
|
deps thông thường, các tệp này sẽ xuất hiện trên classpath thời gian chạy nhưng không giống như trên classpath thời gian biên dịch. Bạn chỉ cần liệt kê các phần phụ thuộc cần thiết trong thời gian chạy 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
|
Các tệp nhị phân có nhãn đóng góp không được tạo lại trừ phi các phần phụ thuộc thay đổi. |
use_launcher
|
Nếu thuộc tính này được đặt thành false, thuộc tính launcher và cờ |
use_testrunner
|
com.google.testing.junit.runner.BazelTestRunner ) làm điểm truy cập chính cho một chương trình Java, đồng thời cung cấp lớp kiểm thử cho trình chạy kiểm thử dưới dạng 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, đó là sử dụng trình chạy kiểm thử cho các quy tắc java_test và không sử dụng trình chạy này cho các quy tắc java_binary . Chắc chắn bạn sẽ không muốn làm điều này. Một trường hợp sử dụng là quy tắc AllTest được gọi bằng 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ử). Quy tắc AllTest phải được khai báo 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 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, 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 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 duy nhất cho mục tiêu này. |
deps
|
|
constraints
|
|
exports
|
|
jars
|
|
neverlink
|
tools.jar cho mọi trình 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 trong thư mục này chỉ được chứa các quy tắc cố định, chẳng hạn như -dontnote, -dontwarn, giả định không có tác dụng 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 thông số proguard_specs của android_binary để đảm bảo việc hợp nhất không tự động.
|
runtime_deps
|
|
srcjar
|
|
thư viện java
Xem nguồn quy tắcjava_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 vào một tệp .jar
.
Mục tiêu đầu ra ngầm ẩn
libname.jar
: Một kho lưu trữ Java chứa các tệp của lớp.libname-src.jar
: Một tệp lưu trữ chứa các nguồn ("jar nguồn").
Đố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 tiêu biểu được quy định trong hầu hết các quy tắc tạo bản dựng.
Các tệp jar do các quy tắc
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 bắt buộc, ngoại trừ trường hợp thuộc tính |
data
|
data tại các thuộc tính tiêu biểu được quy định trong hầu hết các quy tắc tạo bản dựng.
Khi xây dựng |
resources
|
Nếu bạn chỉ định tài nguyên, các tài nguyên đó sẽ được nhóm trong bình 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. |
exported_plugins
|
java_plugin (ví dụ: trình xử lý chú giải) để xuất vào các thư viện phụ thuộc trực tiếp vào thư viện này.
Danh sách |
exports
|
Các quy tắc liệt kê tại đây sẽ cung cấp cho các quy tắc mẹ, như thể rõ ràng cha mẹ 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: Một quy tắc X có thể truy cập vào mã trong Y nếu có đường dẫn phần phụ thuộc giữa các đường dẫn 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 mang tính 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ẽ
xây dựng 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 điều đó, A phải khai báo C trong Tất cả quy tắc gốc trực tiếp có thể đóng các thư viện đã xuất. 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, đồng thời cũng xuất C nhưng không phụ thuộc 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. Bây giờ, nếu C và D xuất một số thư viện tương ứng là C và D thì A chỉ có thể truy cập vào C, chứ không phải D'.
Quan trọng: quy tắc đã xuất không phải là phần phụ thuộc thông thường. Tiếp tục với ví dụ trước, nếu B xuất C và cũng muốn sử dụng C, thì cũng phải liệt kê trong 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 trình biên dịch chung. |
neverlink
|
tools.jar cho mọi trình chạy trên JDK tiêu chuẩn.
Xin 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 này chỉ khác ở những nơi mà JLS cấm trình biên dịch nội tuyến (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 mỗi khi quy tắc này được tạo. Thư viện cũng có thể kế thừa các 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 jar 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 trong thư mục này chỉ được chứa các quy tắc cố định, chẳng hạn như -dontnote, -dontwarn, giả định không có tác dụng 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 thông số proguard_specs của android_binary để đảm bảo việc 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ị xóa khỏi mọi tệp trong thuộc tính |
runtime_deps
|
deps thông thường, các tệp này sẽ xuất hiện trên classpath thời gian chạy nhưng không giống như trên classpath thời gian biên dịch. Bạn chỉ cần liệt kê các phần phụ thuộc cần thiết trong thời gian chạy 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
Xem nguồn quy tắcjava_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ừ .proto
tệp.
deps
phải trỏ đến proto_library
quy tắc.
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
Xem nguồn quy tắcjava_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ừ .proto
tệp.
deps
phải trỏ đến proto_library
quy tắc.
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 [kiểm_tra_java]
Xem nguồn quy tắcjava_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 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.
Mục tiêu đầu ra ngầm ẩn
name.jar
: Một kho 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ề kết quảname_deploy.jar
từ java_binary để biết thêm thông tin chi tiết.
Xem phần về đối số java_binary(). Quy tắc này cũng hỗ trợ tất cả cá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 duy nhất cho mục tiêu này. |
deps
|
deps tại các thuộc tính tiêu biểu được quy định trong hầu hết các quy tắc tạo bản 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 bắt buộc, ngoại trừ trường hợp thuộc tính |
resources
|
Nếu bạn chỉ định tài nguyên, các tài nguyên đó sẽ được nhóm trong bình 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 các tài nguyên phải nằm ở gốc 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 bên thứ ba đòi hỏi phải tìm thấy tài nguyên trên đường dẫn lớp dưới dạng 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 được thay thế "Make variable" (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 trình biên dịch chung. |
jvm_flags
|
Tập lệnh trình bao bọc cho tệp nhị phân Java bao gồm một đị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 được tạo bởi tập lệnh trình bao bọc 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
|
bin/java thông thường trong JDK.
Mục tiêu phải là cc_binary . Bạn có thể chỉ định bất kỳ cc_binary nào 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 khởi chạy JDK thông thường (bin/java hoặc java.exe). Cờ Bazel liên quan đến 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 trình chạy khác:
Khi sử dụng bất kỳ trình chạy nào khác ngoài trình chạy JDK mặc định, định dạng của đầu ra |
main_class
|
main() để dùng làm điểm truy cập.
Nếu một quy tắc sử dụng tùy chọn này, thì sẽ không cần danh sách srcs=[...] cho quy tắc đó.
Do đó, với thuộc tính này, bạn có thể tạo một 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à một tên lớp, không phải tệp nguồn. Lớp này phải có sẵn trong thời gian chạy: 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 mỗi khi quy tắc này được tạo. Thư viện cũng có thể kế thừa các 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 jar 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ị xóa khỏi mọi tệp trong thuộc tính |
runtime_deps
|
deps thông thường, các tệp này sẽ xuất hiện trên classpath thời gian chạy nhưng không giống như trên classpath thời gian biên dịch. Bạn chỉ cần liệt kê các phần phụ thuộc cần thiết trong thời gian chạy 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
|
Các tệp nhị phân có nhãn đóng góp không được tạo lại trừ phi các phần phụ thuộc 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à đối số kiểm thử sẽ được sử dụng. Đặt cờ
Thuộc tính này chỉ định tên của một lớp Java sẽ được chạy trong quy trình kiểm thử này. Hiếm khi cần đặt giá trị này. Nếu đối số này bị bỏ qua, đối số này sẽ được suy luận bằng cách sử dụng
Đối với JUnit3, lớp kiểm thử 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
|
Nếu thuộc tính này được đặt thành false, thuộc tính launcher và cờ |
use_testrunner
|
com.google.testing.junit.runner.BazelTestRunner ) làm điểm truy cập chính cho một chương trình Java, đồng thời cung cấp lớp kiểm thử cho trình chạy kiểm thử dưới dạng 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, đó là sử dụng trình chạy kiểm thử cho các quy tắc java_test và không sử dụng trình chạy này cho các quy tắc java_binary . Chắc chắn bạn sẽ không muốn làm điều này. Một trường hợp sử dụng là quy tắc AllTest được gọi bằng 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ử). Quy tắc AllTest phải được khai báo 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 chạy kiểm thử bằng thuộc tính main_class .
|
cấu_hình_gói_java
Xem nguồn quy tắcjava_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 nhóm gói.
Bạn có thể thêm 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 duy nhất cho mục tiêu này. |
data
|
|
javacopts
|
|
packages
|
package_group
nên áp dụng cấu hình.
|
java_plugin (plugin_java)
Xem nguồn quy tắcjava_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ợ 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 trình bổ trợ bằng cách tuỳ thuộc vào chúng thông qua thuộc tính plugins
. Một 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 thư viện đó bằng exported_plugins
.
Mục tiêu đầu ra ngầm ẩn
libname.jar
: Một kho 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 duy nhất cho mục tiêu này. |
deps
|
deps tại các thuộc tính tiêu biểu được quy định trong hầu hết các quy tắc tạo bản dựng.
Các tệp jar do các quy tắc
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 bắt buộc, ngoại trừ trường hợp thuộc tính |
data
|
data tại các thuộc tính tiêu biểu được quy định trong hầu hết các quy tắc tạo bản dựng.
Khi xây dựng |
resources
|
Nếu bạn chỉ định tài nguyên, các tài nguyên đó sẽ được nhóm trong bình 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. |
generates_api
|
Nếu một quy tắc sử dụng trình xử lý chú giải tạo API, thì các quy tắc khác tuỳ thuộc vào quy tắc đó chỉ có thể tham chiếu đến mã đã tạo nếu hành động 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 chỉ dẫn Bazel đưa ra các giới hạn về lập lịch biểu 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, 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 trình biên dịch chung. |
neverlink
|
tools.jar cho mọi trình chạy trên JDK tiêu chuẩn.
Xin 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 này chỉ khác ở những nơi mà JLS cấm trình biên dịch nội tuyến (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 mỗi khi quy tắc này được tạo. Thư viện cũng có thể kế thừa các 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 jar 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 trong thư mục này chỉ được chứa các quy tắc cố định, chẳng hạn như -dontnote, -dontwarn, giả định không có tác dụng 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 thông số proguard_specs của android_binary để đảm bảo việc 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ị xóa khỏi mọi tệp trong thuộc tính |
java_runtime (thời gian chạy java)
Xem nguồn quy tắcjava_runtime(name, srcs, compatible_with, default_cds, 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 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
|
|
default_cds
|
java_runtime khép kín. Khi 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 của riêng mình 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 hermetic.
|
hermetic_srcs
|
|
java
|
|
java_home
|
srcs và java phải trống.
|
lib_modules
|
|
version
|
Runtime.version().feature() trả về.
|
chuỗi công cụ java
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_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ụ đượ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ụ
Một ví dụ đơn giản sẽ là:
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
|
|