Генератор кода на основе Maven
Мне нужно иметь config.xml
файл в моем проекте Eclipse, и использовать этот файл в качестве входных данных для цели Maven. Эта цель будет использовать config.xml
автоматически генерировать код (как XML, так и Java) под generated/
каталог (также в моем проекте).
Таким образом:
MyProject/
src/main/config
config.xml
src/main/java
(All my Java source)
(rest of my project)
generated
source/
java/
xml/
Таким образом, цель Maven будет начата до любого compile
- или же build
связанных целей и будет использовать config.xml
заселить generated/source/*
каталоги, как они мне нужны. Эти источники затем будут доступны для последующей обработки.
Существует ли такой инструмент? Самый близкий мне найти XDoclet, но у меня есть две проблемы с ним:
- Я не могу сказать, насколько он гибок; то есть, в какой степени я могу поместить свои собственные файлы конфигурации в config.xml, дать XDoclet XSD и отпустить его в город; подробнее об этом ниже
- Не могу найти никаких целей / плагинов для Maven.
Что касается первого пункта / проблемы, то я имею в виду следующее: в идеале я хотел бы поместить любой вид XML внутрь config.xml
, Итак, для этого идеального инструмента требуется только XSD для этого XML и немного XSLT (или тому подобное), чтобы определить, как автоматически генерировать код из XML, найденного в файле конфигурации.
Я не уверен, что XDoclet допускает такую гибкость.
Есть идеи или предложения? Там должно быть что- то вроде этого! Заранее спасибо,
2 ответа
XDoclet довольно гибкий, но он предназначен для обработки исходных текстов Java и создания чего-то из этого. Если вы начнете с некоторого xml, вашим лучшим выбором будет XSLT-преобразование - xdoclet не подходит для этого.
Я использую antrun и задачу xslt, которая работает с Ant для создания других артефактов кода. Затем используйте плагин build-helper, чтобы добавить сгенерированные папки в список исходных папок. Это должно предоставить вам наиболее гибкую базу для написания кода, а также работать с m2e (хотя вам нужно запускать maven generate-sources самостоятельно, так как antrun не будет запускаться автоматически, поскольку для него еще нет соединителя).