基于目录的ant任务

news2024/11/19 17:19:56

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

一些任务利用目录树来执行一些动作。例如,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)内嵌<include> 和 <exclude>元素
3)用includesfile 和 excludesfile属性指明引用的外部文件
4)用<includesfile> 和 <excludesfile>内嵌元素指明引用的外部文件
如果引用了外部文件,外部文件的每一行作为一个模式,被添加到包含、不包含模式的列表中。

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

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

模式

“*”和“?”

  • 模式看起来非常象DOS 和 UNIX下使用的模式。“*”匹配0个或者多个字符,“?”匹配1个字符。
  • 通常,模式作为相对目录来对待。是相对于任务(task)依赖的基目录。例如,如果在<fileset>中使用,那么是相对于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

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

**/.git
**/.git/**
**/.gitattributes
**/.gitignore
**/.gitmodules
**/.hg
**/.hg/**
**/.hgignore
**/.hgsub
**/.hgsubstate
**/.hgtags
**/.bzr
**/.bzr/**
**/.bzrignore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1120468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# Socket通信从入门到精通(2)——多个同步TCP客户端C#代码实现

前言: 我们在开发Tcp客户端程序的时候,有时候在同一个软件上我们要连接多个服务器,这时候我们开发的一个客户端就不够使用了,这时候就需要我们开发出来的软件要支持连接多个服务器,最好是数量没有限制,这样我们就能应对任意数量的服务器连接,由于我们开发的Tcp客户端程…

7个可能改变AEC行业的AI工具

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 人工智能&#xff08;AI&#xff09;工具在各个行业中越来越受欢迎&#xff0c;ChatGDP的推出无疑让人们看到了人工智能所能提供的可能性。 然而&#xff0c;人工智能不仅仅是生成文本或图形——它可以用于各种设置。 建筑…

【面试题】JDBC桥接模式如何实现的?

Hello 大家好&#xff0c;我是小米&#xff01;很高兴又和大家见面啦&#xff01;今天的主题是——"面试题&#xff1a;JDBC桥接模式如何实现的&#xff1f;"。 相信大家都听说过JDBC&#xff08;Java Database Connectivity&#xff09;&#xff0c;它是Java中连接…

QT判断平台和生成版本设置输入目录

QT判断平台和生成版本设置输入目录 pro工程文件中常用的宏定义Chapter1 QT判断平台和生成版本设置输入目录Chapter2 Qt pro文件中判断 x86/arm(aarch64)交叉编译环境&#xff0c;区分 linux/windows系统, debug/release版本Chapter3 Qt的版本判断、跨平台选择与pro工程文件输出…

231022|redis_demo

安装 https://github.com/tporadowski/redis https://github.com/redis/redis-py/ 解压后要先配置redis.windows.conf文件&#xff0c;里面有本地端口和密码设置 默认host:127.0.0.1 port:6379 打开命令行到redis文件夹下&#xff0c;redis-server.exe redis.windows.conf输入即…

1024我来利用DOS攻击你的电脑了?(第十三课)

1024我来利用DOS攻击你的电脑了&#xff1f;(第十三课) 本文章设计安全领域的重点问题 学习本文章时 请扎在初学者的角度学习 用于正途 一 国家安全法 1 安全法律法规 《宪法》中的相关规定 案例&#xff1a; 大山破解同事小美私人邮箱密码&#xff0c;读取其往来邮件 邮箱…

Go并发编程之四

一、前言 今天我们介绍一下Go并发编程另外一个重要概念【多路复用】&#xff0c;多路复用最开始是在网络通讯领域&#xff08;硬件&#xff09;应用&#xff0c;指的是用同一条线路承载多路信号进行通信的方式&#xff0c;有频分多路复用、时分多路复用等等技术&#xff0c;然…

组合数(递推版)的初始化

初始考虑为将第一列数和斜对角线上的数进行初始化。 橙色方块由两个绿色方块相加而来&#xff0c;一个为1&#xff0c;一个为0&#xff0c;所以斜对角线都为1&#xff0c;可以通过计算得来&#xff0c;不需要初始化&#xff0c;需要与码蹄集盒子与球 第二类Stirling数&#xf…

【Linux】命令行参数和环境变量

