【问题标题】:Ant <jar> task: using excludes parameterAnt <jar> 任务:使用 excludes 参数
【发布时间】:2012-09-24 07:53:49
【问题描述】:

得到以下 build.xml 字符串:

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

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

谢谢。

【问题讨论】:

    标签: java ant build


    【解决方案1】:

    首先关于声明

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

    【讨论】:

      【解决方案2】:

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

      ** 基本上表示每个子目录。而/*.java 表示这些目录中的每个 Java 文件。

      【讨论】:

        【解决方案3】:
        <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 结尾的文件除外(以及default excludes 除外)

        【讨论】:

          猜你喜欢
          • 2016-03-01
          • 1970-01-01
          • 2011-12-31
          • 1970-01-01
          • 2010-11-17
          • 2014-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多