2

我想通过 Maven 使用最新版本的 powermock 库(1.6.5)。但是我的包无法编译,因为 Maven 发现依赖收敛错误。您可以在下面看到同一依赖项中有 2 个不同版本的org.objenesis:objenesis库:

Dependency convergence error for org.objenesis:objenesis:2.1 paths to 

dependency are:
+-mypackage:v1-SNAPSHOT
  +-org.powermock:powermock-api-mockito:1.6.5
    +-org.mockito:mockito-core:1.10.19
      +-org.objenesis:objenesis:2.1
and
+-mypackage:v1-SNAPSHOT
  +-org.powermock:powermock-api-mockito:1.6.5
    +-org.powermock:powermock-api-mockito-common:1.6.5
      +-org.powermock:powermock-api-support:1.6.5
        +-org.powermock:powermock-reflect:1.6.5
          +-org.objenesis:objenesis:2.2

我试图排除,但我不能只排除一个版本,我需要排除所有版本,这不会像我想的那样通过我。

你有同样的问题吗?我能做些什么?

4

2 回答 2

4

objenesis有两个不同的版本objenesis, because two different libraries depends on two different version of:PowerMock 和 Mockito。您有两种选择来解决此问题:

  • 从 PowerMock 依赖项中排除org.objenesis:objenesis并将其手动添加到您的 pom.xml 中。
  • 从 PowerMock 依赖项中排除mockito-core,并将其作为单独的体面添加到您的 pom 中,使用 exclude objenesis
于 2016-05-28T08:35:33.223 回答
1

我遵循了 Arthur 的回答,但只排除了对 powermock-module-junit 依赖项的对象。在那之后,执行者插件很高兴。

    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.7.0</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.objenesis</groupId>
                <artifactId>objenesis</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito2</artifactId>
        <version>1.7.0</version>
        <scope>test</scope>
    </dependency>
于 2017-07-25T07:47:43.037 回答