Могу ли я сделать мои корневые (pom-packaged) проекты в Eclipse с многомодульными проектами Maven? - PullRequest
4 голосов
/ 17 декабря 2008

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

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

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

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

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

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

Ответы [ 6 ]

2 голосов
/ 06 июля 2009

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

1 голос
/ 17 декабря 2008

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

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

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

0 голосов
/ 17 ноября 2009

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

0 голосов
/ 17 ноября 2009

Как правило, мне нужен только родитель, доступный в 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 и собрать его самостоятельно, так как он, кажется, еще не разрешен из центрального.

svn co http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-eclipse-plugin/
cd maven-eclipse-plugin
mvn clean install
0 голосов
/ 17 декабря 2008

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

0 голосов
/ 17 декабря 2008

Вы можете попробовать написать задачу, чтобы вручную создать файл .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 не позволит вам создать проект внутри другого, поэтому, если он распознает что-либо из более высокого уровня в иерархии проектов, вы столкнетесь с препятствиями в прошлом.

...