¿Dónde están documentados classpath, path y pathelement en Ant versión 1.8.0?
build.xml (2)
Esto es lo más cercano que pude encontrar a la documentación en classpath.
Estoy revisando la documentación que viene con la versión 1.8.0 de Apache Ant y no puedo encontrar dónde están documentados classpath, path y pathelement. Encontré una página que describe rutas similares a estructuras pero no enumera los atributos válidos ni los elementos anidados para estos. Otra cosa que no puedo encontrar en la documentación es una descripción de las relaciones entre filelist, fileset, patternset y path y cómo convertirlos de un lado a otro. Por ejemplo, tiene que haber una forma más fácil de compilar solo esas clases en un paquete al tiempo que elimina todas las dependencias de clase en las clases de paquete y actualiza la documentación.
<!-- 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>
Tenga en cuenta que hay una cantidad de conversiones entre los conjuntos de archivos, las rutas y la lista separada por comas solo para obtener el "tipo" correcto requerido para las diferentes tareas de las hormigas. ¿Hay alguna manera de simplificar esto mientras procesas la menor cantidad de archivos en una estructura de directorios compleja?
Path :
Este objeto representa una ruta utilizada por CLASSPATH o variable de entorno PATH. Una ruta también podría describirse como una colección de recursos únicos del sistema de archivos.
y PathElement :
Clase auxiliar, contiene los valores
<pathelement>
anidados.
se definen directamente en JavaDoc.
ClassPath
es una implementación de AbstractClasspathResource :
Una representación de recursos de todo lo que se accede a través de un cargador de clases Java. Se proporcionan los métodos principales para establecer / resolver el classpath.
que es una subclase directa de Resource :
Describe un recurso "similar a un archivo" (Archivo, ZipEntry, etc.). Esta clase está destinada a ser utilizada por las clases que necesitan registrar información de ruta y fecha / hora sobre un archivo, una entrada zip o algún recurso similar (URL, archivo en un repositorio de control de versiones, ...).
FileSet se define como:
Un FileSet es un grupo de archivos. Estos archivos se pueden encontrar en un árbol de directorios que comienza en un directorio base y se corresponden con los patrones tomados de un número de PatternSets y selectores.
Selectores se define como:
Los selectores son un mecanismo mediante el cual los archivos que componen un
<fileset>
pueden seleccionarse según criterios distintos al nombre del archivo tal como lo proporcionan las etiquetas<include>
y<exclude>
.
PatternSet se define como:
Los patrones se pueden agrupar en conjuntos y luego se les puede hacer referencia por su atributo id. Se definen a través de un elemento de conjunto de patrones, que puede aparecer anidado en un conjunto de archivos o una tarea basada en el directorio que constituye un conjunto de archivos implícito. Además, los conjuntos de patrones se pueden definir como un elemento independiente en el mismo nivel que el objetivo, es decir, como hijos del proyecto y como hijos del objetivo.
FileList se define como:
FileLists se nombran explícitamente listas de archivos. Mientras que los FileSets actúan como filtros, devolviendo solo los archivos que existen en el sistema de archivos y que coinciden con los patrones especificados, FileLists es útil para especificar archivos que pueden existir o no. Múltiples archivos se especifican como una lista de archivos, relativa al directorio especificado, sin soporte para la expansión de comodines (los nombres de archivos con comodines se incluirán en la lista sin cambios). FileLists puede aparecer dentro de tareas que admiten esta característica o como tipos independientes.
En Schematron, puede validar esto de la siguiente manera:
<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>
Referencias