Два отдельных проекта с общим зависимым проектом в Maven - PullRequest
1 голос
/ 21 июля 2010

У меня есть два проекта, "appA" и "appB", каждый из которых зависит от третьего проекта, "common". Я нахожусь в процессе перемещения их от муравья к мавену, но мне трудно найти лучший способ сделать это в мавене. Моя структура папок выглядит так:

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 Ответ

0 голосов
/ 21 июля 2010

(...) но это не то, что я хочу, корневой pom.xml не подходит, так как appA и appB - совершенно не связанные проекты.

Тогда не делайте этого, не используйте агрегацию, если вы не хотите, и просто объявляйте common как зависимость в POM appA и в POM 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 поддерживают этот подход.

...