4

得到以下 build.xml 字符串:

<jar destfile="${lib.dir}/rpt.jar" basedir="${classes.src}" excludes="**/*.java" />

我是 Ant 新手,我不明白excludes字符串是如何工作的。哪些文件受到影响?所有java源文件?

谢谢。

4

3 回答 3

6

首先关于声明

<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 中排除源代码,这些源代码将被使用、分发、导出等

于 2012-10-03T11:50:59.420 回答
5

是的,您的代码排除了所有 Java 文件。看看模式定义:这个页面很好地解释了 Ant 模式是如何工作的。它还包含许多说明它的示例。模式无处不在,所以如果你继续使用 Ant,你真的需要理解它们。

基本上意味着每个**子目录。并且/*.java表示这些目录中的每个 Java 文件。

于 2012-10-03T11:40:51.273 回答
2
<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

于 2012-10-03T11:41:46.647 回答