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