Где classpath, path и pathelement задокументированы в Ant версии 1.8.0?

Я просматриваю документацию, поставляемую с 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}/*[email protected]{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. Есть ли способ упростить это при обработке самых маленьких файлов в сложной структуре каталогов?

Ответ 2

Path:

Этот объект представляет собой путь, используемый переменными среды CLASSPATH или PATH. Путь также может быть описан как набор уникальных ресурсов файловой системы.

и PathElement:

Класс-помощник содержит вложенные значения <pathelement>.

определяются непосредственно в JavaDoc.

ClassPath представляет собой реализацию AbstractClasspathResource:

Представление ресурсов для чего-либо, доступ к которому осуществляется через загрузчик классов Java. Предоставляются основные методы установки/разрешения пути к классам.

который является прямым подклассом Resource:

Описывает "File-like" ресурс (File, ZipEntry и т.д.). Этот класс предназначен для использования классами, которые должны записывать информацию о пути и дате/времени файла, записи zip или какого-либо подобного ресурса (URL, архив в репозитории управления версиями,...).

Ant Диаграмма классов

FileSet определяется как:

FileSet - это группа файлов. Эти файлы можно найти в дереве каталогов, начиная с базового каталога, и сопоставляются шаблонами, взятыми из нескольких наборов шаблонов и селекторов.

Селекторы определяются как:

Селекторы - это механизм, при котором файлы, составляющие <fileset>, могут быть выбраны на основе критериев, отличных от имени файла, как показано тегами <include> и <exclude>.

PatternSet определяется как:

Шаблоны могут быть сгруппированы по наборам, а позже их атрибут id. Они определяются с помощью элемента patternset, который может отображаться вложенным в FileSet или в задачу на основе каталога, которая представляет собой неявный FileSet. Кроме того, шаблоны могут быть определены как автономный элемент на том же уровне, что и целевой объект, т.е. Как дочерний элемент проекта, так и как дочерние объекты цели.

FileList определяется как:

В списках файлов явно указаны списки файлов. В то время как FileSets действуют как фильтры, возвращая только те файлы, которые существуют в файловой системе и соответствуют указанным шаблонам, FileLists полезны для указания файлов, которые могут или не могут существовать. Несколько файлов указаны как список файлов по отношению к указанному каталогу, без поддержки расширения подстановочных знаков (имена файлов с подстановочными знаками будут включены в список без изменений). Списки файлов могут отображаться внутри задач, поддерживающих эту функцию или в виде автономных типов.

Ant Коллекции ресурсов

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

Ссылки