Maven m2eclipse обнаруживает изменения в зависимости в рабочей области и автоматически устанавливает - PullRequest
2 голосов
/ 31 августа 2011

В Eclipse я обнаружил досадную проблему при работе с m2eclipse.

Моя рабочая область содержит 2 проекта, приложение A и библиотеку B. У приложения A POM есть B как зависимость, и все работает правильно. (Зависимость проекта обнаруживается и используется при сборке приложения)

Но если я изменю какой-то код в проекте B и забыл mvn: установите его, когда я собираю приложение, оно использует последнюю собранную версию библиотеки и теряет мои последние изменения.

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

Или, может быть, мой подход неверен или что-то очевидно, что я скучаю?

Ответы [ 4 ]

2 голосов
/ 31 августа 2011

Вы можете сказать m2eclipse использовать зависимости разрешения из рабочей области, а не через обычные механизмы.В свойствах вашего проекта (НЕ в свойствах рабочего пространства) выберите Maven-> Разрешить зависимости из проектов рабочего пространства.

image Resolve dependencies from Workspace projects">

Это будет означать, что при изменении B и последующей компоновке A изменениядолжен быть выбран автоматически.

Если, однако, вы собираете вне Eclipse, вам нужно будет выполнить обычную установку mvn, чтобы получить правильные зависимости.

1 голос
/ 31 августа 2011

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

В качестве альтернативы, вы можете поместить оба проекта в родительский проект maven, а затем построить родительский.Это приводит к тому, что весь дочерний проект тоже собирается (так что в вашем случае это библиотека и приложение).

0 голосов
/ 01 сентября 2011

Если вы хотите запускать последние снимки на локальном компьютере, попробуйте настроить их на запуск непосредственно из Eclipse.

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

  • Это сэкономит вам много времени, не выполняя промежуточные этапы сборки.
  • Вы можете запускать и останавливать серверы, не покидая IDE.
  • Консоль Eclipse имеет дополнительные функции, которые вы не получаете от системной консоли.
  • Вам не нужно изменять стартовые скрипты, чтобы присоединить отладчик.
0 голосов
/ 31 августа 2011

Я думаю, у вас есть несколько вариантов здесь

  1. Если вы можете изменить настройку проекта maven, я бы предложил вам использовать maven multimodule

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

  3. Выберите Библиотека B ==> Свойства ==> Maven ==> в поле ввода в разделе Цели, чтобы вызвать после очистки проекта: ==> введите: установить

  4. Чтобы развернуть любое изменение, внесенное вами в Project B в затмении, в локальное / удаленное хранилище maven, вам нужно запустить Clean build in eclipse. Это позволит развернуть последнюю библиотеку B в хранилище maven
  5. Также убедитесь, что ваша версия библиотеки B является SnapShot во время разработки
...