由于公司的政策,我的项目必须从父pom继承,我不能更改。父pom在 pluginManagement
章节:
<build>
<pluginManagment>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>3.0.0-M4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</dependencyManagement>
</build>
这将强制surefire提供程序使用junit core(4.7+)。但是,我的项目只使用JUnit5.7.0。我可以从ide运行单元测试,没问题。但当我跑的时候 mvn clean test
,未检测到任何单元测试:
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
为了调试,我删除了对父pom的引用,并将父pom的内容复制到项目的pom中,得到了相同的结果。当我从中删除上面的surefire插件定义时 pluginManagement
,一切正常。检测到并运行所有测试。
回到原来的设置与父pom,在我的 pluginManagement
部分,我尝试重写 maven-surefire-plugin
没有 surefire-junit47
附属国。我加了一个 junit-platform-surefire-provider
依赖,但得到一个 ForkedProcessEvent
错误,因为JUnit4和5提供程序都冲突。似乎我的依赖关系只是添加到父pom的依赖关系中。
如何排除或覆盖父pom的 maven-surefire-plugin
来自孩子的依赖?
maven版本:3.6.3
maven编译器版本:3.8.1
暂无答案!
目前还没有任何答案,快来回答吧!