Два отдельных проекта с общим зависимым проектом в Maven
У меня есть два проекта, "appA" и "appB", каждый из которых зависит от третьего, "общего" проекта. Я нахожусь в процессе перемещения их от муравья к мавену, но мне трудно найти лучший способ сделать это в мавене. Моя структура папок выглядит так:
root
+ common
+ appA
+ appB
Я смог добавить родительский pom.xml в корневой каталог и иметь общие, appA и appB в качестве модулей этого родительского проекта, чтобы получить appA и appB для сборки, но это не то, что я хочу, корневой pom.xml не подходит, так как appA и appB - совершенно не связанные проекты.
Я бы хотел, чтобы appA и appB были отдельными проектами maven, которые зависят от третьего общего проекта и будут создавать его при необходимости, чтобы я мог зайти в папку appA или appB и набрать "mvn package", чтобы создать appA + common. или appB + common соответственно. Вот как я настроил его в Ant, но в maven не может быть соответствующей параллели. Любая помощь или подталкивание в правильном направлении очень ценится:)
1 ответ
(...) но это не то, что я хочу, корневой pom.xml не подходит, так как appA и appB - совершенно не связанные проекты.
Тогда не делайте этого, не используйте агрегацию, если не хотите, и просто объявляйте common
как зависимость в ПОМ appA
и в ПОМ appB
, Что-то вроде этого:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>appA</artifactId>
<packaging>jar</packaging>
<version>X-SNAPSHOT</version>
...
<dependencies>
<dependency>
<groupId>bar</groupId><!-- at your discretion -->
<artifactId>common</artifactId>
<version>Y.Z-SNAPSHOT</version>
</dependency>
...
</dependencies>
...
</project>
Зависимости разрешаются через локальный репозиторий, поэтому вам придется mvn install
common
сначала проект (и после любого изменения, чтобы сделать их "видимыми").
Во время разработки распространенной практикой является импорт зависимых проектов в IDE и их настройка в зависимости от проекта внутри рабочей области (против бинарных зависимостей). Это сохраняет install
шаг, чтобы сделать изменения видимыми. Большинство IDE поддерживают этот подход.