在Maven2中,为了排除单个传递依赖,我必须这样做:
<dependency>
<groupId>sample.group</groupId>
<artifactId>sample-artifactB</artifactId>
<version>1</version>
<exclusions>
<exclusion>
<groupId>sample.group</groupId>
<artifactId>sample-artifactAB</artifactId>
</exclusion>
</exclusions>
</dependency>
这种方法的问题在于,我必须对sample-artifactB提供的每个传递依赖项都这样做。
是否有一种方法可以使用某种通配符一次性排除所有传递依赖项,而不是逐个排除?
我发现有一件事很有用:
如果您将带有排除项的依赖项放在项目的父POM的dependencyManagement部分中,或者放在可导入的依赖项管理POM中,那么您就不需要重复排除项(或版本)。
例如,如果你的父POM有:
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
....
</dependencies>
</dependencyManagement>
然后,项目中的模块可以简单地将依赖声明为:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
父POM中的将指定版本和排除项。我几乎在我们所有的项目中都使用了这个技巧,它消除了很多重复。