2013-09-20 3 views
0

Первоначально у меня была зависимость maven для asm версии 3.2 в файле pom.xml моего проекта. Я обновляю же к версии 4.1, используя следующую зависимостьMaven сохраняет старую версию asm в репозитории

<dependency> 
     <groupId>org.ow2.asm</groupId> 
     <artifactId>asm</artifactId> 
     <version>4.1</version> 
     <scope>compile</scope> 
    </dependency> 

но теперь мой проект имеет как банку файлы в WEB-INF/Lib - ASM 3.2 и ASM 4.1. Мне нужны некоторые функции asm 4.1, но из-за того, что оба барабана доступны, asm 3.2 используется код, из-за которого я не могу использовать функцию asm 4.1.

Любая помощь в этом вопросе приветствуется.

ответ

4

Зависимость для asm 3.2:

<dependency> 
    <groupId>asm</groupId> 
    <artifactId>asm</artifactId> 
    <version>3.2</version> 
</dependency> 

Примечание групповые идентификаторы не совпадают. Вероятно, происходит то, что другая из ваших зависимостей загружает asm 3.2 как транзитивную зависимость. Процесс разрешения зависимостей Maven не может определить, что версия 4.1 должна переопределять версию 3.2 из-за разницы в идентификаторе группы, и есть проблема.

Что вам нужно сделать, это исключить версию 3.2. Сначала выясните, какая зависимость заставляет Maven вытащить его, запустив mvn dependency:tree или используя вкладку иерархии зависимостей EML-редактора Eclipse. Тогда найти эту зависимость в вашем POM и добавить исключение:

<dependency> 
    <groupId>some.group.id</groupId> 
    <artifactId>dependency-pulling-in-asm</artifactId> 
    <version>1.0</version> 
    <scope>compile</scope> 
    <exclusions> 
    <exclusion> 
     <groupId>asm</groupId> 
     <artifactId>asm</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

Maven documentation объясняет это дальше.

0

Дайте следующую команду после обновления pom.xml

mvn clean 
+0

Здесь существует конфликт группы между двумя версиями asm. mvn clean не будет разбираться. –

Смежные вопросы