3 回答
TA贡献1798条经验 获得超7个赞
对于maven2,没有办法做你所描述的。对于maven 3,有。如果您使用的是maven 3
对于maven 2,我建议为具有<exclusions>的依赖项创建自己的自定义pom。对于需要使用该依赖项的项目,请将依赖项设置为自定义pom而不是典型工件。虽然这不一定允许您使用单个<exclusion>排除所有传递依赖项,但它确实允许您只需编写一次依赖项,并且所有项目都不需要维护不必要的长排除列表。
TA贡献1831条经验 获得超4个赞
对我有用的东西(可能是Maven的新功能)仅仅是在排除元素中做通配符。
我有一个多模块项目,其中包含一个“app”模块,该模块在两个WAR打包的模块中引用。其中一个WAR打包的模块实际上只需要域类(我还没有将它们从app模块中分离出来)。我发现这个工作:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>app</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
groupId和artifactId上的通配符排除了通常使用此依赖关系传播到模块的所有依赖项。
TA贡献1828条经验 获得超3个赞
我觉得有用的一件事:
如果将依赖项与依赖项放在项目的父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中将指定版本和排除项。我几乎在所有项目中使用这种技术,它消除了大量的重复。
添加回答
举报