我正在查看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任务所需的正确“类型”。有没有办法在处理复杂目录结构中最少的文件时简化这个?
答案 0 :(得分:11)
这是我在classpath上找到的最接近的文档。
答案 1 :(得分:0)
Path:
此对象表示CLASSPATH或PATH环境变量使用的路径。路径也可以描述为唯一文件系统资源的集合。
Helper类,保存嵌套的
<pathelement>
值。
直接在JavaDoc中定义。
ClassPath
是AbstractClasspathResource的实现:
通过Java类加载器访问的任何内容的资源表示。提供了设置/解析类路径的核心方法。
是Resource的直接子类:
描述&#34;类似文件&#34;资源(File,ZipEntry等)。此类适用于需要记录有关文件,zip条目或某些类似资源(URL,版本控制存储库中的存档,......)的路径和日期/时间信息的类。
FileSet定义为:
FileSet是一组文件。这些文件可以在目录树中找到,从基本目录开始,并与从多个PatternSets和Selectors中获取的模式匹配。
选择器定义为:
选择器是一种机制,可以根据
<fileset>
和<include>
标记提供的文件名以外的条件选择组成<exclude>
的文件。
PatternSet定义为:
模式可以分组到集合,稍后可以通过其id属性引用。它们通过patternset元素定义,该元素可以嵌套到FileSet或构成隐式FileSet的基于目录的任务中。此外,模式集可以定义为与目标处于同一级别的独立元素 - 即作为项目的子项以及目标的子项。
FileList定义为:
FileLists是明确命名的文件列表。 FileSets充当过滤器,仅返回文件系统中存在的那些文件并匹配指定的模式,而FileLists对于指定可能存在或不存在的文件很有用。多个文件被指定为相对于指定目录的文件列表,不支持通配符扩展(带有通配符的文件名将不加改变地包含在列表中)。文件列表可以显示在支持此功能的任务内部,也可以显示为独立类型。
在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>
<强>参考强>