依存関係からのアーティファクトは、<exclusions>要素をa内で宣言することによって除外できますが<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.jarからALL-DEPSエクスポートされていないが、と衝突実行環境上に存在する、mail.jarとしてスコープされた親、上に存在すること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>
...