无论如何,是否要排除从父POM继承的工件?
可以通过<exclusions>在内部声明一个元素来排除依赖项中的工件,<dependency>但是在这种情况下,需要排除从父项目继承的工件。讨论中的POM的摘录如下: <project> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>jruby</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <artifactId>base</artifactId> <groupId>es.uniovi.innova</groupId> <version>1.0.0</version> </parent> <dependencies> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>ALL-DEPS</artifactId> <version>1.0</version> <scope>provided</scope> <type>pom</type> </dependency> </dependencies> </project> base工件,取决于 javax.mail:mail-1.4.jar,并且ALL-DEPS取决于同一库的另一个版本。由于执行环境上存在mail.jarfrom 的事实ALL-DEPS,尽管未导出,但与mail.jar父级上存在的from发生冲突,范围为compile。 一种解决方案是从父POM摆脱mail.jar,但是大多数继承base的项目都需要它(log4j的传递依赖项)。因此,我想做的就是从子项目中简单地排除父级库,因为如果base是依赖项而不是父级pom ,可以这样做: ... <dependency> <artifactId>base</artifactId> <groupId>es.uniovi.innova</groupId> <version>1.0.0</version> <type>pom<type> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> </exclusions> </dependency> ...