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