Захват вывода задачи Ant <javadoc> - PullRequest
4 голосов
/ 19 марта 2009

Можно ли перехватить предупреждения, которые Javadoc печатает при запуске через задачу Ant javadoc? Я не вижу выходной атрибут, такой как в задаче. Похоже, есть предупреждения, что Checkstyle просто не ловит, и было бы неплохо зацепить этот вывод в файл.

Кажется странным, что это было бы невозможно, надеюсь, я упускаю что-то очевидное.

~ * ~ * ~ * ~ РЕДАКТИРОВАТЬ (ответ ниже) ~ * ~ * ~ * ~

Казалось бы, задача Ant - это именно то, что я искал. См. Документы по муравьям .

<target name="generate.docs">
    <record name="javadoc.log" action="start"/>
    <javadoc ... />
    <record name="javadoc.log" action="stop"/>
<target/>

Ответы [ 3 ]

1 голос
/ 20 марта 2009

Похоже, что это возможно с помощью тега <exec> ( ссылка здесь ) ... это, вероятно, будет королевской болью, но может быть возможно выполнить исполняемый файл javadoc и восстановить команду аргументы, необходимые для генерации Javadoc. Тем не менее, похоже, что это большой удар по делу, который использует только ваше естественное перенаправление оболочки, поэтому сборка на Win32 и Linux потребует особого случая.

Возможно, стоит написать собственное задание , чтобы выполнить работу; либо тег <redirect>, как упомянул Roboprog, либо расширение задачи Javadoc ...

1 голос
/ 20 марта 2009

Вы можете выполнить javadoc как класс Java с классом com.sun.tools.javadoc.Main, вызвав метод execute (он находится в tools.jar, включенном в JDK), так что вы можете обернуть класс java, который Вы вызываете из задачи Ant Java, которая позволяет перенаправление вывода. вам придется реконструировать аргументы командной строки javadoc самостоятельно, вместо того чтобы иметь тонкости задачи Ant, но она должна работать.

1 голос
/ 20 марта 2009

Я предполагаю, что предыдущий ответ на перенаправление был отклонен из-за неустановленного требования делать это каждый раз с помощью команд сценария build.xml.

Да. Похоже, что эта функция не включена в задачу. Лучший вопрос может быть: есть ли в Ant задача / тег, который перенаправит ВСЕ выходные данные из ЛЮБЫХ вложенных тегов? Такая задача / тег сохранит System.out и / или System.err, настроит их для создания или добавления в файл, а затем восстановит их в конце блока.

Что-то вроде:

<redirect file='foo.txt' append='true'>
  <anytag you='want' />
</redirect>
...