У меня есть проблема, когда у меня есть главный проект pom.Это определяет два основных модуля приложения.Эта основная часть содержит некоторые общие определения зависимостей:
Родитель:
<groupId>com.maven.showcase</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<modules>
<module>main.module.1</module>
<module>main.module.2</module>
</modules>
<properties>
<main.module.1.version>1.1.1-SNAPSHOT</main.module.1.version>
<main.module.2.version>2.2.2-SNAPSHOT</main.module.2.version>
</properties>
Здесь определены версии двух основных модулей.Версия каждого основного модуля и всех подмодулей в этом модуле одинакова.Для этого у меня есть свойство $ {revision}.
Основная помпа 1:
<parent>
<artifactId>parent</artifactId>
<groupId>com.maven.showcase</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>main.module.1</artifactId>
<version>${revision}</version>
<packaging>pom</packaging>
<properties>
<revision>${main.module.1.version}</revision>
</properties>
<modules>
<module>sub.module.1</module>
</modules>
Основная помпа 2:
<parent>
<artifactId>parent</artifactId>
<groupId>com.maven.showcase</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>main.module.2</artifactId>
<version>${revision}</version>
<packaging>pom</packaging>
<properties>
<revision>${main.module.2.version}</revision>
</properties>
<modules>
<module>sub.module.2</module>
</modules>
Каждый модуль содержит один подмодуль.
Подмодуль 1:
<parent>
<artifactId>main.module.1</artifactId>
<groupId>com.maven.showcase</groupId>
<version>${revision}</version>
</parent>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<artifactId>sub.module.1</artifactId>
Подмодуль 2:
<parent>
<artifactId>main.module.2</artifactId>
<groupId>com.maven.showcase</groupId>
<version>${revision}</version>
</parent>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<artifactId>sub.module.2</artifactId>
<dependencies>
<dependency>
<artifactId>sub.module.1</artifactId>
<groupId>com.maven.showcase</groupId>
<version>${main.module.1.version}</version>
</dependency>
</dependencies>
Как видите, подмодуль 2 ссылается на подмодуль 1 как на зависимость.Это тот, который определен в главной помпе.Это хорошо работает, когда я строю весь проект.Однако при попытке построить подмодуль 2 возникает проблема:
[ОШИБКА] Не удалось выполнить цель для проекта sub.module.2: Не удалось разрешить зависимости для проекта com.maven.showcase:sub.module.2: jar: 2.2.2-SNAPSHOT: не удалось собрать зависимости в com.maven.showcase: sub.module.1: jar: 1.1.1-SNAPSHOT: не удалось прочитать дескриптор артефакта для com.maven.showcase: sub.module.1: jar: 1.1.1-SNAPSHOT: Не удалось найти артефакт com.maven.showcase: main.module.1: pom: $ {revision} в центре (https://repo.maven.apache.org/maven2) -> [Помощь1]
Я могу полностью понять, почему это происходит, поскольку, когда я собираю только субмодуль 2, pom основного модуля фактически никогда не анализируется, поэтому maven не будет знать, что поместить вместо "revision".
Вопрос: есть ли лучший способ решения этой проблемы? Я не могу заставить работать глобальные свойства, поскольку я постоянно получаю «Свойства запрещены в определении родительского pom», если я пытаюсь использовать свойстваЯ определил в родительском пом. (Maven 3.5.3)
Мне нужно иметь возможность создавать отдельные подмодули по разным причинам, например, чтобы получить дерево зависимостей maven.
Спасибо, PeTer