【问题标题】:Where are classpath, path and pathelement documented in Ant version 1.8.0?Ant 1.8.0 版中记录的类路径、路径和路径元素在哪里?
【发布时间】:2017-06-22 07:25:23
【问题描述】:

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

<!-- 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 任务所需的正确“类型”。有没有办法在处理复杂目录结构中最少的文件的同时简化这一点?

【问题讨论】:

  • 我希望我能更多地投票。 ant 的手册页绝对烂。他们一文不值。

标签: ant build.xml


【解决方案1】:

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

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

【讨论】:

  • 是的,我发现了,但没有详细说明。具体来说,它没有说明哪些属性或嵌套元素是有效的。
  • ANT doco 专注于任务。您通过 osmosis 学习的其他部分 :-) 例如参考资料花了我很长时间才弄明白 (ant.apache.org/manual/using.html#references)
  • 所以这是一个非常无用的答案。除了链接到实际上没有解决方案的文档之外,没有什么贡献。
【解决方案2】:

Path:

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

PathElement:

Helper 类,保存嵌套的&lt;pathelement&gt; 值。

在JavaDoc 中直接定义。

ClassPathAbstractClasspathResource的一个实现:

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

这是Resource的直接子类:

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

FileSet 定义为:

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

选择器定义为:

选择器是一种机制,可以根据&lt;include&gt;&lt;exclude&gt; 标签提供的文件名以外的标准选择构成&lt;fileset&gt; 的文件。

PatternSet 定义为:

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

FileList 定义为:

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

在 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>         

参考文献

【讨论】:

    猜你喜欢
    • 2014-07-15
    • 1970-01-01
    • 2011-06-13
    • 2012-11-26
    • 2012-01-31
    • 2017-02-20
    • 1970-01-01
    • 2023-03-25
    • 2010-10-30
    相关资源
    最近更新 更多