2016-01-22 5 views
1

Я использую команду maven, которая очищает, строит весь проект, создает войну и развертывается на сервере. Я не могу использовать Intellij для этого, поскольку у меня есть только версия Community. Он создает проект в том же каталоге, что и intellij.Компилятор Intellij Idea перекомпилирует уже скомпилированный проект

Чтобы ускорить работу, я написал скрипт, который находит скомпилированные файлы в локальном «целевом» каталоге, которые новее, чем те, что на сервере, и копируют их. Все работает нормально, но проблема в том, что Intellij не видит классы, скомпилированные с maven, как те, которые он должен пропустить и перестраивает весь проект.

В настоящее время он работает так:

  1. вручную в терминале построить весь проект с мавена
  2. Вернуться к IntelliJ -> сделать проект
  3. перестраивает все
  4. Выполнить скрипт -> он меняет все файлы

Что я пытаюсь достичь:

  1. Вручную в конце построить весь проект с maven
  2. Вернитесь к intellij. Изменение одного файла -> сделать проект
  3. компилировать только один файл Java
  4. Выполнить скрипт -> он обменивает только один файл .class

Таким образом, проблема в том, как я делаю IntelliJ лечить файлы уже скомпилирован с внешним инструмент как скомпилирован?

ответ

1

У вас нет. IntelliJ IDEA имеет собственную инкрементную систему компиляции, которая отслеживает зависимости между скомпилированными файлами и перекомпилирует минимальный набор классов для каждого набора изменений. Внешняя компиляция с такими инструментами, как Maven или Gradle, не обновляет базу данных инкрементной компиляции IntelliJ IDEA. Из-за этого IntelliJ IDEA не может распознать тот факт, что классы уже скомпилированы с помощью внешнего инструмента и будут перекомпилированы.

+0

Если бы собственная инкрементная система компиляции IDEA сгенерировала все файлы классов, почему бы не запустить ее с помощью уже созданных файлов классов. Почему функция Run или Debug должна пройти всю краску, создав ее еще раз? У меня есть приложение, которое длится примерно 30 секунд, и это очень раздражает. Я использую dcevm, который помогает мне применить переход к запущенной программе, но для программ, которые мне нужно перезапустить, для их запуска требуется слишком много времени. Возможно ли найти каталог .class и добавить его в класс сборки? – Mike

+0

Еще раз: функция «Запуск» или «Отладка» должна обеспечивать обновление ваших классов и не может распознать факт, что классы уже скомпилированы с помощью внешнего инструмента. – yole

+0

Я не использую внешний инструмент для компиляции, и я теряю такие вещи, как gradle и maven, как чума. – Mike

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