web-dev-qa-db-fra.com

Où sont classpath, path et pathelement documentés dans Ant version 1.8.0?

Je regarde la documentation fournie avec Apache Ant version 1.8.0 et je ne trouve pas où le chemin de classe, le chemin et l'élément de chemin sont documentés. J'ai trouvé une page qui décrit des structures de type chemin, mais elle ne répertorie 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 la liste de fichiers, le jeu de fichiers, le patternset et le chemin et comment les convertir dans les deux sens. Par exemple, il doit y avoir un moyen plus simple de compiler uniquement ces classes dans un package tout en supprimant toutes les dépendances de classe sur les classes de package 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>

Notez qu'il y a un certain nombre de conversions entre les ensembles de fichiers, les chemins et la liste séparée par des virgules juste pour obtenir le "type" approprié requis pour les différentes tâches de fourmi. Existe-t-il un moyen de simplifier cela tout en traitant le moins de fichiers dans une structure de répertoire complexe?

44
Robert Menteer

C'est le plus proche que j'ai pu trouver de la documentation sur classpath.

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

11
Crispy

Chemin :

Cet objet représente un chemin tel qu'il est utilisé par la variable d'environnement CLASSPATH ou PATH. Un chemin peut également être décrit comme une collection de ressources de système de fichiers uniques.

et PathElement :

Classe d'assistance, contient les valeurs imbriquées <pathelement>.

sont définis directement dans JavaDoc.

ClassPathest une implémentation de AbstractClasspathResource :

Une représentation de ressource de tout ce qui est accessible via un chargeur de classe Java. Les principales méthodes pour définir/résoudre le chemin de classe sont fournies.

qui est une sous-classe directe de Resource :

Décrit une ressource "de type fichier" (File, ZipEntry, etc.). Cette classe est destinée à être utilisée par les classes qui ont besoin d'enregistrer des informations de chemin et de date/heure sur un fichier, une entrée Zip ou une ressource similaire (URL, archive dans un référentiel de contrôle de version, ...).

Ant Class Diagram

FileSet est défini comme:

Un FileSet est un groupe de fichiers. Ces fichiers se trouvent dans une arborescence de répertoires commençant dans un répertoire de base et sont associés à des modèles provenant d'un certain nombre de PatternSets et de sélecteurs.

Les sélecteurs sont définis comme:

Les sélecteurs sont un mécanisme par lequel les fichiers qui composent un <fileset> Peuvent être sélectionnés en fonction de critères autres que le nom de fichier tel que fourni par les balises <include> Et <exclude>.

PatternSet est défini comme:

Les modèles peuvent être regroupés en ensembles et être référencés ultérieurement par leur attribut id. Ils sont définis via un élément patternset, qui peut apparaître imbriqué dans un FileSet ou une tâche basée sur un répertoire qui constitue un FileSet implicite. De plus, les ensembles de modèles peuvent être définis comme un élément autonome au même niveau que la cible, c'est-à-dire en tant qu'enfants du projet ainsi qu'en tant qu'enfants de la cible.

FileList est défini comme:

Les listes de fichiers sont des listes de fichiers explicitement nommées. Alors que les ensembles de fichiers agissent comme des filtres, renvoyant uniquement les fichiers qui existent dans le système de fichiers et correspondent aux modèles spécifiés, les listes de fichiers sont utiles pour spécifier les fichiers qui peuvent ou non exister. Plusieurs fichiers sont spécifiés comme une liste de fichiers, par rapport au répertoire spécifié, sans prise en charge de l'expansion des caractères génériques (les noms de fichiers avec des caractères génériques seront inclus dans la liste inchangés). Les listes de fichiers peuvent apparaître dans les tâches qui prennent en charge cette fonctionnalité ou en tant que types autonomes.

Ant Resource Collections

Dans Schematron, vous pouvez valider cela par les éléments suivants:

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

Références

0
Paul Sweatte