1. <include>*/*.*</include>
-
含义:匹配所有子目录中的文件,且文件名必须包含扩展名(即必须有
.
后缀)。 -
示例:
-
src/main/java/Test.java ✅docs/README.md ✅data/config.yml ✅但根目录下的 pom.xml ❌(不在子目录中)无扩展名的文件(如 LICENSE)❌
-
2. <include>*.*</include>
-
含义:匹配当前目录下的文件(不包含子目录),且文件名必须包含扩展名。
-
示例:
-
index.html ✅style.css ✅app.js ✅但子目录中的文件(如 src/app.js)❌无扩展名的文件(如 Dockerfile)❌
-
组合效果
如果同时使用这两个 <include>
标签,效果是:
-
包含当前目录下所有带扩展名的文件(如
index.html
)。 -
包含所有子目录下带扩展名的文件(如
src/app.js
),但不包括更深层子目录(如src/test/java/Test.java
,除非使用**/*.*
递归匹配)。
注意事项
-
扩展名限制:两个模式均要求文件名必须包含
.
后缀(如.txt
、.java
),无扩展名的文件会被排除(如README
、LICENSE
)。 -
目录深度限制:
*/*.*
仅匹配一级子目录,若需递归所有子目录,应使用**/*.*
(双星号**
表示任意深度目录)。 -
工具差异:不同工具对通配符的支持可能略有差异(如 Ant、Maven、Gradle),需结合具体上下文确认。
改进建议
如果需要 包含所有文件 (无论是否在子目录或有无扩展名),建议使用:
<include>**/*</include> <!-- 包括所有目录和文件 -->