Как эффективно работать с большим рабочим пространством Maven-проекта в Eclipse?

Я работаю над большой многомодульной системой на основе Maven с примерно 20 подмодулями и дополнительным небольшим количеством зависимостей от внешних проектов, которые также являются проектами Maven в моем рабочем пространстве Eclipse. Всего в рабочем пространстве Eclipse около 30 проектов.

Все проекты - это импортированные проекты maven с m2e, и мы используем Subversion (с подключаемым модулем Subversive) для управления версиями. Eclipse - это недавно обновленный Kepler.

Моя рабочая станция вполне способна, с 4-ядерным процессором Intel i7, 16 Гб оперативной памяти и твердотельным диском.

Проблема в том, что Eclipse работает очень медленно, когда доходит до:

  1. Командная синхронизация и разрешение конфликтов. Каждый раз, когда я исправляю конфликт и помечаю как объединенный, мне приходится ждать 10-30 секунд, пока Eclipse обновит рабочее пространство и т. Д. Не говоря уже о том, что древовидное представление конфликтного режима затем полностью очищается, поэтому мне нужно выбрать исходящий режим, а затем конфликтный режим снова для повторного заселения. Дважды - потому что он очищается, когда я сохраняю разрешенный исходный файл, и затем снова, когда я помечаю как объединенный.

  2. Строительство. Я использую конфигурации запуска Maven для создания сборок Maven. Но по какой-то причине выполнения сборки Maven недостаточно для Eclipse - тогда ему также необходимо выполнить собственную сборку всего рабочего пространства, что занимает как минимум столько же, а то и гораздо дольше, когда Eclipse решает повесить несколько минут на 'Очистка Выходная папка проекта xxx 'для нескольких проектов.

В результате часто требуется более часа для обновления из системы управления версиями, разрешения конфликтов, сборки и подготовки к запуску или продолжению разработки.

Я и мои коллеги часто чувствуем, что Eclipse тормозит развитие, хотя ему следовало бы его улучшить.

Что можно сделать, чтобы уменьшить синдром вечного ожидания затмения?


person Per    schedule 31.01.2014    source источник
comment
Что произойдет, если вы отключите сборку Eclipse автоматически?   -  person durron597    schedule 31.01.2014
comment
Сделал это, но Eclipse-build все еще нужно выполнить вручную, чтобы Eclipse узнал об изменениях. После сборки Maven Eclipse не знает, что ошибки были устранены и т. Д.   -  person Per    schedule 31.01.2014
comment
Вся суть m2e в том, что вам НЕ нужно делать сборки maven вручную, ctrl-b должен собрать все, что вам нужно, а обычные механизмы запуска или развертывания должны просто работать - способ eclipse.   -  person KarlP    schedule 17.09.2015


Ответы (3)


У нас такая же проблема .... 72 проекта в нашей рабочей области обычно делают невозможным использование m2e. Мы пытаемся не использовать m2e и запускать исполняемый файл maven в качестве внешнего инструмента с некоторыми конфигурациями. И вы можете заставить maven сгенерировать ваши .project и .classpath, чтобы изменить конфигурации eclipse:

mvn eclipse:eclipse

Не лучший вариант, но то, что есть сейчас.

person Plínio Pantaleão    schedule 31.01.2014
comment
Как вы думаете, mvn eclipse: eclipse работает лучше, чем m2e? - person Per; 31.01.2014
comment
Я думаю, что на рабочем пространстве eclipse с 70 проектами он работает лучше. Фазы eclipse и maven не взаимодействуют друг с другом, и я могу «запустить» фазу maven, когда захочу. - person Plínio Pantaleão; 03.02.2014
comment
Да, то же самое здесь с проектом 100 модулей, eclipse: eclipse работает нормально, m2e непригоден для использования - person Andrea Aime; 13.03.2014
comment
328 модулей - победите это! Я буквально плачу о решении. (Да, уменьшение количества модулей - одна из них ... мы уже этим занимаемся!) - person Matthew Cachia; 18.06.2015

Вот несколько хороших советов:

  1. Прежде чем приступить к импорту больших проектов, перейдите в раздел "Проекты" и снимите флажок "Создавать автоматически".
  2. Импортируйте проекты в самых маленьких подкомпонентах, которые вы можете. Если проект Mavenized, это означает выбор самого нижнего pom.xml в дереве для импорта каждый раз, а не импорт большого родительского POM и всех его подпроектов.
  3. Если вы не работаете (например, не изменяете) исходный код определенного проекта, закройте его, щелкнув правой кнопкой мыши и выбрав «Закрыть проект». Это освободит ресурсы для использования Eclipse где-нибудь еще. Если вам все еще нужно увидеть исходный код чего-либо, не изменяя его (для отладки), вы можете добавить исходный контейнер s по мере необходимости
  4. Используйте разные рабочие пространства для разных проектов. В конце концов, быстрее получить две рабочие быстрые версии Eclipse, чем одну огромную медленную.

Если вы не можете разделить проект, вы также можете попытаться выделить Eclipse больше памяти и убедиться, что вы используете JVM 8, например

-Dosgi.requiredJavaVersion = 1.8 -Xms512m -Xmx2g

Похоже, вы просто имеете дело с чем-то, что слишком велико для большинства IDE, но это может быть не так. Если все остальное не помогает, почему бы не попробовать IntelliJ, чтобы узнать, работает ли это лучше для вас?

person Tadhg    schedule 27.07.2016
comment
Хотя эти советы хороши, они не спасут вас проектом с поддержкой m2e с трехзначными подпроектами ... - person zb226; 01.11.2019

Ребята, у меня была такая же проблема, но вместо использования IDE для сборки методом грубой силы вы можете правильно проанализировать дизайн этих приложений? Я говорю, что, поскольку есть приложения, которые не нужно собирать полностью, вы можете развернуть их отдельно и анализировать в модулях. В большинстве случаев нет причин для объединения тысяч и тысяч классов, их создания и сохранения вместе ... IDE, такая как Eclipse, не была предназначена для таких задач, а предназначена для локальных разработок, и серверы выполняют сборку интеграции, не рабочие станции. Возможно, ваш дизайн или ваша философия непрерывной сборки неправильно поняты.

Cya.

person Lambda Pool    schedule 09.01.2015