Я работаю над большим многомодульным проектом, который использует внутреннюю структуру как одну из своих зависимостей.Версия фреймворка устанавливается в pom верхнего уровня в начале проекта и должна оставаться постоянной.Если какой-либо подмодуль использует другую версию, я хочу, чтобы сборка не удалась.
Я попытался объявить зависимость как одну версию:
<dependency>
<groupId>framework_snt</groupId>
<artifactId>SFP</artifactId>
<version>[6.1]</version>
<type>pom</type>
</dependency>
Я попытался использовать плагин принудительного применения с запрещенными зависимостями:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[1.6.0-21]</version>
</requireJavaVersion>
<requireMavenVersion>
<version>[3.0.3]</version>
</requireMavenVersion>
<bannedDependencies>
<excludes>
<exclude>framework_snt:SFP</exclude>
</excludes>
<includes>
<include>framework_snt:SFP:6.1.2</include>
</includes>
</bannedDependencies>
</rules>
</configuration>
</execution>
</executions>
</plugin>
Я также попытался добавить тег <DependencyConvergence/>
, как указано здесь , но ни один из этих подходов не работает.
Итак, учитывая этот фрагмент pom верхнего уровня:
<project>
<groupId>glb</groupId>
<artifactId>GLB</artifactId>
<packaging>pom</packaging>
<name>Global</name>
<version>1.0</version>
........
<dependencies>
<dependency>
<groupId>framework_snt</groupId>
<artifactId>SFP</artifactId>
<version>[6.1.2]</version>
<type>pom</type>
</dependency>
</dependencies>
.....
</project>
И этот (недопустимый) подмодуль:
<project>
<groupId>glb</groupId>
<artifactId>CORE</artifactId>
<packaging>jar</packaging>
<name>Core</name>
<version>1.0</version>
<parent>
<groupId>glb</groupId>
<artifactId>GLB</artifactId>
<version>1.0</version>
</parent>
<dependencies>
<dependency>
<groupId>framework_snt</groupId>
<artifactId>SFP</artifactId>
<version>6.3</version>
<type>pom</type>
</dependency>
</dependencies>
</project>
как настроить maven, чтобы сборка завершилась неудачно при использовании вышеуказанного дочернего модуля,но когда я удаляю тег <version>6.3</version>
, он успешен (или я изменяю версию, чтобы она соответствовала версии из pom верхнего уровня?