Maven - запустить JUnit Testsuite в модуле - PullRequest
4 голосов
/ 06 апреля 2011

У меня 3 проекта:

  • ParentProj (родитель A + B)
  • ProjA (это модуль ParentProj, содержит источники)
  • ProjB (является модулем ParentProj, содержит источники и тесты)

Порядок сборки: 1. ParentProj, 2. ProjA, 3. ProjB (не может быть изменен!)

Я хочу сказать maven выполнить TestSuite, который находится в ProjB. Если я запускаю сборку с помощью этой команды: mvn clean -e test -Dtest=AllServiceTests, сборка завершится неудачно, поскольку maven не смог найти класс «AllServiceTests» в ProjA, который является сборкой до ProjB.

Есть ли решение для этой проблемы? (Изменение порядка сборки не является решением)

Ответы [ 3 ]

9 голосов
/ 07 апреля 2011

Я только что нашел решение:

clean install test -Dtest=myTestSuite -DfailIfNoTests=false 

-DfailIfNoTests=false заставит maven продолжить сборку, если ProjA не содержит тестовых классов.

Это наконец решило мою проблему.

3 голосов
/ 06 апреля 2011

Рассматривали ли вы варианты --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

Пожалуйста, отправьте ответ и дайте нам знать, еслиэто работает!Мне действительно любопытно.:)

0 голосов
/ 06 апреля 2011

Самое простое решение - перейти в каталог ProjB и выполнить там свою командную строку.

...