代码之家  ›  专栏  ›  技术社区  ›  Robert Menteer

Ant版本1.8.0中的类路径、路径和路径元素记录在哪里?

  •  43
  • Robert Menteer  · 技术社区  · 14 年前

    <!-- Get list of files in which we're interested. -->
    <fileset id = "java.source.set"
        dir     = "${src}">
      <include name = "**/Package/*.java" />
    </fileset>
    
    <!-- Get a COMMA separated list of classes to compile. -->
    <pathconvert property = "java.source.list"
        refid             = "java.source.set"
        pathsep           = ",">
      <globmapper from = "${src}/*.@{src.extent}"
          to           = "*.class" />
    </pathconvert>
    
    <!-- Remove ALL dependencies on package classes. -->
    <depend srcdir = "${src}"
        destdir    = "${build}"
        includes   = "${java.source.list}"
        closure    = "yes" />
    
    <!-- Get a list of up to date classes. -->
    <fileset id = "class.uptodate.set"
        dir     = "${build}">
      <include name = "**/*.class" />
    </fileset>
    
    <!-- Get list of source files for up to date classes. -->
    <pathconvert property = "java.uptodate.list"
        refid             = "class.uptodate.set"
        pathsep           = ",">
      <globmapper from="${build}/*.class" to="*.java" />
    </pathconvert>
    
    <!-- Compile only those classes in package that are not up to date. -->
    <javac srcdir    = "${src}"
        destdir      = "${build}"
        classpathref = "compile.classpath"
        includes     = "${java.source.list}"
        excludes     = "${java.uptodate.list}"/>
    
    <!-- Get list of directories of class files for package. --:
    <pathconvert property = "class.dir.list"
        refid             = "java.source.set"
        pathsep           = ",">
      <globmapper from = "${src}/*.java"
          to           = "${build}*" />
    </pathconvert>
    
    <!-- Convert directory list to path. -->
    <path id  = "class.dirs.path">
      <dirset dir  = "${build}"
          includes = "class.dir.list" />
    </path>
    
    <!-- Update package documentation. -->
    <jdepend outputfile = "${docs}/jdepend-report.txt">
      <classpath refid = "compile.classpath" />
      <classpath location = "${build}" />
      <classespath>
        <path refid = "class.dirs.path" />
      </classespath>
      <exclude name = "java.*"  />
      <exclude name = "javax.*" />
    </jdepend>
    

    注意,在文件集、路径和逗号分隔列表之间有许多转换,只是为了获得不同ant任务所需的正确的“类型”。有没有一种方法可以简化这一点,同时在复杂的目录结构中处理最少的文件?

    2 回复  |  直到 14 年前
        1
  •  11
  •   Crispy    14 年前

    这是我能找到的最接近类路径的文档。

    http://ant.apache.org/manual/using.html#path

        2
  •  1
  •   Paul Sweatte    7 年前

    Path :

    此对象表示CLASSPATH或path环境变量使用的路径。路径也可以描述为唯一文件系统资源的集合。

    PathElement :

    Helper类,保存嵌套的 <pathelement> 价值观。

    直接在JavaDoc中定义。

    ClassPath AbstractClasspathResource :

    任何通过Java类加载器访问的资源表示。提供了设置/解析类路径的核心方法。

    Resource :

    描述“类似文件”的资源(文件、ZipEntry等)。这个类用于需要记录有关文件、zip条目或类似资源(URL、版本控制存储库中的存档等)的路径和日期/时间信息的类。

    Ant Class Diagram

    文件集定义为:

    文件集是一组文件。这些文件可以在从基目录开始的目录树中找到,并通过从许多模式集和选择器获取的模式进行匹配。

    选择器定义为:

    <fileset> 可以根据文件名以外的条件进行选择 <include> <exclude> 标签。

    模式可以分组到集合中,然后由它们的id属性引用。它们是通过patternset元素定义的,patternset元素可以嵌套在文件集或构成隐式文件集的基于目录的任务中。此外,patternsets可以定义为与target处于同一级别的独立元素,即作为project的子元素以及target的子元素。

    文件列表定义为:

    Ant Resource Collections

    在Schematron中,可以通过以下方法验证:

      <sch:pattern>
    
          <sch:title>Check allowed elements</sch:title>
    
          <sch:rule context="target/*[name() =  ancestor::*/taskdef/@name]">
    
                  <sch:assert  test="true()">
    
                  The target element may contain user-defined tasks.
    
                </sch:assert>
    
          </sch:rule>
    
     </sch:pattern>         
    

    工具书类