0

最初,我在项目的 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 功能。

对此问题的任何帮助表示赞赏。

4

2 回答 2

6

asm3.2的依赖项是:

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

请注意,组 ID 不匹配。可能发生的情况是您的另一个依赖项正在加载asm3.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 文档进一步解释了这一点。

于 2013-09-20T15:05:49.047 回答
0

Give the following command after updating pom.xml

mvn clean 
于 2013-09-20T14:58:43.487 回答