Два отдельных проекта с общим зависимым проектом в 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 поддерживают этот подход.

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