以下是包含多个输入文件的五种通配技术,文档从CommandLineRunner 类中提取:
(1) 这是muka's technique 的变体,去掉了不需要的--js 标志:
java -jar compiler.jar \
--js_output_file build/out.js `find ./src/*.js`
来自文档:
--js 标志名称是可选的,因为默认情况下 args 被解释为文件。
这将包括/src/ 中的所有.js 文件,但不会包括/src/ 子目录中的任何文件。
(2) 类似于1,但将包括/src/ 中的所有.js 文件及其所有子目录: p>
java -jar compiler.jar \
--js_output_file build/out.js `find ./src/ -name '*.js'`
(3)类似于2,但使用xargs:
find ./src/ -name '*.js' \
| xargs java -jar compiler.jar \
--js_output_file build/out.js \
--manage_closure_dependencies
来自文档:
在使用
闭包编译器结合find和xargs:
find MY_JS_SRC_DIR -name '*.js' \
| xargs java -jar compiler.jar --manage_closure_dependencies
find 命令将在
MY_JS_SRC_DIR 目录,而 xargs 将转换它们
附加到单个的、以空格分隔的参数集
java 命令运行编译器。
请注意,使用
在这种情况下,--manage_closure_dependencies 选项是因为
find 生成的订单不太可能正确排序
尊重goog.provide()和goog.requires()。
(4) v20140625
发布增加了对** (globstar) 通配符的支持,它递归地
匹配所有子目录。
例如,这将包括/src/ 及其所有子目录中的所有.js 文件:
java -jar compiler.jar \
--js_output_file build/out.js './src/**.js'
更多信息here。来自文档:
您也可以使用 minimatch 样式的 glob 模式。例如,使用:
--js='**.js' --js='!**_test.js'
递归包含所有不以_test.js结尾的js文件
来自Java docs:
以下规则用于解释 glob 模式:
-
* 字符匹配名称组件的零个或多个字符,而不跨越目录边界。
-
** 字符匹配零个或多个跨越目录边界的字符。
(5) v20140625
release 还增加了一个新特性:如果输入路径是目录,那么所有.js文件
在该目录中,所有子目录都将包括在内。
例如,这将包括/src/ 及其所有子目录中的所有.js 文件:
java -jar compiler.jar \
--js_output_file build/out.js './src/'
更多信息here。