命令行参数 其实main函数是可以传参数的&#xff0c;也叫做命令行参数。我们这里先介绍main函数的前两个参数 argc代表的是指针数组的元素个数&#xff0c;argv是一个指针数组&#xff0c;指针指向字符串。argv不可能为空&#xff0c;argv【0】存储该进程的名字 例如 ls -a -…

【数据结构】830+848真题易错题汇总(10-23)

【数据结构】830848易错题汇总(10-23) 文章目录 【数据结构】830848易错题汇总(10-23)选择题填空题判断题简答题&#xff1a;应用题&#xff1a;算法填空题&#xff1a;算法设计题&#xff1a;(待补) 选择题 1、顺序栈 S 的 Pop(S, e)操作弹出元素 e&#xff0c;则下列(C )是正…

在 Python 中使用 Pillow 进行图像处理【2/4】

第二部分 一、说明 该文是《在 Python 中使用 Pillow 进行图像处理》的第二部分&#xff0c;主要介绍pil库进行一般性处理&#xff1a;如&#xff1a;图像卷积、钝化、锐化、阈值分割。 二、在 Python 中使用 Pillow 进行图像处理 您已经学习了如何裁剪和旋转图像、调整图像大…

Yakit工具篇:专项漏洞检测的配置和使用

简介&#xff08;来自官方文档&#xff09; 专项漏洞检测是针对特定应用程序或系统进行的安全漏洞扫描技术&#xff0c;旨在检测与该应用程序或系统相关的安全漏洞。 Yakit通过对常见的中间件、CMS、框架、组件进行总结、归纳&#xff0c;并针对这些组件对其常见的高危漏洞进…

027-第三代软件开发_ComboBox

第三代软件开发_ComboBox 文章目录 第三代软件开发_ComboBox项目介绍ComboBox实际使用 关键字&#xff1a; Qt、 Qml、 ComboBox、 delegate、 Connections 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&…

试题一 (软件设计师笔记)(15分)

&#x1f600;前言 现在就是总复习试题一 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609; 在csdn获奖荣誉: &#x1f3c6;csd…

记录打包部署Springboot项目到Windows环境

Springboot项目开发完成后要做的工作就是部署了&#xff0c;这里记录下打包部署的过程。这个项目是一个SpringBoot多模块项目&#xff0c;包含了一个父工程&#xff0c;一个子模块和一个工具模块。其中子模块里有启动类&#xff0c;而工具模块没有。因此这三者的pom文件不一样。…

SOME/IP, DDS 还是 MQTT

如今&#xff0c;用户希望将他们的汽车根据个人偏好进行定制&#xff0c;通过添加功能并定期进行更新&#xff0c;就像他们对待移动设备一样。实现这些期望属性的一个构建模块是基于 Internet Protocol&#xff08;IP&#xff09;的通信&#xff1b;IP为新的设计模式打开了大门…

arcgis js api 4.x加载geoserver发布的地方坐标系(自定义坐标系)的wms服务

问题描述&#xff1a;之前研究过arcgis js api 4.x加载arcgis server 发布的地方坐标系的wms服务&#xff0c;后来研究出来能正常加载了&#xff0c;想了解的可以看我之前的博客。但是一直困于加载geoserver发布的地方坐标系的wms服务&#xff0c;一直都是用的WMSLayer这个调用…

1024渗透OpenVas扫描工具使用(第十四课)

1024渗透扫描工具使用(第十四课) 一 漏洞披露 1 微软安全更新指南&#xff08;自2017年2月起&#xff0c;替代安全公告&#xff09; 安全公告都有一个惟一的编号 其命名规则是&#xff1a;MS年份-补丁序号 或 CVE-年份-补丁序号 比如MS17-010就表示2017年发布的编号为010的安…

自然语言处理---Transformer构建语言模型

语言模型概述 以一个符合语言规律的序列为输入&#xff0c;模型将利用序列间关系等特征&#xff0c;输出一个在所有词汇上的概率分布&#xff0c;这样的模型称为语言模型。 # 语言模型的训练语料一般来自于文章&#xff0c;对应的源文本和目标文本形如: src1 "I can do&…

【剑指Offer】34.二叉树中和为某一值的路径(二)

题目 输入一颗二叉树的根节点root和一个整数expectNumber&#xff0c;找出二叉树中结点值的和为expectNumber的所有路径。 1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点 2.叶子节点是指没有子节点的节点 3.路径只能从父节点到子节点&#xff0c;不能从…