Artefak dari dependensi dapat dikecualikan dengan mendeklarasikan sebuah <exclusions>elemen di dalam a. <dependency>Namun dalam hal ini diperlukan untuk mengecualikan artefak yang diwarisi dari project induk. Berikut kutipan dari Badan POM yang sedang dibahas:
<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>
baseartefak, bergantung pada javax.mail:mail-1.4.jar, dan ALL-DEPSbergantung pada versi lain dari pustaka yang sama. Karena fakta bahwa mail.jardari yang ALL-DEPSada di lingkungan eksekusi, meskipun tidak diekspor, bertabrakan dengan mail.jaryang ada di induk, yang dicakup sebagai compile.
Solusinya mungkin dengan menyingkirkan mail.jar dari POM induk, tetapi sebagian besar proyek yang mewarisi basis, membutuhkannya (seperti ketergantungan transtif untuk log4j). Jadi Yang ingin saya lakukan adalah mengecualikan pustaka induk dari proyek anak , karena ini bisa dilakukan jika basemerupakan ketergantungan dan bukan pom induk:
...
<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>
...