В чем разница между вложенным путем и набором файлов? - PullRequest
10 голосов
/ 01 июля 2011

В течение некоторого времени я искал статью «Различия между набором файлов и путем», но ничего полезного не нашел.Например, в чем разница между следующим (скажем, существует каталог 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>

?

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

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

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

classpath используется для указания ссылок на путь к классам. classpath можно указать с помощью одного jar (location="..."), ; или : списка jar (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 голосов
/ 01 июля 2011

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

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