Как создать артефакт JarJar'd с помощью Maven, где использование артефакта не вызывает транзитивных зависимостей?

В настоящее время у меня есть библиотека тестирования Java, созданная с помощью Maven и распространяемая как jar. Мой проект зависит от очень распространенной библиотеки (Objectweb ASM), и я столкнулся с проблемами, когда более ранняя и несовместимая версия ASM уже находится в пути к классам. Таким образом, я начал использовать jarjar-maven-plugin для создания jar-файла, внутренне переупаковывая ASM, где он не может конфликтовать с другой версией ASM.

Это выполняется нормально, и моя библиотека может быть загружена. как зависимость без проблем.

Однако, поскольку мой проект имеет зависимости области компиляции от ASM, всякий раз, когда клиентский проект добавляет мою библиотеку, все транзитивные зависимости также втягиваются. Так, гипотетически, если они используют определенную версию ASM, а также добавляют версию, от которой я зависим, в путь к классам, у них будет неопределенное поведение. Я бы хотел избежать этой ситуации и позволить клиентам зависеть от артефакта JarJar'd без того, чтобы Maven извлекал излишние и потенциально опасные транзитивные зависимости.

Как мне создать артефакт JarJar'd, от которого могут зависеть пользователи без извлечения транзитивных зависимостей?

11
задан Grundlefleck 19 April 2011 в 19:34
поделиться