Java 使用不同的依赖项和模块运行Maven构建/测试
在编写当前版本的PowerMock时,我们面临一个问题。我们准备发布对Mockito 2的支持,它与Mockito 1完全不同。因此,我们向PowerMock添加了一个新模块:“PowerMock-api-mockito2” 第一个问题是,powermock api模块包含两个子模块:Java 使用不同的依赖项和模块运行Maven构建/测试,java,maven,junit,Java,Maven,Junit,在编写当前版本的PowerMock时,我们面临一个问题。我们准备发布对Mockito 2的支持,它与Mockito 1完全不同。因此,我们向PowerMock添加了一个新模块:“PowerMock-api-mockito2” 第一个问题是,powermock api模块包含两个子模块: powermock api mockito powermock-api-mockito2 并且一次只能编译一个模块,因为每个模块都依赖于mockito的特定版本,并且如果将mockito的两个版本都添加到类路
- powermock api mockito
- powermock-api-mockito2
<profiles>
<profile>
<id>mockito</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>mockito</module>
</modules>
</profile>
<profile>
<id>mockito2</id>
<modules>
<module>mockito2</module>
</modules>
</profile>
</profiles>
<profiles>
<profile>
<id>mockito</id>
<properties>
<mockito.version>1.10.19</mockito.version>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>mockito2</id>
<properties>
<mockito.version>2.0.42-beta</mockito.version>
</properties>
</profile>
</profiles>
配置文件“mockito”和验收测试的依赖关系树
[INFO] org.powermock:powermock-modules-test-mockito:pom:1.6.5-SNAPSHOT
[INFO] +- org.powermock.tests:powermock-tests-utils:jar:1.6.5-SNAPSHOT:test
[INFO] | +- org.powermock:powermock-core:jar:1.6.5-SNAPSHOT:compile
[INFO] | | +- org.powermock:powermock-reflect:jar:1.6.5-SNAPSHOT:compile
[INFO] | | \- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] | \- javax.servlet:servlet-api:jar:2.5:test
[INFO] +- org.assertj:assertj-core:jar:3.4.1:test
[INFO] +- org.powermock:powermock-api-mockito-common:jar:1.6.5-SNAPSHOT:compile
[INFO] | +- org.mockito:mockito-core:jar:1.10.19:compile
[INFO] | | \- org.objenesis:objenesis:jar:2.2:compile
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] | \- org.powermock:powermock-api-support:jar:1.6.5-SNAPSHOT:compile
[INFO] \- org.powermock:powermock-api-mockito:jar:1.6.5-SNAPSHOT:compile
[INFO] org.powermock:powermock-modules-test-mockito:pom:1.6.5-SNAPSHOT
[INFO] +- org.powermock.tests:powermock-tests-utils:jar:1.6.5-SNAPSHOT:test
[INFO] | +- org.powermock:powermock-core:jar:1.6.5-SNAPSHOT:compile
[INFO] | | +- org.powermock:powermock-reflect:jar:1.6.5-SNAPSHOT:compile
[INFO] | | \- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] | \- javax.servlet:servlet-api:jar:2.5:test
[INFO] +- org.assertj:assertj-core:jar:3.4.1:test
[INFO] +- org.powermock:powermock-api-mockito-common:jar:1.6.5-SNAPSHOT:compile
[INFO] | +- org.mockito:mockito-core:jar:2.0.42-beta:compile
[INFO] | | +- net.bytebuddy:byte-buddy:jar:1.2.1:runtime
[INFO] | | \- org.objenesis:objenesis:jar:2.2:compile
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] | \- org.powermock:powermock-api-support:jar:1.6.5-SNAPSHOT:compile
[INFO] \- org.powermock:powermock-api-mockito2:jar:1.6.5-SNAPSHOT:compile
在发布powermock之前,这一切都很好。maven release插件与名为release的概要文件一起使用,但问题是我们希望同时发布对“mockito”和“mockito2”的支持。但是由于配置文件冲突,我们不能同时应用两个配置文件。发布过程应该只执行一次,所以我不能为“mockito”运行release
,然后为“mockito2”运行另一个
我有这样一个解决方案的想法:
如何解决这些问题?是否可以使用不同的依赖项运行相同的测试?步骤6可行吗?在不同的模块中使用不同的依赖项。所以一个模块包含mockito和另一个mockito2。@khmarbaise这是不可能的。一个模块可能依赖于Mockito的两个版本之一,因为例如,用户可以将jUnit与Mockito 1或Mockito 2一起使用。在运行时,jUnit模块依赖于用户放在类路径中的模块。所以测试应该和这两个模块一起运行。在不同的模块中使用不同的依赖项。所以一个模块包含mockito和另一个mockito2。@khmarbaise这是不可能的。一个模块可能依赖于Mockito的两个版本之一,因为例如,用户可以将jUnit与Mockito 1或Mockito 2一起使用。在运行时,jUnit模块依赖于用户放在类路径中的模块。所以测试应该和这两个模块一起运行。
[INFO] org.powermock:powermock-modules-test-mockito:pom:1.6.5-SNAPSHOT
[INFO] +- org.powermock.tests:powermock-tests-utils:jar:1.6.5-SNAPSHOT:test
[INFO] | +- org.powermock:powermock-core:jar:1.6.5-SNAPSHOT:compile
[INFO] | | +- org.powermock:powermock-reflect:jar:1.6.5-SNAPSHOT:compile
[INFO] | | \- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] | \- javax.servlet:servlet-api:jar:2.5:test
[INFO] +- org.assertj:assertj-core:jar:3.4.1:test
[INFO] +- org.powermock:powermock-api-mockito-common:jar:1.6.5-SNAPSHOT:compile
[INFO] | +- org.mockito:mockito-core:jar:2.0.42-beta:compile
[INFO] | | +- net.bytebuddy:byte-buddy:jar:1.2.1:runtime
[INFO] | | \- org.objenesis:objenesis:jar:2.2:compile
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] | \- org.powermock:powermock-api-support:jar:1.6.5-SNAPSHOT:compile
[INFO] \- org.powermock:powermock-api-mockito2:jar:1.6.5-SNAPSHOT:compile