Проблема 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. Если это работает, есть способы решить эту проблему.

Другие вопросы по тегам