Eclipse + m2eclipse: один проект зависит от другого, без необходимости запускать mvn install

Я использую Eclipse Indigo + m2eclipse.

У меня есть два проекта в моей рабочей области: projectA объявляет зависимость Maven от projectB в своем POM.xml.

Я хочу иметь возможность вносить изменения в projectB и, без необходимости запускать «mvn install» в этом projectB, иметь возможность видеть изменения при запуске projectA!

У меня есть Properties / Maven / Resolve dependencies from Workspace projects отмечены в обоих проектах. Не работает. Мне всегда нужно выполнять «mvn install» в projectB (и, возможно, «Maven / Updates Dependencies ...» в projectA, чтобы изменения были видны.

Моя зависимость от projectB в POM projectA:

    <dependency>
        <groupId>com.xxxx</groupId>
        <artifactId>projectB</artifactId>
        <version>0.7-SNAPSHOT</version>
    </dependency>

GroupId, artifactId и версия соответствуют тем, которые находятся в POM projectB.

Я прочитал все, что смог найти в Интернете, но безуспешно!

Любая идея?

ОБНОВЛЕНИЕ: я не знаю, может ли эта информация помочь, но у меня также есть projectC в моей рабочей области, которая также зависит от projectB. И projectA зависит от projectC:

projectA -> depends on -> projectB
projectC -> depends on -> projectB
projectA -> depends on -> projectC

Точно такая же версия артефакта projectB используется как в projectA, так и в projectC. Я попытался исключить транзитивную зависимость от projectB в POM projectA, чтобы использовалась только прямая зависимость: она ничего не меняла.


person electrotype    schedule 13.06.2012    source источник
comment
Кстати, у вас был родительский pom, содержащий все три модуля A, B и C в вашем проекте?   -  person Pablo Lascano    schedule 14.06.2012
comment
donsenior, нет у меня родительского пома. Требуется ли, чтобы зависимости проекта работали с использованием m2eclipse?   -  person electrotype    schedule 14.06.2012
comment
Я не уверен, но думаю, что это необходимо, поэтому плагин знает, какие проекты у вашего реактора. Можете попробовать и дайте мне знать :) Создать родительский проект очень просто. См. здесь   -  person Pablo Lascano    schedule 14.06.2012


Ответы (2)


Вам необходимо использовать многомодульный проект, в котором каждый из ваших текущих проектов становится модулем. У всех будет общий родитель. Затем вы можете вызвать сборку из родительского POM, и реактор построит подмодули в требуемом порядке. Таким образом, ваши изменения в ProjectB будут видны в ProjectA.

Вот пример
http://www.sonatype.com/books/mvnex-book/reference/multimodule.html

person Hilikus    schedule 16.10.2012

Попробуйте использовать функцию «Обновить конфигурацию проекта». Кроме того, вы можете запустить mvn eclipse:eclipse, по умолчанию плагин настроит ваш проект для использования ссылки на подпроект, а не ссылок на установленные пакеты.

person Pablo Lascano    schedule 14.06.2012
comment
Я не хочу запускать mvn install, Updates Dependencies или Update project configuration каждый раз, когда вношу изменения в projectB! Я почти уверен, что m2eclipse должен заставлять проекты Maven (открытые в одной рабочей области) работать вместе без каких-либо специальных команд! - person electrotype; 14.06.2012
comment
Нет, вам нужно запустить его один раз, чтобы плагин добавил ваши проекты в ваш путь сборки (Eclipse / Java Build Path / Projects), а затем, когда вы вносите изменения в зависимые проекты, вам не нужно ничего компилировать / устанавливать, потому что ваш зависимость настроена как проект, а не как библиотека. - person Pablo Lascano; 14.06.2012