得到以下 build.xml 字符串:
<jar destfile="${lib.dir}/rpt.jar" basedir="${classes.src}" excludes="**/*.java" />
我是 Ant 新手,我不明白excludes字符串是如何工作的。哪些文件受到影响?所有java源文件?
谢谢。
首先关于声明
<jar destfile="${lib.dir}/rpt.jar" basedir="${classes.src}" excludes="**/*.java" />
此目标用于将您的文件打包到 jar 存档中
destfile :指定目标文件的名称和位置,将创建的存档
basedir :指定需要打包的文件的基本目录。请注意,将包含所有文件和子文件夹
excludes :这用于从 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
(并且除了默认的 excludes)