Проблема jaxb schemagen в linux при вызове из build.xml. Не можете найти исходные файлы?
Вот подробности: это хорошо работает в Windows, но не будет работать в Linux, и мне нужно, чтобы оно работало на машине с Linux.
схема-версия дает одинаковые результаты как в Windows, так и в Linux.
версия схемы "JAXB 2.1.10 в JDK 6" Справочная реализация архитектуры JavaTM для привязки XML (JAXB) (сборка JAXB 2.1.10 в JDK 6)
Вот код муравья, о котором идет речь:<target name="genSchema" description="Generate Schema from Java source files">
<exec executable="schemagen">
<arg line="-d ../target/schema ../path/to/source/*.java" />
</exec>
</target>
Прежде всего, все это прекрасно работает в Windows. В Linux, если я запускаю следующее из командной строки, нет проблем при создании схемы:
schemagen -d../target/schema../path/to/source/*.java
Примечание: написание../target/schema/schema1.xsd
Однако, если я запускаю цель ant из build.xml выше в Linux, я получаю следующую ошибку:
Ошибка [exec]: невозможно прочитать: ../path/to/source/*.java [exec] 1 error [exec] Результат: 1
В Windows точно такая же цель муравья работает нормально. Пожалуйста помоги! Вытаскиваю мои волосы на этом. Дайте мне знать, если вам нужно больше деталей.
Что бы это ни стоило, я также попытался использовать абсолютный путь вместо резервного копирования каталога для доступа к исходным файлам в моей задаче ant... Я все еще получаю ту же ошибку при попытке сделать это с помощью ant.
Ex. <arg line="-d ../target/schema /home/path/to/source/*.java" />
[exec] error: cannot read: /home/path/to/source/*.java
1 ответ
Попробуй это:
<exec executable="bash">
<arg line='-c "schemagen -d ../target/schema ../path/to/source/*.java"' />
</exec>
Как мы уже говорили выше, проблема, похоже, заключается в том, что в некоторых системах Unix задача exec не расширяет подстановочные знаки. Таким образом, это попытка передать команду оболочке, которая сделает расширение за вас.
И да, я понимаю, что это решение делает файл build.xml специфичным для Unix. Если это работает, есть способы решить эту проблему.