Eclipse + Maven + Git + многомодульные проекты = несчастье - PullRequest
12 голосов
/ 20 октября 2011

У нас есть многомодульный проект с использованием Eclipse и Maven.Единственный способ, которым я мог заставить его работать в прошлом, был использовать плоскую разметку для проектов, где родительский модуль был равноправным с другими модулями.Это отлично работает с m2eclipse и Subversion.

Теперь мы бы хотели перейти на Git и GitHub.Я хотел бы представить весь проект вместе со всеми модулями как единый проект на GitHub.Проблема в том, что EGit, плагин Eclipse / Git, хочет управлять проектами по одному, а не группами проектов, и поэтому, если у вас плоский макет, вы не сможете это сделать.

Правильный ответ - использовать стандартную иерархическую структуру Maven и управлять родителем и всеми модулями как единым целым.Но Eclipse это не нравится, и никакие мелочи не заставят Eclipse принять вложенные проекты.m2Eclipse не поддерживает иерархии: https://issues.sonatype.org/browse/MNGECLIPSE-2291

Так что вы делаете?Есть ли Git из командной строки и отказаться от возможности видеть, какие файлы изменились в Eclipse?Или отказаться от «Затмения»?

Ответы [ 4 ]

12 голосов
/ 21 октября 2011

Стандартная многомодульная структура Maven в виде одного репозитория git прекрасно работает для меня в Eclipse Indigo с M2e и подключаемым модулем git, который появляется в этой среде. Вы не можете попросить Eclipse сделать выборку за вас, но как только вы извлечете из командной строки, вы используете Team / Share, скажем «Git!» и все хорошо.

Я думаю, что вижу источник: иерархия является проблемой для проектов внутри рабочей области, а не для "существующих проектов", которые вы импортируете.

Вот типичный рабочий процесс:

  1. используйте git svn clone, чтобы получить дерево. это иерархическое мультимодульное дерево mvn
  2. в eclipse, используйте import / maven / существующий проект maven. Точка на все дерево
  3. выбрать все
  4. OK

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

До того, как я использовал m2e, я использовал maven-eclipse-plugin. И это также работало в этих случаях, потому что он не генерирует .project / .classpath для <packaging>pom</packaging> агрегирующих проектов, поэтому Eclipse никогда не вызывается для того, чтобы что-то вкладывать.

Я не одинок - см. Инструкции по установке для разработчиков в виде cxf.apache.org для примера с открытым исходным кодом, который вы можете попробовать сами.

4 голосов
/ 22 октября 2011

Возможно ли, что вы работаете со старыми версиями инструмента?

У меня есть многомодульный проект Maven, с которым я работаю с использованием Eclipse 3.7 (Indigo), M2Eclipse (1.0) и EGit (1.0).).

В файловой системе многомодульный проект имеет один родительский каталог.

В Eclipse у меня есть отдельные проекты для каждого модуля.

M2Eclipse осуществляет управление зависимостямиотлично.

На верхнем уровне есть один репозиторий git (каталог .git), и EGit отлично работает.

1 голос
/ 21 октября 2011

Вы можете поместить свои модули в Git с иерархической структурой. И построить эти модули Maven. Если эти модули являются проектами (какими бы ни были проекты java, c ++ или php), распознаваемыми Eclipse, их можно импортировать в рабочую область как плоский макет в рабочей области.

-- the root of Git working directory
  -- moudule1
    -- project1(a java project)
      -- .project(a project file recognized by eclipse JDT)
      -- pom.xml
    -- project2(a java project)
      -- .project
      -- pom.xml
  -- module2
    -- projectA(a java project)
      -- .project(a project file recognized by eclipse JDT)
      -- pom.xml
    -- projectB(a c++ project)
      -- .project(a project file recognized by CDT)
      -- pom.xml 
0 голосов
/ 27 ноября 2014

Для проектов Maven одновременный импорт может быть выполнен с помощью мастера импорта Maven (который доступен из Git). Если вы не знаете, какие проекты вы собираетесь импортировать, вы можете использовать новый Easymport, который будет импортировать проект «как лучший», выводя конфигурации из различных файлов. Смотри https://github.com/jbosstools/jbosstools-playground#easymport-easy-and-smart-openimport-of-a-project

Как только вы получите все эти проекты, вы можете использовать плагин Nestor, который будет отображать проект во вложенном / иерархическом макете, более корректно отображая ваш проект Maven: https://github.com/jbosstools/jbosstools-playground#nestor-view-nested-projects

...