• 基于目录的ant任务


    一些任务利用目录树来执行一些动作

    一些任务利用目录树来执行一些动作。例如,javac这个任务就是一个基于目录的任务,它将一个目录中的.java文件编译为.class文件。因为一些这样的任务在目录树上做很多的工作,所以这些任务本身充当了隐含的文件集(FileSet)。下面这些标准的ant任务充当了隐含的文件集:
    (列表来自 ant官网手册:https://ant.apache.org/manual/index.html
    在这里插入图片描述

    在文件集(FileSet)上创建文件的一个子集的方式

    基于目录的任务可以在目录树的子集上操作。
    ant提供了两种方式在一个FileSet上创建文件的一个子集:
    1)基于模式集来选择:只包含匹配include模式、但不匹配exclude模式的文件和目录。
    2)基于选择器来选择:基于内嵌的选择器的规则来选择文件。下面是核心选择器:
    列表来自ant官网手册:https://ant.apache.org/manual/index.html
    在这里插入图片描述

    基于目录的任务:声明包含、不包含规则的方式

    • 基于目录的任务,可以用如下方式来声明包含、不包含规则:

    1)用includes 和 excludes属性
    2)内嵌元素
    3)用includesfile 和 excludesfile属性指明引用的外部文件
    4)用内嵌元素指明引用的外部文件
    如果引用了外部文件,外部文件的每一行作为一个模式,被添加到包含、不包含模式的列表中。

    • 当包含、不包含模式都出现的时候,那么只有匹配至少一个包含模式、同时不匹配任何不包含模式的文件/目录才会被使用。

    几个例子:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    模式

    “*”和“?”

    • 模式看起来非常象DOS 和 UNIX下使用的模式。“*”匹配0个或者多个字符,“?”匹配1个字符。
    • 通常,模式作为相对目录来对待。是相对于任务(task)依赖的基目录。例如,如果在中使用,那么是相对于dir属性指定的目录。只有在基目录下发现的文件才会被考虑。
    • “*”“?”可以结合使用。

    例如, …/Demo.java不会匹配任何文件,因为“..”表示上层目录,而基目录的上层目录不会被扫描。
    例如*.java 可以匹配 .java, A.java 和Demo.java,但不会匹配Demo.class。
    ?.java可以匹配A.java,B.java,但不会匹配Demo.java。

    • 匹配是针对每个目录来进行的。这意味着:首先,模式中的第1个目录与路径中的第1个目录进行匹配,然后是第2个目录进行匹配,以此类推。

    例如模式/?abc/*/*.java ,路径/xabc/foobar/Test.java,首先,?abcxabc是匹配的,然后*foobar是匹配的,最后*.javaTest.java是匹配的。因为所有都匹配上了,就说这个模式和路径是匹配的。

    "**"匹配多个目录层级

    • "**"能够匹配多个目录层级。这个可以用来匹配一个完整的目录树,或者目录树上任何地方的一个文件。为了实现这个功能,"**"必须作为一个目录的名字使用。当"**"在模式中作为一个目录的名字来使用的时候,它匹配0个或者多个目录。

    举例:
    /test/**匹配/test/目录下的任何目录和文件,例如 /test/A.java, 或者 /test/foo/bar/abc.html,但不匹配 /xyz.xml

    • 作为一个简略方式,如果模式以"/"或者"\"结尾,那么"**"被会附加上去。

    例如test/ 被解释为test/**

    默认排除

    列表来自ant的手册:https://ant.apache.org/manual/index.html
    从Ant 1.8.1 版本以来,下面的定义被基于目录的任务默认排除:

    **/*~
    **/#*#
    **/.#*
    **/%*%
    **/._*
    **/CVS
    **/CVS/**
    **/.cvsignore
    **/SCCS
    **/SCCS/**
    **/vssver.scc
    **/.svn
    **/.svn/**
    **/.DS_Store
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    从Ant 1.8.2版本以来,又增加了如下的默认排除:

    **/.git
    **/.git/**
    **/.gitattributes
    **/.gitignore
    **/.gitmodules
    **/.hg
    **/.hg/**
    **/.hgignore
    **/.hgsub
    **/.hgsubstate
    **/.hgtags
    **/.bzr
    **/.bzr/**
    **/.bzrignore
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    内网怎么使用通义灵码插件?
    pwncollege.ReverseEngineering
    学会这招,轻松掌握学校教学质量!
    小谈设计模式(1)—总序
    Lumiprobe蛋白质定量丨QuDye 蛋白定量试剂盒
    Mybatis03-ResultMap及分页
    Java实现分片上传(前端分,后端合并)
    计算机毕业设计Java校园摄影爱好者交流网站(源码+系统+mysql数据库+Lw文档)
    【物联网】Arduino+ESP8266物联网开发(一):开发环境搭建 安装Arduino和驱动
    Win11右键恢复Win10老版本
  • 原文地址:https://blog.csdn.net/panghuangang/article/details/133965920