防止在Maven子pom中重写依赖项版本
我在家长pom中有一个DependencyManager部分,如防止在Maven子pom中重写依赖项版本,maven,maven-3,Maven,Maven 3,我在家长pom中有一个DependencyManager部分,如 <dependencyManagement> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.2.1</version>
<dependencyManagement>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.1</version>
</dependency>
</dependencyManagement>
org.apache.httpcomponents
,只允许在父级中设置,但无法设置。我希望这能使构建失败。这是可能的,用那个插件还是其他方式
有,这迫使所有版本都是相同的,但这太严格了,因为我不想控制所有可传递的依赖项——只控制显式定义的依赖项
如果我能阻止在子pom中引入任何新的依赖项,我会很高兴。所有定义的内容都应该在父pom中定义,然后在子pom中提及(如果需要)。您可以在父pom中添加执行,并将其配置为在版本不匹配时失败:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>analyze</id>
<phase>package</phase>
<goals>
<goal>analyze-dep-mgt</goal>
</goals>
<configuration>
<failBuild>true</failBuild>
<ignoreDirect>false</ignoreDirect>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven依赖插件
2.6
分析
包裹
分析部门管理
真的
假的
我想知道是否有人知道是否有办法做到这一点。就我个人而言,目前我想不出任何新的执行规则。写一个新的执行规则是可能的。是的。正如我所问的那样,这会阻止覆盖DependencyManager中定义的版本。非常感谢。现在,我只希望能够阻止在子POM中声明任何不在DependencyManager部分中的依赖项。也许这是为自定义规则,那么。虽然它是手动的和繁忙的,但你仍然可以实现没有依赖添加到子pom中,如果已经在父pom中通过bannedDependencies规则的enforcer插件。您需要在这里提及您在父级中定义的所有依赖项。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>analyze</id>
<phase>package</phase>
<goals>
<goal>analyze-dep-mgt</goal>
</goals>
<configuration>
<failBuild>true</failBuild>
<ignoreDirect>false</ignoreDirect>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>