1. Glob
java_binary(
name = "ProjectRunner",
srcs = glob(["src/main/java/com/example/*.java"]),
)
glob(include, exclude=[], exclude_directories=1)
该函数返回的是括号内()匹配的文件列表,通配符**代表任意完整路径,但是只能搜索匹配包内文件,子包文件无法匹配。
eg:
java_library(
name = "mylib",
srcs = glob(["*.java"]) + [":gen_java_srcs"],
deps = "...",
)
genrule(
name = "gen_java_srcs",
outs = [
"Foo.java",
"Bar.java",
],
...
)
本例表示匹配本文件夹内所有.java文件并且加上由gen_java_srcs生成的文件。
eg:
java_library(
name = "mylib",
srcs = glob(
["**/*.java"],
exclude = ["**/testing/**"],
),
)
创建一个由该目录中的所有java文件构建的库以及除路径包含名为testing的目录的所有子目录外的所有子目录。包含BUILD文件的子目录将被忽略。 如果可能,应该避免使用这种模式,因为它可以减少构建的增量并因此增加构建时间。
eg:
sh_test(
name = "mytest",
srcs = ["mytest.sh"],
data = glob(["testdata/**/*.txt"]),
)
匹配testdata文件夹下所有子目录的txt文件。
2.Licenses:
licenses(license_types)
licenses()为BUILD文件中的构建规则指定默认的许可证类型,需要放在BUILD文件的起始位置附近并且在BUILD文件规则的前面。
参数license_types包括 restricted、reciprocal、notice、permissive、unencumbered
3.Package:
package(default_deprecation, default_testonly, default_visibility, features)
该函数常放于BUILD文件中的load()函数后,任意规则前。此函数声明适用于包中每个后续规则的元数据。
default_visibility
此包中规则的默认可见性。除非visibility
在规则的属性中另有规定,否则此包中的每个规则都具有在此属性中指定的可见性。
4.exports_files
exports_files([label, ...], visibility, licenses)
若在该函数中未声明可见性,则labels中所代表的的文件对任意包均可见。