Подтвердить что ты не робот

Добавление ссылочных проектов Eclipse в зависимости Maven

Прямо сейчас у меня есть два проекта Eclipse - они оба используют Maven 2 для всей своей добра-зависимости от jar.

Внутри Eclipse у меня есть проект Foo, включенный в путь сборки проекта Bar, так что я могу использовать классы Foo из проекта Bar. Это очень хорошо работает в Eclipse, но когда я пытаюсь:

mvn compile 

внутри директории Bar он не работает, потому что Maven не знает об отношениях проекта к проекту в пути сборки Eclipse.

Если бы я использовал Ant, я бы просто использовал это, чтобы сделать что-то глупое, например скопировать foo.jar в classpath проекта Bar, но, насколько я могу судить, в Maven-land все делается гораздо менее хакерски.

Мне интересно, есть ли стандартный обходной путь для этого типа проблемы - кажется, что это будет довольно распространенным явлением, и я просто упускаю что-то простое о том, как работает Maven.

4b9b3361

Ответ 1

Возможно, вы ссылаетесь на другой проект только через Eclipse configure-> путь сборки. Это работает до тех пор, пока вы используете Eclipse для создания своего проекта.

Попробуйте запустить сначала mvn install в проекте Bar (чтобы поместить Bar в ваш репозиторий Maven), а затем добавьте зависимость в Foo pom.xml.

Это должно работать!

Ответ 2

Проверьте плагин m2eclipse. Он будет автоматически и динамически обновлять путь сборки проекта при изменении pom. Нет необходимости запускать mvn eclipse:eclipse.

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

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

Как было сказано ранее, Maven не будет знать о пути сборки проекта Eclipse. Вам нужно добавить все зависимости в pom, и вы должны убедиться, что все зависимости сначала mvn install и установлены, запустив mvn install.

Если вы хотите построить оба проекта с помощью одной команды, то вам может быть интересно объединение проектов.

Ответ 3

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

Родитель (pom.xml имеет ссылки на оба дочерних проекта/модули)  - > A (зависит от B)  - > B

то при запуске mvn eclipse: eclipse из корня Parent maven будет генерировать проекты eclipse для A и B, и он будет иметь B как необходимый проект в пути к классам A.

Вы можете запустить mvn install из корня родителя, чтобы получить оба проекта для компиляции.

Чтобы завершить настройку, вам нужно будет импортировать как A, так и B в Eclipse, убедившись, что вы не проверяете "Копировать проекты в рабочее пространство".

Ответ 4

Мне просто нужно было это сделать, и мне нужно было его построить с помощью команды mvn clean install. Вот правильный способ настройки в Eclipse. (С проектом B как зависимость от A)

  • Откройте pom.xml для проекта A в Eclipse.
  • Перейдите на вкладку Dependencies.
  • Нажмите кнопку Add... в середине страницы (для поля "Зависимости слева" )
  • В всплывающем окне должен быть поле под строкой с надписью над текстом Enter groupId, artifactId or sha1 prefix or pattern (*):. Введите идентификатор артефакта для проекта В в это поле.
  • Дважды щелкните банку, которую вы хотите добавить в качестве зависимости от этого проекта.
    • Возможно, вам придется обновить проект после.
    • Щелкните правой кнопкой мыши проект A в вашем проводнике пакетов
    • Maven → Обновить проект...
    • Затем нажмите OK во всплывающем окне.

Ответ 5

Я думаю, что лучший способ справиться с этим - сделать Bar a Maven проектом так же, как Foo, а затем mvn install, чтобы он был доступен в вашем локальном репозитории Maven. Недостатком является то, что вы должны установить этот проект каждый раз, когда хотите, чтобы Maven увидел изменения, которые вы делаете в Bar.

Ответ 6

Не полный ответ:
Bar pom должен включить Foo, чтобы использовать maven для его компиляции.
Меня тоже интересует этот вопрос, но с точки зрения того, как заставить eclipse распознавать зависимость от maven, на самом деле является другим проектом в той же рабочей области. В настоящее время я изменяю путь сборки после выполнения mvn eclipse:eclipse

Ответ 7

Если вы ссылаетесь на локальный проект, но его версия была обновлена ​​(как правило, увеличена), ее можно было бы найти только в вашем локальном репо, и вам нужно обновить (вероятно, исправленную) ее версию в POM (ых).


У нас есть "общий проект" (используется повсюду), который необязательно должен быть версией, так как мы помечаем его через контроль источника. поэтому либо

  • сохраняя его на фиксированной версии или
  • ссылаясь на него со специальной версией LATEST

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