Правильный способ - использовать механизм исключений, однако иногда вы можете предпочесть использовать следующий взлом вместо того, чтобы избежать добавления большого количества исключений, когда множество артефактов имеют такую же транзитивную зависимость, которую вы хотите игнорировать. Вместо того, чтобы указывать исключение, вы определяете дополнительную зависимость с областью «предоставлено». Это говорит Maven, что вы вручную позаботитесь о предоставлении этого артефакта во время выполнения, поэтому он не будет упакован. Например:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
Побочный эффект: вы должны указать версию артефакта, который нужно игнорировать, и его POM будет получен во время сборки; это не случай с регулярными исключениями. Это может быть проблемой для вас, если вы используете свой собственный репозиторий Maven за брандмауэром.