Могут ли мои многомодульные проекты Maven сделать мой корневой (pom-packaged) проект доступным в Eclipse?

У нас довольно большая группа проектов Maven2 с корневым POM-файлом, содержащим более 10 модулей, и множество свойств, используемых модулями (номера версий зависимостей, конфигурация плагинов, общие зависимости и т. Д.). Некоторые модули, как и корневой проект, являются родителями для других наборов модулей.

Для пояснения, корневой проект и упомянутые родительские проекты настроены на pom-упаковку (в отличие, например, от jar).

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

Однако при таком подходе само корневое POM и все другие упакованные в pom проекты недоступны в Eclipse. Поэтому, если я хочу их отредактировать, я должен открыть их другим способом. Это становится немного хлопотно.

Итак, мой вопрос: возможно ли каким-то образом сделать упакованные pom-проекты доступными в Eclipse? Если нет, есть ли у вас какие-либо советы, которые могли бы облегчить мою работу с этими проектами?

Для записи, я сейчас использую MyEclipse 7.0.

6 ответов

Решение

Я попробовал это снова, с Galileo и последней версией m2eclipse. Теперь можно импортировать проекты Maven напрямую (без mvn eclipse:eclipse), и получается, что корневое POM также импортируется как проект, что является именно тем, что я хотел.

Что ж. Многие люди делают это, делая родительский POM родственным проектом и имея простой POM реактора в корне. Однако это может вызвать проблемы с генерацией сайта и плагином релиза, поскольку ни один из них не поддерживает этот режим так полно, как хотелось бы.

Большая проблема, с которой мы часто сталкиваемся, заключается в том, что люди пытаются проверить транк с помощью Subclipse, который добавляет в корневой каталог файл.project, который затем предотвращает импорт проектов ниже этого уровня. Вместо этого мы должны выйти на улицу, чтобы проверить, а затем импортировать проекты.

До меня дошел слух, что Subversive может лучше обрабатывать вложенные проекты, и это действительно проблема. Кроме этого, у меня нет абсолютного решения здесь.

Вы можете попробовать написать задачу, чтобы вручную создать файл.project для каждого проекта POM в его каталоге. Не уверен в деталях, но вы можете сгенерировать что-то вроде:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>${project.name}</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
        </buildSpec>
        <natures>
        </natures>
</projectDescription>

в корневом каталоге проекта, и все должно быть в порядке.

Я не уверен, что если вы сделаете это, тогда вы не сможете импортировать дочерние проекты в Eclipse (как вы, вероятно, знаете, - вам нужно сначала импортировать все не-pom проекты, а затем создавать "общие" проекты для остальных, с путь, соответствующий физическому пути в структуре mvn). Eclipse не позволит вам создать проект внутри другого, поэтому, если он распознает что-либо из более высокого уровня в иерархии проектов, вы столкнетесь с препятствиями в прошлом.

На самом деле, если вы не хотите зависеть от m2eclipse, "правильный" способ сделать это - использовать плоский макет проекта (поскольку проблема в том, что Eclipse не поддерживает вложенные проекты).

Как правило, мне нужен только родитель, доступный в eclipse, чтобы добавить зависимости и использовать форматирование XML. Дешевый и веселый способ - создать ресурсный проект и связать с ним родительский пом. Файл -> Новый -> Другое -> Общие -> Файл -> Дополнительно

если вы используете плагин eclipse версии 2.8+, вы можете сгенерировать для вас ссылку в каждом из ваших подпроектов, например

<plugin>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.8-SNAPSHOT</version>
    <configuration>
        <linkedResources> 
            <linkedResource>
                <name>parent.xml</name> 
                <type>1</type>
                <location>${basedir}/${parent.relativePath}</location> 
            </linkedResource>
        </linkedResources> 
    </configuration>
  </plugin>

Хотя в настоящее время вам нужно будет проверить его в Subversion и собрать его самостоятельно, так как он, кажется, еще не разрешен из Central.

svn co http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-eclipse-plugin/
cd maven-eclipse-plugin
mvn clean install

Мне удалось поработать с плагином Codehaus Eclipse с Maven проектами, имеющими родителей. Плагин имеет некоторые недостатки, но в целом он поддерживается, и вы должны быть в состоянии ладить с ним.

Другие вопросы по тегам