当我使用Maven构建项目时,范围test
的依赖关系在integration-test
阶段似乎超出了范围。这是否是有意设计的,或者是否有什么我可以做的,以便在integration-test
阶段包含范围为test
的依赖关系?依赖性“测试”范围是否适用于Maven中的“集成测试”阶段?
One answer here on SO表明测试依赖性在集成测试阶段的范围内,但答案只是一个没有引用的语句。但是,这似乎并不是Maven如何为我工作的。
当我将给定的依赖关系的范围从test
更改为compile
时,在integration-tes
t阶段期间给定的依赖关系(如预期)可用。
如若test
范围适用于integration-test
阶段,否则我将不得不依赖范围,以设置为compile
为他们在integration-test
阶段可用?
这是POM
文件的相关部分。我在做的是我试图在集成测试阶段启动一个MockServer的实例。但是,由于未包含com.company.msd
依赖项,因此它失败。
<dependencies>
<dependency>
<groupId>com.company.msd</groupId>
<artifactId>MockServerDemo</artifactId>
<version>0.0.4</version>
<scope>test</scope>
</dependency>
</dependencies>
[...]
<plugin>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-maven-plugin</artifactId>
<version>3.9.17</version>
<configuration>
<serverPort>1080</serverPort>
<proxyPort>1081</proxyPort>
<logLevel>DEBUG</logLevel
<initializationClass>com.company.msd.server.DefaultExpectationInitializer</initializationClass>
</configuration>
<executions>
<execution>
<id>pre-integration-test</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>post-integration-test</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
注意!如果我将依赖项作为插件依赖项添加,它就可以工作。不过,我仍然很好奇,如果Maven设计不包含integration-test
阶段的测试范围依赖关系。
请发布一个可重现问题的POM。 – Tunaki
@Tunaki问题更新了POM的相关部分 – sbrattla
在您的POM中,有2个绑定阶段 - “预集成测试”和“后整合测试”。这两个显然不是'集成测试',所以显然maven并没有对它们使用'test'范围。尽管如此,我从来没有在maven文档中看到阶段范围映射。我做了一些测试,并得出了结论 - maven仅使用'compile-scope'进行'pre-integration-test'阶段 – Eugene