2016-09-23 3 views
0

Мы хотим запустить XSpec как часть наших сборок Maven для проверки наших XSL-преобразований. Плагин доступен от GitHub. Проблема возникает тогда, когда XSL-таблицы стилей, мы проверяем на функции Invoke не доступны в Саксонской-он, глядя, как это:Запуск XSpec с Maven и Saxon-PE7

Error at xsl:if on line 194 column 75 of dyxml_table_cals.xsl: 
XPST0017 XPath syntax error at char 0 on line 194 near {...table-enumeration-condition...}: 
Cannot find a matching 2-argument function named {http://saxon.sf.net/}evaluate(). 
Saxon extension functions are not available under Saxon-HE 

Мы имеем лицензии на PE. According to the Saxon documentation расширенные выпуски возвращаются к исходному источнику HE, когда информация о лицензии отсутствует, что, по-видимому, имеет место. Возможно ли активировать PE посредством Maven, например. используя плагин на codehaus, и как это будет выглядеть? Мы уже используем способ активации через Java, но знать другого, возможно, более элегантный способ был бы полезен, если возможно вообще.

ответ

0

После нескольких проб и ошибок мы нашли следующие решение будет работать:

  1. Создатель XSpec-Maven-плагин связанного выше зашит использование нелицензируемого саксонского HE. В частности, следующая строка вызывала вопросы:

    private final static Processor processor = new Processor(false); 
    

    Мы раздвоенный код и изменил его:

    private final static Processor processor = new Processor(true); 
    
  2. Мы создали специальный класс для активации лицензии и интегрировать его в исходный код плагина , (Не можете отправить здесь код.)

Это разрешило проблему лицензирования. Теперь наши тесты XSpec запущены и работают. Да нас!

0

Я не очень хорошо знаком с плагинами Maven для XSpec, но я пытаюсь дать некоторые подсказки и обходные пути.

pom.xml плагина Maven вы упомянули содержит зависимость к версии Saxon используется:

<dependency> 
    <groupId>net.sf.saxon</groupId> 
    <artifactId>Saxon-HE</artifactId> 
    <version>9.7.0-1</version> 
</dependency> 

Вы должны указать версию Saxon, чтобы использовать Saxon-PE или Saxon-EE. Однако эти версии Saxon, похоже, недоступны в публичных хранилищах Maven, поскольку, в отличие от Saxon-HE, они являются проприетарным программным обеспечением. Я думаю, вы можете поместить файл .jar для Saxon-PE в локальный репозиторий (см. Документацию Maven для этого). Я предлагаю поместить файл лицензии .lic в тот же каталог, что и файл .jar.

Другие две подсказки, которые могут помочь вам найти обходной путь:

  • XSpec позволяет указать версию Saxon в переменной окружения внутри shell или пакетного сценария. Затем вы можете запустить сценарий оболочки в своем проекте Maven, используя, например, exec-maven-plugin. Это не идеально, но этого может быть достаточно для вашего случая использования.
  • Существует another Maven plugin для запуска XSpec, вы также можете проверить это.

Надеется, что это помогает ...

+0

Спасибо за помощь. Я попробовал первый способ, который вы предложили: вытащить плагин-код из GitHub и заменить зависимость. Однако теперь проблема заключается в том, что дистрибутив Saxon не находит лицензию (он помещается в тот же каталог, что и SaxonPE.jar).К настоящему моменту мы нашли решение, которое я опубликую в виде отдельного ответа. – styks

+0

Получение лицензии из каталога, содержащего JAR, похоже на работу с большинством конфигураций, но не для всех. Я думаю, что это зависит от используемого ClassLoader. –

Смежные вопросы