Я очень новичок в Maven, и я создаю родительский и дочерний проект Maven. Я хочу, чтобы версия дочернего проекта отличалась от версии родительского, но если я изменю версию, то получу ошибку Cannot resolve
для некоторых зависимостей.
Как я могу иметь родительскую версию, отличную от дочерней версии?
Ниже приведены текущие свойства, которые у меня есть, и они работают довольно хорошо:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.parent-test</groupId>
<artifactId>io.parent-test</artifactId>
<version>0.9.1-SNAPSHOT</version>
<relativePath></relativePath>
</parent>
<artifactId>test-project-converter</artifactId>
<name>test-project</name>
<description>Test Project</description>
Если я изменю свойства, чтобы включить другую версию для ребенка, я получаю сообщение об ошибке:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.parent-test</groupId>
<artifactId>io.parent-test</artifactId>
<version>0.9.1-SNAPSHOT</version>
<relativePath></relativePath>
</parent>
<version>0.9.2-SNAPSHOT</version>
<artifactId>test-project-converter</artifactId>
<name>test-project</name>
<description>Test Project</description>
У меня есть следующие зависимости, основанные на версии, которая выдает ошибку:
<dependency>
<groupId>io.parent-dep</groupId>
<artifactId>parent-dev</artifactId>
<version>${project.version}</version>
</dependency>
Я попытался просмотреть некоторые ответы в Интернете и внес изменения в свой родительский проект, чтобы включить свойства:
<properties>
<revision>0.9.2-SNAPSHOT</revision>
</properties>
и, соответственно, измените дочерний проект, чтобы включить версию <version>${revision}</version>
, но она не работает должным образом.
Может кто-нибудь, пожалуйста, дайте мне знать, как я могу создать другую версию моментального снимка для моего дочернего проекта, сохраняя при этом родительский проект?
Если вы хотите использовать <version>${revision}</version>
, вам нужно настроить плагин flatten-maven (подробности в документах: maven.apache.org/maven-ci-friendly.html)
Я думаю, потому что вы строите неправильный порядок дочернего и родительского проекта. Когда вы меняете версию дочернего проекта, вы должны сначала перестроить дочерний проект с новой версией -> новое имя файла jar (со старым родительским файлом jar, если в дочернем проекте есть родительская зависимость), а затем обновить версию дочерней зависимости в pom родительского проекта и перестроить родительский проект, затем снова перестроить дочерний проект с новым родительским файлом jar (та же версия, но с другим дочерним файлом jar).
Я смог исправить это, предоставив родительскую версию ${project.parent.version}
зависимостям, исходящим от родителя.
Я пробовал это, и все работало нормально.
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.parent-test</groupId>
<artifactId>io.parent-test</artifactId>
<version>0.9.1-SNAPSHOT</version>
<relativePath></relativePath>
</parent>
<version>0.9.2-SNAPSHOT</version>
<artifactId>test-project-converter</artifactId>
<name>test-project</name>
<description>Test Project</description>
<dependencies>
<dependency>
<groupId>io.parent-dep</groupId>
<artifactId>parent-dev</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
Должно сработать. Можете ли вы предоставить всего минимального родителя и дочернего элемента, которые воспроизводят вашу ошибку.