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)
Tạo một kho lưu trữ Java ("tệp jar") cùng với tập lệnh shell trình 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. Khi chạy tập lệnh shell trình bao bọc, bất kỳ tập lệnh nào không trống
Biến môi trường JAVABIN
sẽ được ưu tiên so với phiên bản đã chỉ định 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. 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; 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à đ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
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị 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 được yêu cầu, ngoại trừ khi một
Thuộc tính |
resources
|
Danh sách nhãn; giá trị mặc định là
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 nhãn; giá trị mặc định là
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
|
Boolean; không thể định cấu hình; giá trị mặc định là java_single_jar .
|
deploy_env
|
Danh sách nhãn; giá trị mặc định là 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à tệp 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
|
Danh sách các 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 phải là chủ đề
thành phép thế "Tạo biến".
|
javacopts
|
Danh sách các chuỗi; giá trị mặc định là 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
|
Danh sách các chuỗi; giá trị mặc định là 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
|
Nhãn; giá trị mặc định là 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
|
String; giá trị mặc định là 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
|
Danh sách nhãn; giá trị 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
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
|
Danh sách nhãn; giá trị mặc định là |
resource_strip_prefix
|
String; giá trị 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 |
runtime_deps
|
Danh sách nhãn; giá trị mặc định là 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
|
Số nguyên; giá trị mặc định là
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
|
Boolean; giá trị mặc định là 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
|
Boolean; giá trị mặc định là 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
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
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; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; giá trị mặc định là |
constraints
|
Danh sách các chuỗi; không thể định cấu hình; giá trị mặc định là |
exports
|
Danh sách nhãn; giá trị mặc định là |
jars
|
Danh sách nhãn; bắt buộc Danh sách tệp JAR được cung cấp cho các mục tiêu Java phụ thuộc vào mục tiêu này. |
neverlink
|
Boolean; giá trị mặc định là tools.jar cho bất kỳ trình bổ trợ nào đang chạy trên
JDK chuẩn.
|
proguard_specs
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị mặc định là |
srcjar
|
Nhãn; giá trị mặc định là |
java_library
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 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; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị 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 được yêu cầu, ngoại trừ khi một
Thuộc tính |
data
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị mặc định là
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
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị mặc định là
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 chuyển tiếp 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
|
Danh sách các chuỗi; giá trị mặc định là 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
|
Boolean; giá trị mặc định là 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
|
Danh sách nhãn; giá trị 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
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
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị mặc định là |
resource_strip_prefix
|
String; giá trị 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 |
runtime_deps
|
Danh sách nhãn; giá trị mặc định là 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
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ừ 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; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; giá trị mặc định là 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ừ 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; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; giá trị mặc định là proto_library
để tạo mã Java.
|
java_test
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 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; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị 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 được yêu cầu, ngoại trừ khi một
Thuộc tính |
resources
|
Danh sách nhãn; giá trị mặc định là
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 nhãn; giá trị mặc định là
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
|
Boolean; không thể định cấu hình; giá trị mặc định là java_single_jar .
|
deploy_manifest_lines
|
Danh sách các 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 phải là chủ đề
thành phép thế "Tạo biến".
|
javacopts
|
Danh sách các chuỗi; giá trị mặc định là 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
|
Danh sách các chuỗi; giá trị mặc định là 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
|
Nhãn; giá trị mặc định là 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
|
String; giá trị mặc định là 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
|
Danh sách nhãn; giá trị 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
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
|
Danh sách nhãn; giá trị mặc định là |
resource_strip_prefix
|
String; giá trị 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 |
runtime_deps
|
Danh sách nhãn; giá trị mặc định là 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
|
Số nguyên; giá trị mặc định là
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
|
String; giá trị 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à
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
|
Boolean; giá trị mặc định là 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
|
Boolean; giá trị mặc định là 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
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 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; bắt buộc Tên duy nhất cho mục tiêu này. |
data
|
Danh sách nhãn; giá trị mặc định là |
javacopts
|
Danh sách các chuỗi; giá trị mặc định là |
packages
|
Danh sách nhãn; giá trị mặc định là package_group
cấu hình sẽ được áp dụng.
|
java_plugin
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ợ 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; bắt buộc Tên duy nhất cho mục tiêu này. |
deps
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị 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 được yêu cầu, ngoại trừ khi một
Thuộc tính |
data
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị mặc định là
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
|
Boolean; giá trị mặc định là 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
|
Danh sách các chuỗi; giá trị mặc định là 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
|
Boolean; giá trị mặc định là 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
|
Loại giấy phép; giá trị mặc định là common attributes
|
plugins
|
Danh sách nhãn; giá trị 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
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
|
String; giá trị mặc định là |
proguard_specs
|
Danh sách nhãn; giá trị mặc định là 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
|
Danh sách nhãn; giá trị mặc định là |
resource_strip_prefix
|
String; giá trị 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 |
java_runtime
Xem nguồn quy tắcjava_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_ct_sym, 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; bắt buộc Tên duy nhất cho mục tiêu này. |
srcs
|
Danh sách nhãn; giá trị mặc định là |
default_cds
|
Nhãn; giá trị mặc định là java_runtime kín. Khi khép kín
được bật cho 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
classlist ,
đĩa CD mặc định java_runtime được đóng gói trong tệp JAR triển khai khép kín.
|
hermetic_srcs
|
Danh sách nhãn; giá trị mặc định là |
java
|
Nhãn; giá trị mặc định là |
java_home
|
String; giá trị mặc định là srcs và java phải trống.
|
lib_ct_sym
|
Nhãn; giá trị mặc định là --release . Nếu không được chỉ định và
có đúng một tệp trong srcs có đường dẫn kết thúc bằng
/lib/ct.sym , tệp đó đã được sử dụng.
|
lib_modules
|
Nhãn; giá trị mặc định là |
version
|
Số nguyên; giá trị mặc định là Runtime.version().feature() .
|
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_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_allowlist_for_tests, 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; bắt buộc Tên duy nhất cho mục tiêu này. |
android_lint_data
|
Danh sách nhãn; giá trị mặc định là |
android_lint_jvm_opts
|
Danh sách các chuỗi; giá trị mặc định là |
android_lint_opts
|
Danh sách các chuỗi; giá trị mặc định là |
android_lint_package_configuration
|
Danh sách nhãn; giá trị mặc định là |
android_lint_runner
|
Nhãn; giá trị mặc định là |
bootclasspath
|
Danh sách nhãn; giá trị mặc định là |
deps_checker
|
Danh sách nhãn; giá trị mặc định là |
forcibly_disable_header_compilation
|
Boolean; giá trị mặc định là |
genclass
|
Danh sách nhãn; bắt buộc Nhãn của ngăn triển khai GenClass. |
header_compiler
|
Danh sách nhãn; giá trị mặc định là |
header_compiler_direct
|
Danh sách nhãn; giá trị mặc định là Công cụ này không hỗ trợ xử lý chú giải. |
ijar
|
Danh sách nhãn; bắt buộc Nhãn của tệp thực thi ijar. |
jacocorunner
|
Nhãn; giá trị mặc định là |
java_runtime
|
Nhãn; bắt buộc java_runtime để sử dụng với chuỗi công cụ này. Thuộc tính này mặc định là java_runtime trong cấu hình thực thi. |
javabuilder
|
Danh sách nhãn; bắt buộc Nhãn của JavaBuilder triển khai jar. |
javabuilder_data
|
Danh sách nhãn; giá trị mặc định là |
javabuilder_jvm_opts
|
Danh sách các chuỗi; giá trị mặc định là |
javac_supports_multiplex_workers
|
Boolean; giá trị mặc định là |
javac_supports_workers
|
Boolean; giá trị mặc định là |
javacopts
|
Danh sách các chuỗi; giá trị mặc định là |
jvm_opts
|
Danh sách các chuỗi; giá trị mặc định là |
oneversion
|
Nhãn; giá trị mặc định là |
oneversion_allowlist_for_tests
|
Nhãn; giá trị mặc định là |
oneversion_whitelist
|
Nhãn; giá trị mặc định là |
package_configuration
|
Danh sách nhãn; giá trị mặc định là |
proguard_allowlister
|
Nhãn; giá trị mặc định là |
resourcejar
|
Danh sách nhãn; giá trị mặc định là |
singlejar
|
Danh sách nhãn; bắt buộc Nhãn của ngăn triển khai SingleJar. |
source_version
|
String; giá trị mặc định là |
target_version
|
String; giá trị mặc định là |
timezone_data
|
Nhãn; giá trị mặc định là |
tools
|
Danh sách nhãn; giá trị mặc định là |
turbine_data
|
Danh sách nhãn; giá trị mặc định là |
turbine_jvm_opts
|
Danh sách các chuỗi; giá trị mặc định là |
xlint
|
Danh sách các chuỗi; giá trị mặc định là |