M2Eclipse: разрешение зависимостей Maven из рабочей области Eclipse

На домашней странице M2Eclipse указано, что плагин способен на следующее:

Разрешение зависимостей Maven из рабочей области Eclipse без установки в локальный репозиторий Maven

Поскольку я не нашел никакой документации, я не мог понять, что именно это означает и как это делается. Меня особенно интересуют случаи, когда проект в рабочей области соответствует двум разным jar-файлам (каждый из которых содержит части классов).


person J Fabian Meier    schedule 11.01.2016    source источник
comment
Какая именно у вас установка? Если вы используете Maven с Eclipse, вам придется установить M2Eclipse, иначе вы не сможете работать.   -  person Tunaki    schedule 11.01.2016
comment
Я просто пытаюсь выяснить, может ли M2Eclipse быть для нас полезным инструментом. Я еще ничего не настроил.   -  person J Fabian Meier    schedule 11.01.2016
comment
На самом деле, я спрашивал о том, что вы имели в виду под проектом в рабочей области, который соответствует двум разным банкам (извините)   -  person Tunaki    schedule 11.01.2016
comment
У нас есть случаи, когда один Java-проект используется для создания двух разных jar-файлов (в контексте Java EE, где клиентский jar-файл отделен от остальных). Поэтому между проектами и jar-файлами нет 1:1, так что мне нужно выяснить, насколько умен или настраиваемый M2Eclipse.   -  person J Fabian Meier    schedule 11.01.2016
comment
Вы сейчас строите свой проект с Maven?   -  person Tunaki    schedule 11.01.2016
comment
Нет. Я просто пытаюсь собрать информацию о подходящем инструменте сборки.   -  person J Fabian Meier    schedule 11.01.2016
comment
Боюсь, тогда это слишком широко. Поскольку я энтузиаст Maven, я, очевидно, рекомендую его :). Я уверен, что то, что вы хотите сделать, может быть сделано с ним.   -  person Tunaki    schedule 11.01.2016
comment
Я почти уверен, что maven на самом деле не способен создавать два совершенно отдельных артефакта (например, JAR) из одного модуля (проекта). Он может создавать связанные артефакты (например, JAR, JAR исходников, JAR тестов и Javadoc и т. д.), но все они связаны по своей сути. Я никогда не видел Maven pom, который определяет совершенно отдельные артефакты, как вы описываете.   -  person E-Riz    schedule 11.01.2016


Ответы (2)


Рабочая область Eclipse (при использовании M2E) действует как локальный репозиторий maven. Каждый извлеченный вами проект Maven доступен для использования в качестве зависимости (так же, как если бы вы установили его в свой локальный репозиторий).

Например: если ваш проект A зависит от библиотеки B версии 1.0.0, и вы извлекаете исходный код для библиотеки B версии 1.0.0, Eclipse сможет скомпилировать A, используя рабочую версию B. Вам не нужно устанавливать lib B в вашем локальном репозитории.

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

Обратите внимание, однако, что версия зависимости для lib B на pom A и объявленная версия B на pom B должны ТОЧНО совпадать, чтобы это работало. Например, если в pom.xml для A у вас есть:

 <dependency>
        <groupId>a.b.c</groupId>
        <artifactId>B</artifactId>
        <version>1.0.0</version>
 </dependency>

Вам нужна касса B на версии 1.0.0.

Если вам нужно внести изменения в B, вам, вероятно, придется изменить версию зависимости на что-то-SNAPSHOT (например, 1.0.1-SNAPSHOT) и проверить эту версию B.

Вам также необходимо установить флажок «Разрешить артефакты рабочей области» в вашем проекте Eclipse, чтобы это сработало. (Щелкните правой кнопкой мыши проект -> Свойства -> Maven -> Разрешить зависимости от проектов рабочей области)

Если вы хотите убедиться, что Eclipse использует версию в вашей рабочей области, а не установленную версию (или даже версию из удаленного репозитория), проверьте вкладку «Зависимости» в редакторе pom.xml. «Обычные» зависимости отображаются с помощью значков jar, зависимости, разрешенные в рабочей области (например, lib B), отображаются с помощью значков проекта Eclipse.

person Isabella Almeida    schedule 11.01.2016
comment
Это довольно полезно! - person user218867; 20.01.2018

M2Eclipse считывает дескриптор Maven (pom.xml) ваших открытых проектов в вашей рабочей области для устранения артефактов, даже если проект еще не был установлен в вашем локальном репозитории maven (команда mvn install).

Например, у вас есть 2 проекта A и B. A зависит от B. Если вы работаете над обоими проектами, и оба открыты в вашей рабочей области. Eclipse автоматически создаст проект B, когда разрешит зависимости проекта A. Таким образом, когда вы будете запускать проект A, Eclipse гарантирует, что вы используете самую последнюю версию проекта B.

Если вы используете Maven напрямую для запуска проекта A, Maven получит версию проекта B из вашего локального репозитория. Таким образом, вы должны установить проект B перед запуском A, чтобы иметь последнюю версию (mvn install B).

person Quentin    schedule 11.01.2016