Classpath для taskdef? - PullRequest
       35

Classpath для taskdef?

10 голосов
/ 22 декабря 2010

Я определяю новую задачу в Ant. Я экспортировал его как банку и добавил в свой файл сборки:

<taskdef classname="X" classpath="Y.jar"/>

Проблема в том, что это не работает во время выполнения. Это говорит мне, что он не нашел класс. Добавив банку в путь к классам, она исправляется.

Мой вопрос: есть ли способ, которым я могу ссылаться на свой jar-файл из файла сборки Ant, не изменяя путь к классу?

Ответы [ 2 ]

9 голосов
/ 22 декабря 2010

Если вы знаете путь к банке, внутри скрипта ant вы можете определить путь к классу для вашей собственной задачи.

<taskdef name="myTaskName" classname="com.myorg.myclass">
  <classpath>
    <pathelement location="pathToMyJar.jar"/>
  </classpath>
</taskdef>
1 голос
/ 22 декабря 2010

Да. Я предполагаю, что вы посмотрели на doc для taskdef, который просто показывает имя задачи и реализующий класс. Однако, taskdef подклассы typedef, и если вы посмотрите на doc для последнего, вы увидите, что есть также атрибут classpath.

ОДНАКО , использование этого атрибута означает, что ваши ant-скрипты привязаны к определенной среде; они не очень портативны. Гораздо лучший подход - передать путь класса в Ant, используя опцию вызова -lib .

...