有一个以下构建.xml字符串:
<jar destfile="${lib.dir}/rpt.jar" basedir="${classes.src}" excludes="**/*.java" />
我是 Ant 的新手,我不明白排除字符串是如何工作的。哪些文件会受到影响?所有 Java 源文件?
谢谢。
首先关于语句
<jar destfile="${lib.dir}/rpt.jar" basedir="${classes.src}" excludes="**/*.java" />
此目标用于将文件打包到 JAR 存档中
destfile :指定目标文件的名称和位置,即将创建的存档
basedir :指定需要打包的文件的基目录。请注意,将包括所有文件和子文件夹
排除 :这用于从 basedir 中排除包 (jar) 中不需要的文件
现在回答您的问题
上面的语句所做的是,它将 classes.src 中的所有文件打包到 $(lib.dir)/rpt.jar但会排除在 basedir 的任何子文件夹中或内部找到的任何.java文件。
编辑:这个 exclude="*/.java" 通常用于排除 jar 中的源代码,这些源代码将被使用、分发、导出等
是的,使用您的代码时,所有 Java 文件都被排除在外。看看模式定义:这个页面很好地解释了 Ant 模式是如何工作的。它还包含许多说明它的示例。模式无处不在,所以如果你继续使用 Ant,你真的需要了解它们。
**
基本上是指每个子目录。/*.java
是指这些目录中的每个 Java 文件。
<jar destfile="${lib.dir}/rpt.jar" basedir="${classes.src}" excludes="**/*.java" />
相当于
<jar destfile="${lib.dir}/rpt.jar">
<fileset dir="${classes.src}" excludes="**/*.java" />
</jar>
即它包括 ${classes.src}
目录及其子目录中的所有文件,除了以 .java
结尾的文件(以及默认排除除外)