如何根据目录内容创建一个排除某些目录的ant文件集?
我使用ant来创建一个分发jar,它将每个本地化都放在不同的目录中,其中一些是不完整的,不应该被释放.
我想在目录中添加一些东西(例如一个名为的文件incomplete.flag),以便ant排除目录.然后我可以在转换完成后删除该文件,并将其包含在构建中而不修改build.xml.
鉴于此目录结构:
proj
+ locale
+ de-DE
+ en-US
+ fr-FR
Run Code Online (Sandbox Code Playgroud)
此文件集排除所有incompelte.flag文件,但如何排除包含它们的整个目录?
<fileset dir="${basedir}">
<include name="locale/"/>
<exclude name="locale/*/incomplete.flag">
</fileset>
Run Code Online (Sandbox Code Playgroud)
如果需要,我可以编写一个ant任务,但我希望fileset能处理这个用例.
Sas*_*sha 59
以下方法适用于我:
<exclude name="**/dir_name_to_exclude/**" />
Run Code Online (Sandbox Code Playgroud)
小智 18
您需要在目录名称后添加"/"
<exclude name="WEB-INF/" />
Run Code Online (Sandbox Code Playgroud)
这是一个替代方案,而不是向incomplete.flag要排除的每个目录添加文件,生成一个文件,其中包含要排除的所有目录的列表,然后使用该excludesfile属性.像这样的东西:
<fileset dir="${basedir}" excludesfile="FileWithExcludedDirs.properties">
<include name="locale/"/>
<exclude name="locale/*/incomplete.flag">
</fileset>
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
在Ant文档中实际上存在此类问题的示例.它使用选择器(如上所述)和映射器.请参阅http://ant.apache.org/manual/Types/dirset.html中的最后一个示例:
<dirset id="dirset" dir="${workingdir}">
<present targetdir="${workingdir}">
<mapper type="glob" from="*" to="*/${markerfile}" />
</present>
</dirset>
Run Code Online (Sandbox Code Playgroud)
选择${workingdir}包含a的所有目录${markerfile}.
| 归档时间: |
|
| 查看次数: |
105422 次 |
| 最近记录: |