Генерация Java-кода для платформы
Я работаю над Java-фреймворком для системы домашней автоматизации. Одним из требований для этой системы домашней автоматизации является то, что разработчики должны иметь возможность легко расширять функциональность. Я думал, что отличный способ упростить вещи - позволить разработчикам создать простой XML-файл, описывающий функции их периферийных устройств; а именно команды, которые он может обрабатывать, и события, которые он может транслировать. (Аналогично событиям WHEN и THEN в таких системах, как Wig Wag: http://www.kickstarter.com/projects/wigwag/wigwag-scan-it-control-it-rule-it-share-it)
Я хотел бы проанализировать XML-файл, предоставленный разработчиком, и автоматически сгенерировать код Java для взаимодействия с остальной системой, что-то вроде того, что Google делает со своим файлом R.java в Android SDK. (Я понимаю, что это обрабатывается APT, а не Eclipse) Некоторые решения, которые я рассмотрел:
- Шаблоны Eclipse Java Emitter (JET) - JET очень сложен в использовании, а документация очень скудная / несуществующая. Я получил его для создания файла реализации Java с
generate()
метод, но я не могу узнать, как получить IDE для генерации кода Java, который я определил в шаблоне. Я попробовал этот учебник: https://weblogs.java.net/blog/survivant/archive/2009/01/template_code_g.html но не смог заставить работать пример с Car; Я получаю эту ошибку:
Ошибки произошли во время сборки.
Ошибки запуска компоновщика 'JET Builder' в проекте 'JETTest'.
Неверная директива в main.jet в строке 1 столбца 1
Неверная директива в main.jet в строке 1 столбца 1
Неверная директива в main.jet в строке 1 столбца 1
Неверная директива в main.jet в строке 1 столбца 1
- JAXB - кажется, это больше для маршаллинга / демаршаллинга Java-объектов и не решает мою проблему
- Компилятор ANT - я получил это для генерации класса, но он не настолько гибок, как мне бы хотелось (например, я хочу иметь возможность получить имя пакета из XML-кода, определенного разработчиком, но каталог вывода статически назначается в ANT
build.xml
файл.) - Apache Velocity - взглянул на него, но я уже разочаровался в JET, и это не выглядело как отличное решение при беглом осмотре. (Я был бы рад оказаться неправым:))
Решение ANT до сих пор выглядит лучше всего для меня, потому что оно на самом деле работает, но мне нравится JET, потому что оно кажется самым плавным.
Теперь мой вопрос. Должен ли я просто пойти с ANT, или JET намного лучше? Кроме того, если JET намного лучше, может кто-нибудь, ПОЖАЛУЙСТА, указать на простое руководство, которое не совсем устарело?
1 ответ
Я смотрю на это так: используйте фреймворк или инструмент, который проще и проще в использовании. Более того, имеет хорошую документацию. Так что ANT выглядит как ваша лучшая ставка.
Однако могу я предложить другую альтернативу - Groovy Templates. http://groovy.codehaus.org/Groovy+Templates
Делает ту же работу, но действительно прост в использовании и имеет хорошую документацию. Мы используем это в нашей компании для преобразования заказов из действительно старых систем.