В IDEA есть способ принудительно переиндексировать снимки Maven? - PullRequest
3 голосов
/ 04 марта 2010

У нас есть большой многомодульный проект Maven.Обычный стиль работы - проверить несколько модулей, которые вас интересуют, и для других модулей, от которых они зависят, использовать JAR-снимки, предоставленные Maven.

В большинстве случаев это работает;когда нам нужны обновленные снимки, мы просто принудительно повторно импортируем из вкладки «Проекты Maven».Однако повторно импортированные моментальные снимки, кажется, никогда не переиндексируются.

Шаги для воспроизведения:

  1. В одном проекте проверьте / настройте модуль, который зависит от снимка Maven другого модуля.
  2. В отдельном проекте внесите изменения в этот другой модуль, например, добавив метод, и разверните его в репозитории Maven.
  3. В первом проекте обновите снимок.
  4. В первом проекте напишите некоторый код, который вызывает новый метод.

Ожидается:

  • Нет проблем при вызове нового метода.

Факт:

  • Вызов метода помечен ошибкой «Не удается разрешить метод».Однако:
    • Код компилируется (через меню «Сборка» или контекстное меню)
    • Код выполняется, включая код, вызывающий новый метод

Есть ли способ обойти это?Было бы неплохо избавиться от красной черты, сделать автозаполнение и т. Д. Работать, и в целом иметь возможность продолжать использовать IDEA, как вы должны.

Возможно, актуально: у нас есть смесь разработчиков Eclipse и IDEA, и чтобы обойти некоторые ошибки интеграции Eclipse / Maven, мы установили для snapshot updatePolicy значение «never» в наших файлах pom.xml.Однако я ожидаю, что параметр IDEA (политика обновления моментальных снимков: всегда обновлять) будет переопределять это, если я не пойму неправильно, что делает параметр.

(«Никогда» может показаться нелогичным, но я думаю, что это правильно для разработчиков:обновлять зависимости вручную, так же как вы обновляете исходный код из VCS вручную. Для реальных сборок у нас есть Hudson, так или иначе, переопределяет настройки POM. И что еще более важно, установка его «никогда» не останавливает Eclipse от неистовых ненужных полных перекомпиляций.)

Ответы [ 3 ]

2 голосов
/ 04 мая 2012

Иногда нажатие кнопки «Синхронизировать» (желтые стрелки рядом с кнопкой «Сохранить» в левом верхнем углу окна) исправляет это для меня - я думаю, что это заставляет IDEA искать любые обновленные файлы JAR в файловой системе. Может быть ошибка в уведомлении файловой системы ...

(В этом случае ваш проект maven указывает на все правильные JAR-файлы, но IDEA не реиндексирует новый файл JAR. Так что проблема заключается в индексе файловой системы, а не в настройке проекта maven)

0 голосов
/ 28 октября 2016

Я выполнил следующее:

Открыть настройки> Сборка, выполнение, развертывание> Инструменты сборки> Maven> Хранилища

Выберите соответствующие репозитории (локальные) и нажмите «Обновить».

Это переиндексирование и поиск вновь добавленного класса в банке зависимостей сработало, и IntelliJ предложил артефакт и соответствующий импорт.

0 голосов
/ 23 марта 2010

Извините, у меня нет правдивого ответа, но я очень подозреваю, что ваша проблема возникла из-за установки updatePolicy никогда. Не могли бы вы уточнить, почему вы считаете это необходимым? Я совсем не удивлюсь, если настройка IDEA не переопределит это правильно. Вы можете использовать плагин помощи maven с эффективным pom, чтобы увидеть, подходит ли он для IDEA.

Да, и ваше оправдание в () в конце звучит очень сомнительно. У меня не было этих проблем в Eclipse. Вы используете плагин M2Eclipse? Я думаю, что «никогда» НЕ подходит для разработчиков. На самом деле, я считаю, что это должно быть всегда для разработчиков .. это поведение по умолчанию.

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