Подтвердить что ты не робот

Почему нет описания схемы Apache Ant xml или DTD для скриптов сборки?

Может ли кто-нибудь объяснить мне, почему? Я всегда использовал Maven и отсутствие определения xml для Ant build script - это то, что заставляет меня искать через Интернет и документацию вместо одного взгляда на xsd или DTD.

Например, почти невозможно выяснить, может ли определение цели иметь собственное объявленное свойство или нет.

4b9b3361

Ответ 1

Существует FAQ для этого:

Есть ли DTD, который я могу использовать для проверки моих файлов сборки?

Неполное DTD может быть создано задачей <antstructure>, но у этого есть несколько проблем:

  • Он не знает о необходимых атрибутах. Здесь может помочь только ручная настройка этого файла.
  • Он не является полным - если вы добавляете новые задачи через <taskdef>, он не будет знать об этом. См. эту страницу Мишеля Касабианки для решения этой проблемы. Обратите внимание, что DTD, который вы можете загрузить на этой странице, основан на Apache Ant 0.3.1.
  • Это может быть неверный DTD. Поскольку Ant позволяет авторам задач определять произвольные элементы, коллизии имен будут происходить довольно часто - если ваша версия Ant содержит необязательные задачи <test> и <junit>, есть два XML-элемента с именем test (задача и вложенный дочерний элемент <junit>) с разными списками атрибутов. Эта проблема не может быть решена; DTD не дают синтаксиса, достаточного для поддержки этого.

Ответ 2

Вы также можете использовать цель ant:

  <target name="dtdgen">
    <antstructure output="ant.dtd"/>
  </target>

для создания файла "ant.dtd" для вашего файла build.xml. Просто добавьте цель в свой script и выполните "ant dtdgen".

(* Chris *)

Ответ 3

Я где-то читал, что создать схему для ANT невозможно, потому что ANT не является достаточно регулярная грамматика. Вы можете протестировать его для соответствия грамматике XML ванили если вы используете Stylus Studio.

Вы также можете передать некоторые из ваших рабочих сценариев в Stylus Studio и попросить его создать XSD. Затем полируйте XSD вручную. Это не будет полным ANT, но это может помочь уловить ошибки.

Мой способ справиться с проблемой заключается не в том, чтобы писать непосредственно ANT XML, а в том, чтобы сгенерировать его с помощью программы топинга. Таким образом, гарантируется, что будет правильно, как только я получу программу правильно. Затем он идеально согласуется во всех проектах.

см. https://wush.net/websvn/mindprod/filedetails.php?repname=mindprod&path=%2Fcom%2Fmindprod%2Fzzz%2FMkAnt.java

для моего собственного кода точечного копирования.