Глобальное исключение артефактов было бы неплохой возможностью справиться с такой ситуацией - одним и тем же артефактом с разными именами - до тех пор, пока Maven не предоставит лучший способ работы с "Specs JARs" aka Virtual зависимости .
К сожалению, такая функция в настоящее время недоступна (см. MNG-3196 и MNG-1977 ), поэтому вам придется объявить исключения зависимостей для исключения нежелательный артефакт от зависимости, который тянет его транзитивно. В Maven это делается путем добавления тега <exclusions>
в разделе <dependency>
pom.
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
Если Project-A-1.0.jar
используется во всех проектах, одним из возможных решений было бы объявить это в разделе dependencyManagement
корпоративного POM, чтобы не повторяться.