Зависимость проекта Maven - PullRequest
0 голосов
/ 10 мая 2018

В настоящее время у меня есть 3 проекта Maven:

     ProjectCommon
    _______|________ 
    |              | 
ProjectA        ProjectB

В результате этого 3 pom.xml:

#ProjectCommon/pom.xml

<groupId>my.package</groupId>
<version>1.0</version>

#ProjectB/pom.xml

<dependency>
   <groupId>my.package</groupId>
   <artifactId>ProjectCommon</artifactId>
   <version>1.0</version>
</dependency>

#ProjectB/pom.xml

<dependency>
   <groupId>my.package</groupId>
   <artifactId>ProjectCommon</artifactId>
   <version>1.0</version>
</dependency>

Когда мне нужно упаковать 2 приложения (ProjectA и ProjectB) и всегда нужно запускать следующие команды:

cd ProjectCommon && mvn install
cd ProjectA && mvn package
cd ProjectB && mvn package

Есть ли другой способ настроить мои проекты (например, использовать Maven Modules), чтобы делать то, что у меня сейчас, вместо того, чтобы всегда нуждаться в install my ProjectCommon в моем локальном хранилище?

1 Ответ

0 голосов
/ 10 мая 2018

Я рекомендую создать такую ​​структуру:

+- root (pom.xml)
    +--- common (pom.xml)
    +--- projectA (pom.xml)
    +--- projectB (pom.xml)

Корень содержит две записи модулей, например:

<modules>
  <module>projectA</module>
  <module>projectB</module>
  <module>common</module>
</modules>

Каждый дочерний модуль должен содержать следующую родительскую запись (пример для общего модуля):

<parent>
  <groupId>my.package</groupId>
  <artifactId>parent</artifactId>
  <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>common</artifactId>

Кроме того, в projectA / projectB вы можете просто определить зависимость от common, и теперь вы можете собрать все модули, включая ваши проекты, с помощью одной команды из корневого каталога:

mvn clean package

или если вы хотите запускать интеграционные тесты:

mvn clean verify

Нет необходимости делать install ...

Одна вещь стоит того, чтобыупомяните, что с этой настройкой вы должны использовать одну версию для всех общих, projectA, projectB и для root

...