Стратегия использования сборок муравьев из Eclipse - PullRequest
4 голосов
/ 28 января 2011

У нас есть очень специальные файлы сборки ant для наших проектов, которые в основном делают это:

  • Некоторая работа перед компиляцией (например, генерация кода)
  • Компиляция кода Java
  • Некоторая работа после компиляции (например, копирование файлов в каталог классов для включения в файл JAR; создание файлов JAR; копирование файлов в другое место, чтобы Tomcat их забрал)

В настоящее времянаша интеграция с ant состоит из указания Eclipse запустить муравей «do it all» (который выполняет свою собственную компиляцию).

Это кажется сомнительным, потому что ant компилирует, а не Eclipse, а компилятор Eclipse выдает более совершенную ошибкуСообщения.Также неясно, должен ли сначала выполняться сборка ant или сборка Java по умолчанию.И нам нужно указать, чтобы цель ant запускалась в основном, когда что-либо в проекте изменилось.Это приводит к тому, что муравей запускает весь механизм при каждом спасении.Это медленно.(Если мы не редактировали входной файл для генератора кода, то мы можем пропустить запуск генератора кода, и ant займет много времени, даже чтобы понять, что он ничего не должен делать.)

Есть предложения по стратегиям, которым нужно следовать здесь?

  • Нужно ли разделить сборщик муравьев на несколько сборщиков муравьев, каждый из которых имеет свой собственный набор наблюдаемых ресурсов, некоторые из которых выполняются перед сборщиком Java,другие, работающие после компоновщика Java?
  • Должны ли мы сначала запустить ant, затем компоновщик Java или наоборот?Какими должны быть настройки обновления?
  • Хотим ли мы сказать Eclipse перестроить файлы классов, к которым прикасались другие, или нет?

Спасибо за любые предложения.

Ответы [ 2 ]

7 голосов
/ 28 января 2011

Лучший способ делегировать задание на генерацию Eclipse - через Ant Builder. Смотрите здесь о том, как настроить компоновщик.

В вашем файле build.xml создайте 2 цели: generate-code и cleanup-generated-code.

Затем подключите их таким образом на вкладке Targets строителя:

Ant Builder Targets configuration

Это позволит вашему проекту хорошо реагировать на события.

Следующий шаг - заставить Eclipse автоматически скомпилировать ваши сгенерированные источники.

Для этого в корне вашего проекта создайте каталог с именем generated-src. Этот каталог должен быть пустым, и вы должны поставить его под управление вашей системы контроля версий. Поскольку будет сгенерированный код, поместите файл .xxxignore в этот каталог.

Как только каталог generated-src будет на месте, сделайте его исходным каталогом вашего проекта (вкладка Source в Java Build Path)

Source directory

И последнее, но не менее важное: вы хотите отключить Java-компилятор Eclipse, как только вы сгенерировали свои исходные коды. Для этого вам нужно изменить вкладку Refresh вашего Ant Builder.

Вот настройка, которая делает это:

Refresh Tab

Когда вы нажимаете кнопку Specify Resources, убедитесь, что выбран весь каталог вашего проекта, как здесь:

Selected Resources

Таким образом, когда что-то в вашем проекте изменяется, он запускает компоновщик муравьев, который может или не может регенерировать источники, что приведет к перекомпиляции Java.

Один последний скриншот. Убедитесь, что и build.xml, и базовый каталог относительно вашего $ {workspace_loc} на вкладке Builder Main, как здесь (в основном используется только кнопка Browse Workspace):

Builder's Main Tab

Как только это будет сделано, подключите generate-code и cleanup-generated-code к своим обычным целям в ваших build.xml, которые вы бы вызывали для сборок из командной строки. Таким образом, Eclipse и ваша сборка из командной строки делают точно такие же шаги для генерации кода. Более того, ваша сборка Eclipse будет полностью зависеть от реальных источников вашего проекта.

0 голосов
/ 28 января 2011

Вы можете обнаружить, что вам не нужно запускать сборку Ant для локальной разработки.Вы должны позволить Eclipse позаботиться о компиляции кода и развертывании в локальном экземпляре Tomcat.Сохраните сборку Ant для развертывания в совместно используемой среде разработки.

Конечно, вам потребуется вызвать что-то для запуска генерации кода.Но я предполагаю, что вам не нужно делать это очень часто.Вы можете создать конфигурацию запуска Eclipse для запуска конкретной задачи Ant, чтобы сгенерировать код и добавить его в меню избранного.Вызвать его вручную, когда вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...