Maven - 在模块中运行 JUnit Testsuite

发布于 2024-10-30 03:25:21 字数 419 浏览 3 评论 0原文

我有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

偷得浮生 2024-11-06 03:25:21

我刚刚找到了解决方案:

clean install test -Dtest=myTestSuite -DfailIfNoTests=false 

如果 ProjA 不包含测试类,-DfailIfNoTests=false 将强制 Maven 继续构建。

这终于解决了我的问题。

I just found the solution:

clean install test -Dtest=myTestSuite -DfailIfNoTests=false 

-DfailIfNoTests=false will force maven to continue with the build if ProjA contains no Test classes.

That finally fixed my problem.

我也只是我 2024-11-06 03:25:21

您是否研究过 --also-make--projects 选项?

$ mvn --help

usage: mvn [options] [<goal(s)>] [<phase(s)>]

Options:
 -am,--also-make                        If project list is specified, also
                                        build projects required by the
                                        list

 -pl,--projects <arg>                   Comma-delimited list of specified
                                        reactor projects to build instead
                                        of all projects. A project can be
                                        specified by [groupId]:artifactId
                                        or by its relative path.

那么我想这可能会起作用:

mvn clean test -pl ProjB -am -Dtest=AllServiceTests

请回复并让我们知道这是否有效!我真的很好奇。 :)

Have you looked into the --also-make and --projects options?

$ mvn --help

usage: mvn [options] [<goal(s)>] [<phase(s)>]

Options:
 -am,--also-make                        If project list is specified, also
                                        build projects required by the
                                        list

 -pl,--projects <arg>                   Comma-delimited list of specified
                                        reactor projects to build instead
                                        of all projects. A project can be
                                        specified by [groupId]:artifactId
                                        or by its relative path.

Then I suppose this might work:

mvn clean test -pl ProjB -am -Dtest=AllServiceTests

Please post back and let us know if that works! I'm really curious. :)

时光暖心i 2024-11-06 03:25:21

最简单的解决方案是更改到 ProjB 目录并在那里执行命令行。

The simpliest solution is to change to the ProjB directory and execute your command line there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文