最初,我在项目的pom.xml文件中有asm版本3.2的maven依赖项。我使用以下依赖项
将其更新到版本4.1 <dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>4.1</version>
<scope>compile</scope>
</dependency>
但现在我的项目在WEB-INF / lib中都有jar文件 - asm 3.2和asm 4.1。我需要asm 4.1的一些功能,但由于两个jar都可用asm 3.2代码被使用,因为我不能使用asm 4.1功能。
对此事的任何帮助表示赞赏。
答案 0 :(得分:5)
asm
3.2的依赖关系是:
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.2</version>
</dependency>
请注意,组ID不匹配。可能发生的情况是,您的另一个依赖项正在加载asm
3.2作为传递依赖项。由于组ID差异,Maven的依赖解析过程无法确定4.1版本是否应该覆盖3.2版本,并且存在问题。
您需要做的是取消3.2版本。首先通过运行mvn dependency:tree
或使用Eclipse POM编辑器的依赖关系层次选项卡来确定哪个依赖关系导致Maven将其拉入。然后在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进一步解释了这一点。
答案 1 :(得分:0)
更新pom.xml后提供以下命令
mvn clean