Je regarde la documentation fournie avec Apache Ant version 1.8.0 et je ne trouve pas où classpath, path et pathelement sont documentés. J'ai trouvé une page qui décrit les structures de type path mais elle ne liste pas les attributs valides ou les éléments imbriqués pour ceux-ci. Une autre chose que je ne trouve pas dans la documentation est une description des relations entre filelist, fileset, patternset et path et comment les convertir dans les deux sens. Par exemple, il doit y avoir un moyen plus facile de compiler uniquement les classes d'un paquet tout en supprimant toutes les dépendances des classes du paquet et de mettre à jour la documentation.
<!-- 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>
Vous remarquerez qu'il y a un certain nombre de conversions entre les ensembles de fichiers, les chemins et les listes séparées par des virgules, juste pour obtenir le "type" approprié requis pour les différentes tâches de fourmis. Y a-t-il un moyen de simplifier cela tout en traitant le moins de fichiers possible dans une structure de répertoire complexe ?