2015-10-24 6 views
1

У меня есть родительский проект с около 20 дочерних модулей:Maven - импорт/группа все модули проекта

<project> 
    <modules> 
     <module>module-1</module> 
     <module>...</module> 
     <module>module-20</module> 
    </modules> 
</project> 

Я хотел бы использовать этот проект как единое целое, со всеми 20 модулей, включенных в другие проекты. Каков удобный способ сделать это в Maven?

Должен ли я создать новый дочерний модуль, который импортирует остальные 20 модулей и относится к этому проекту? Должен ли это быть JAR или POM-проект?

<project> 
    <packaging>jar</packaging> 

    <dependencies> 
     <dependency>... module-1 ...</dependency> 
     <dependency>...</dependency> 
     <dependency>... module-20 ...</dependency> 
    </dependencies> 
</project> 
+0

Что вы подразумеваете под «как единое целое»? – Tunaki

+0

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

ответ

2

Я думаю, что способ, которым вы упоминали в своем вопросе, является хорошей идеей. Это на самом деле упоминается в качестве лучшей практики в Maven book, цитирую:

Если у вас есть набор зависимостей, которые логически сгруппированы вместе. Вы можете создать проект с упаковкой pom, которая объединяет группы.

Вы можете создать новый модуль под названием module-all, который был бы из pom упаковки, которая просто имеет зависимость от каждого из модулей. Упаковка должна быть pom, потому что основным артефактом этого модуля будет только pom.xml (источников для компиляции не будет, нет JAR ...). Затем в ваших внешних проектах вы можете просто добавить зависимость к этому новому модулю (как <type>pom</type>), и все зависимости module-i будут включены транзитивно.

Было бы возможно, если бы все ваши модули не использовали одну и ту же версию: там должна быть ссылка на конкретную версию определенного модуля, и вам придется обновлять версию module-all каждый раз, когда модуль version изменений. Однако, если все они имеют одну и ту же версию, цикл выпуска module-all будет соответствовать module-i.

+0

Спасибо! Я читал книгу Мейвена, но, должно быть, не обратил на это внимания. Все дочерние модули действительно имеют одну и ту же версию в моем случае, так что это не вызовет проблем. –

Смежные вопросы