是否无论如何都可以排除从父 POM 继承的工件?
可以通过在 a 中声明元素来排除依赖项中的项目,但在这种情况下,需要排除从父项目继承的项目。正在讨论的POM摘录如下:<exclusions>
<dependency>
<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
工件依赖于 ,并且依赖于同一库的另一个版本。由于 from 存在于执行环境中,尽管未导出,但与父级上存在的 冲突,其作用域为 。javax.mail:mail-1.4.jar
ALL-DEPS
mail.jar
ALL-DEPS
mail.jar
compile
一个解决方案可能是从父POM中清除邮件.jar,但大多数继承base的项目都需要它(就像log4j的transtive依赖项一样)。因此,我想做的是简单地从子项目中排除父库,因为如果它是依赖项而不是父 pom,则可以这样做:base
...
<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>
...