Какая разница между вложенным путем и набором файлов?

Я долгое время искал статью "Различия между файлами и путями", но не нашел ничего полезного. Например, в чем разница между следующим (скажем, существует каталог someDir, который содержит .jar файлы и не содержит подкаталогов):

<path id="somePathId">
    <pathelement path="someDir"/>
</path>

<path id="someId">
  <path refid="somePathId" />
</path>

и

<path id="someId">
  <fileset dir="someDir">
     <include name="*.*">
  </fileset>
</path>

?

Ответ 1

Они используются в разных ситуациях.

fileset используется для указания группы файлов. Вы можете использовать selector и patternset, чтобы получить только нужные файлы.

classpath используется для указания ссылок на классы. classpath может быть задан с помощью единственного jar (location="..."), a ; или : разделенного списка баннеров (path="...") или вложенных коллекций ресурсов (например, fileset).

Также, если вы хотите отлаживать их, это другое:

<echo message="Build-path: ${toString:build-path}" />

против

<property name="debug.classpath" refid="classpath"/>
<echo message="Classpath = ${debug.classpath}"/>

Что касается ваших скриптов,

<path id="somePathId">
    <pathelement location="someDir"/>
</path>

Я не тестировал его, но согласно документации path= ожидает ; или : разделенный список банок. Это не то же самое, что и ваш второй пример.

Ответ 2

Основное различие между <path> и a <fileset> заключается в том, что в <fileset> вы можете указать, хотите ли вы включать или исключать определенные типы файлов (в основном, это группа файлов в пути... не обязательно все файлы), например:

<path id="someId">
  <fileset dir="someDir">
     <include name="*.java">
     <include name="*.properties">
  </fileset>
</path>