2011-01-21 2 views
4

Я пишу приложение Java, которому требуется много статических данных, которые хранятся во многих типах перечислений. Так как я хотел бы удобный способ настроить эти данные, используя, например, файлы xml или json, но мне не разрешено делать это напрямую с перечислениями, я искал способ элегантно это сделать.Фаза препроцесса Java

Возможно, хорошим решением будет создание отдельной java-программы, которая считывает XML-файлы и создает источники java, которые затем скомпилируются с оставшейся частью источников. Мое сомнение заключается в том, как автоматизировать этот процесс автономно (например, ant?) И как интегрировать его без проблем с eclipse, чтобы он автоматически выполнялся при работе с проектом. Что-то похожее на то, что я поиск уже существует? Любое предложение решить мою проблему?

Спасибо!

+0

как будут использоваться эти перечисления? как они связаны с другой частью кода? – Maxym

+0

Вы можете использовать API компилятора и загружать их во время выполнения. –

+0

Поскольку это игра, они используются для определения многих характеристик этого ... например заклинаний или единиц или зданий или чего-то еще. До сих пор (и я еще далек от конца) я уже достиг чего-то вроде 20-25 перечислений. Я мог бы удовлетвориться только жесткой кодировкой констант перечисления, оставив параметры каждого из них, но я предпочитаю иметь все внутри некоторого файла конфигурации. – Jack

ответ

1

Создайте проект, единственной задачей которого является создание Java из ваших источников. Убедитесь, что фаза генерации выполнена Ant.

Теперь оберните этот проект в затмение и используйте пользовательский муравейник, который вызывает цель в уже существующем build.xml.

Это стандартная часть нашей инфраструктуры dev, поэтому это определенно работает.

2

Если элементы и общая структура каким-то образом исправлены (и что больше всего зависит от значений атрибутов), вы можете рассмотреть возможность определения перечисления с одной записью для каждого из ваших элементов и позволить перечислению заполнить свои собственные константы данные, считываемые из внешнего источника (XML/JSON) - во время загрузки или по требованию.

0

Рассматривали ли вы включение файлов XML в свою банку и загружаете их при запуске на карты, которые используют перечисление в качестве ключа?

1

Вы можете муравей легко интегрировать с затмением для того чтобы достигнуть что:

В Eclipse свойств открытого проекта, перейдите в раздел «строителей», нажмите кнопку «Создать ...», выберите «Ant Builder», выберите файл сборки , перейдите на вкладку «Цели» и нажмите «Установить цели ...» для «Автоматическая сборка». Выберите желаемую цель, и все готово. Цель будет запускаться каждый раз, когда вы сохраняете исходный файл (если выбрано «Build Automatically»).

1

Вы можете написать плагин maven, который генерирует код. Есть некоторые плагины, которые это делают. Он не будет работать автоматически, но вы можете подключить его к стандартному жизненному циклу maven, чтобы он выполнялся непосредственно перед компиляцией. Я недавно что-то делал.

Смежные вопросы