Ant版本1.8.0中记录了classpath,path和pathelement的位置?

时间:2010-03-26 21:19:14

标签: ant build.xml

我正在查看Apache Ant 1.8.0版附带的文档,但无法找到记录classpath,path和pathelement的位置。我找到了一个描述类似结构的路径的页面,但它没有列出这些的有效属性或嵌套元素。我在文档中找不到的另一件事是描述filelist,fileset,patternset和path之间的关系以及如何来回转换它们。例如,必须有一种更简单的方法来编译一个包中的那些类,同时删除包类和更新文档上的所有类依赖项。

<!-- 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 个答案:

答案 0 :(得分:11)

这是我在classpath上找到的最接近的文档。

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

答案 1 :(得分:0)

Path

  

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

PathElement

  

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

直接在JavaDoc中定义。

ClassPathAbstractClasspathResource的实现:

  

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

Resource的直接子类:

  

描述&#34;类似文件&#34;资源(File,ZipEntry等)。此类适用于需要记录有关文件,zip条目或某些类似资源(URL,版本控制存储库中的存档,......)的路径和日期/时间信息的类。

Ant Class Diagram

FileSet定义为:

  

FileSet是一组文件。这些文件可以在目录树中找到,从基本目录开始,并与从多个PatternSets和Selectors中获取的模式匹配。

选择器定义为:

  

选择器是一种机制,可以根据<fileset><include>标记提供的文件名以外的条件选择组成<exclude>的文件。

PatternSet定义为:

  

模式可以分组到集合,稍后可以通过其id属性引用。它们通过patternset元素定义,该元素可以嵌套到FileSet或构成隐式FileSet的基于目录的任务中。此外,模式集可以定义为与目标处于同一级别的独立元素 - 即作为项目的子项以及目标的子项。

FileList定义为:

  

FileLists是明确命名的文件列表。 FileSets充当过滤器,仅返回文件系统中存在的那些文件并匹配指定的模式,而FileLists对于指定可能存在或不存在的文件很有用。多个文件被指定为相对于指定目录的文件列表,不支持通配符扩展(带有通配符的文件名将不加改变地包含在列表中)。文件列表可以显示在支持此功能的任务内部,也可以显示为独立类型。

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>         

<强>参考