Сбой Ant <junitreport>из-за функции безопасной обработки Xalan (XSLT) - PullRequest
6 голосов
/ 23 ноября 2011

Мои тесты junit запускаются через ant 1.7 из моей среды Eclipse, но сборка завершается ошибкой при выполнении задачи junitreport:

СТРОИТЬ НЕУДАЧИ ... / build.xml: 222: Ошибки при применении преобразований: javax.xml.transform.TransformerException: java.lang.RuntimeException: Использование функции расширения 'xalan: //org.apache.tools.ant.util.StringUtils: replace' не допускается, если для функции безопасной обработки установлено значение true.

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

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Это может быть связано с очень похожей известной ошибкой в ​​Ant 1.8.2 .

Исправлено для Ant 1.8.3 , но Apache Ant 1.8.3 еще не выпущен на 25 января 2012 г. Описание WHATSNEW для этого исправления:

<junitreport> did not work in embedded environments on JDK 7.
Bugzilla Report 51668.

Как только Ant 1.8.3 выпущен и включен в плагин Eclipse Ant, эта проблема должна быть решена.

Тем временем вы можете отредактировать ваш скрипт сборки так, чтобы он запускал цель JUnitReport только при запуске Ant из командной строки, а не из Eclipse. Чтобы сделать это определение, найдите файл, присутствующий в вашей обычной папке % ANT_HOME% / lib , которого нет в папке плагина Eclipse Ant (или создайте там файл), затем установите свойство, если файл обнаружен. Е.Г.

Незадолго до конца вашей цели JUnit:

<available file="${ant.home}/lib/ant.pom" property="full.ant"/>

В начале вашей цели JUnitReport:

  <target name="junitreport" description="Create a consolidated test results report" if="full.ant">

Вышеприведенные фрагменты Ant работают, потому что ant.home устанавливается в папку Eclipse Ant Plugin только тогда, когда Ant запускается из Eclipse. Когда Ant запускается из командной строки, ant.home будет соответствовать вашей переменной среды ANT_HOME . Также предполагается наличие свойства eclipse.running Ant, но я не смог обнаружить это свойство.

Другой промежуточный вариант - загрузить новейшие JAR-файлы ночных сборок Ant из по этой ссылке на странице проекта Apach Ant, а затем поместить эти JAR-файлы в соответствующую подпапку Eclipse Ant-плагина. Нет гарантий, что это сработает.

0 голосов
/ 01 декабря 2011

Я попытался выяснить, как заставить задачу junitreport отключить функцию безопасной обработки (которая мне не нужна и на данный момент только мешает мне), но я понятия не имею, как, поскольку у задачи нет атрибут, чтобы отключить его.

Вы всегда можете просто закомментировать задание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...