В настоящее время у меня есть библиотека тестирования Java, которая построена с Maven и распространяется как банку. Мой проект зависит от очень общей библиотеки (Objectweb ASM), и у меня возникли проблемы, когда более ранняя и несовместимая версия ASM уже находится в пути к классам. Таким образом, я начал использовать jarjar-maven-plugin, чтобы создать jar, переупаковывая ASM внутри, где он не может конфликтовать с другой версией ASM.
Это выполняется отлично, и моя библиотека может быть втянута как зависимость без проблем.
Однако, поскольку у моего проекта есть зависимости от компиляции в ASM, всякий раз, когда клиентский проект добавляет мою библиотеку, все транзитные зависимости также втягиваются. Итак, гипотетически, если они используют определенную версию ASM, и они также добавляют версию, на которую я полагаюсь на путь к классам, они имеют поведение undefined. Я бы хотел избежать этой ситуации и позволить клиентам зависеть от артефакта JarJar'd, не заставляя Maven сбрасывать транзитивные зависимости как неоправданно, так и потенциально опасно.
Как создать артефакт JarJar'd, на который пользователи могут зависеть, не вытягивая транзитивные зависимости?