Maven - 在模块中运行 JUnit Testsuite
我有 3 个项目:
- ParentProj (A+B 的父级)
- ProjA (是 ParentProj 的模块,包含源代码)
- ProjB (是 ParentProj 的模块,包含源代码和测试)
构建顺序是: 1. ParentProj,2. ProjA,3 .ProjB(无法更改!)
我想告诉 maven 执行位于 ProjB 中的 TestSuite。 如果我使用以下命令运行构建:mvn clean -e test -Dtest=AllServiceTests
,构建将失败,因为 maven 无法在 ProjA 中找到“AllServiceTests”类,而 ProjA 是在 ProjB 之前构建的。
这个问题有什么解决办法吗? (改变构建顺序并不能解决问题)
I have 3 Projects:
- ParentProj (parent of A+B)
- ProjA (is a module of ParentProj, contains sources)
- ProjB (is a module of ParentProj, contains sources and tests)
Build order is: 1. ParentProj, 2. ProjA, 3. ProjB (could not be changed!)
I want to tell maven to execute a TestSuite that is located in ProjB.
If I run the build with this command: mvn clean -e test -Dtest=AllServiceTests
, the build will fail because maven could not find the "AllServiceTests"-class in ProjA, which is build before ProjB.
Is there any solution for this problem? (Changing the build order is no solution)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我刚刚找到了解决方案:
如果 ProjA 不包含测试类,
-DfailIfNoTests=false
将强制 Maven 继续构建。这终于解决了我的问题。
I just found the solution:
-DfailIfNoTests=false
will force maven to continue with the build if ProjA contains no Test classes.That finally fixed my problem.
您是否研究过
--also-make
和--projects
选项?那么我想这可能会起作用:
请回复并让我们知道这是否有效!我真的很好奇。 :)
Have you looked into the
--also-make
and--projects
options?Then I suppose this might work:
Please post back and let us know if that works! I'm really curious. :)
最简单的解决方案是更改到 ProjB 目录并在那里执行命令行。
The simpliest solution is to change to the ProjB directory and execute your command line there.