Разница между установкой пути к классам в build.xml с использованием набора файлов и элемента pathelement

У меня есть файл сборки, который объявляет путь к классам, как показано

<path id="compile.classpath">
    <fileset dir="${basedir}/lib"    includes="**"/>        
    <fileset dir="${jboss.home}/lib" includes="**"/>        
    <pathelement path ="${build.classes.dir}"/>
</path>

Я попытался просмотреть документацию, но не могу понять, как используется pathelement.

Я знаю, что идентификатор используется для ссылки на этот путь к классу при выполнении задачи, а набор файлов включает файлы jarfiles.

изменить 1: Я сомневаюсь, почему мы не можем использовать fileset для включения файлов классов вместо pathelement?


person Shurmajee    schedule 21.01.2013    source источник
comment
Руководство по ANT: ant.apache.org/manual/using.html#path   -  person Mark O'Connor    schedule 21.01.2013
comment
В руководстве не содержится подробного объяснения этого элемента.   -  person Shurmajee    schedule 22.01.2013
comment
Согласованный. В документации предполагается, что читатель понимает пути к классам и загрузчики классов Java. Он также не объясняет должным образом, как тег пути соотносится с путем к классам. Это почти то же самое, но ИМХО для новичков доко довольно плохая.   -  person Mark O'Connor    schedule 22.01.2013


Ответы (2)


Последнее изменение:

Я сомневаюсь в том, почему мы не можем использовать набор файлов для включения файлов классов вместо патэлементов?

Если вы используете набор файлов, вы должны добавить набор файлов классов в путь следующим образом:

CLASSPATH=classes/MyClass1.class:classes/MyClass2.class:classes/MyClass3.class:....

Когда то, что ожидает увидеть Java, просто:

CLASSPATH=classes

Только файлы jar (и WAR, EAR и т. Д.) Явно перечислены в пути к классам (Java откроет их и загрузит их файлы классов), отсюда и потребность в наборе файлов в ANT.

Обновлять

Вот документация Oracle:

Пути классов к файлам .jar, .zip или .class. Каждый путь к классам должен заканчиваться именем файла или каталогом в зависимости от того, для чего вы устанавливаете путь к классу:

  • Для файла .jar или .zip, содержащего файлы .class, путь к классу заканчивается именем файла .zip или .jar.
  • Для файлов .class в безымянном пакете путь к классам заканчивается каталогом, содержащим файлы .class.
  • Для файлов .class в именованном пакете путь к классу заканчивается каталогом, содержащим «корневой» пакет (первый пакет в полном имени пакета).
person Mark O'Connor    schedule 22.01.2013
comment
Я согласен с этим в моем примере, почему я не могу заменить ‹pathelement path = $ {build.classes.dir} /› на ‹fileset dir = $ {build.classes.dir} includes = ** /› - person Shurmajee; 22.01.2013
comment
Вы упустили мою точку зрения ... Использование набора файлов добавляет каждый файл класса в путь к классам ... Это не то, как Java ожидает, что путь к классам будет заполнен. Для файлов классов все, что нужно, это корневой каталог - person Mark O'Connor; 22.01.2013

Уже был аналогичный вопрос о 'pathelements' здесь. Из предоставленной документации: "Если это структура пути, как в вашем примере:" Структура, подобная пути, может включать ссылку на другую структуру, подобную пути (путь сам по себе является коллекцией ресурсов) через вложенные элементы "

 <path id="base.path">
  <pathelement path="${classpath}"/>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="classes"/>
</path>

Если это структура пути к классам: «Атрибут пути предназначен для использования с предопределенными путями»

<classpath>
  <pathelement path="${classpath}"/>
  <pathelement location="lib/helper.jar"/>
</classpath>
person alsid    schedule 21.01.2013
comment
Да, есть некоторая неуверенность в понимании этих элементов. И это не описано в документации. Но пробовали ли вы искать разницу между набором файлов и путем? Например, есть другой вопрос: ссылка - person alsid; 22.01.2013
comment
Хорошо, я просмотрел ссылку и многие другие вопросы, и кажется, что люди всегда используют pathelement для своих файлов классов. - person Shurmajee; 22.01.2013